Samba遠(yuǎn)程代碼執(zhí)行漏洞(CVE-2017-7494)-SambaCry區(qū)分報(bào)告
發(fā)表時(shí)間:2023-04-04 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]傳送門【國(guó)際資訊】CVE-2017-7494:linux版“永恒之藍(lán)”遠(yuǎn)程代碼執(zhí)行漏洞預(yù)警【高危預(yù)警】Samba遠(yuǎn)程代碼執(zhí)行漏洞(CVE-2017-7494)...
傳送門
【國(guó)際資訊】CVE-2017-7494:linux版“永恒之藍(lán)”遠(yuǎn)程代碼執(zhí)行漏洞預(yù)警
【高危預(yù)警】Samba遠(yuǎn)程代碼執(zhí)行漏洞(CVE-2017-7494)分析
0x01 引子
2017年5月24日Samba官方發(fā)布了安全公告, 新發(fā)布的Samba 4.6.4修復(fù)了一個(gè)嚴(yán)重的代碼執(zhí)行漏洞(CVE-2017-7494), 該漏洞影響了Samba 3.5.0 之后到4.6.4/4.5.10/4.4.14中間的所有版本。 在rpc_server/srv_pipe.c中的存在一個(gè)驗(yàn)證BUG, 攻擊者可以利用客戶端上傳惡意動(dòng)態(tài)庫文件到具有可寫權(quán)限的共享目錄中, 之后發(fā)出請(qǐng)求, 使服務(wù)器加載Samba運(yùn)行目錄以外的非法模塊, 導(dǎo)致惡意代碼執(zhí)行。
Samba, 是種用來讓UNIX系列的操作系統(tǒng)與微軟windows操作系統(tǒng)的SMB/CIFS網(wǎng)絡(luò)協(xié)議做鏈接的自由軟件。 很多企業(yè)或個(gè)人的 NAS(Network Attached Storage), 路由器和其他IOT設(shè)備存儲(chǔ)解決方案會(huì)選擇開源軟件Samba提供數(shù)據(jù)訪問服務(wù)。 IPC$(Internet Process Connection) 是共享 “命名管道” 的資源, 能使用戶匿名訪問Samba服務(wù)器的共享資源。
0x02 漏洞影響分析
基于360天眼實(shí)驗(yàn)室全網(wǎng)掃描的數(shù)據(jù)顯示, 目前中國(guó)大陸及港澳臺(tái)開放445端口的IP數(shù)為18883個(gè), 其中Samba服務(wù)共4433個(gè), 而Samba版本落在漏洞版本區(qū)間的IP數(shù)為3765個(gè), 占到了Samba服務(wù)的85%!臺(tái)灣、香港分別為1767、1853個(gè), 其余各省分布如下圖所示。
0x03 漏洞驗(yàn)證及分析
環(huán)境準(zhǔn)備:
使用Metasploit公開的exploits模塊(is_known_pipename)進(jìn)行測(cè)試。 下載地址:https://github.com/rapid7/metasploit-framework/blob/master/modules/exploits/linux/samba/is_known_pipename.rb
攻擊過程:
1. 向具有寫權(quán)限的Samba服務(wù)器共享目錄中上傳惡意動(dòng)態(tài)庫, 這里命名為evil.so;
2. 攻擊者暴力猜解共享目錄的絕對(duì)路徑, 同時(shí)以IPC$(命名管道)資源的方式請(qǐng)求步驟1上傳的惡意動(dòng)態(tài)庫, 使文件名變?yōu)榉⻊?wù)器上的絕對(duì)路徑” /path/to/evil.so”;
3. 服務(wù)器端誤將文件資源 ” /path/to/evil.so” 當(dāng)作IPC$(命名管道)資源加載運(yùn)行, 漏洞觸發(fā)。
1)上傳惡意動(dòng)態(tài)庫文件到服務(wù)器共享目錄public
第51個(gè)包Write AndX Request寫操作請(qǐng)求數(shù)據(jù), 如下所示:
SMB(ServerMessageBlockProtocol) SMBHeader ServerComponent:SMB [Responsein:52] SMBCommand:WriteAndX(0x2f) ErrorClass:Success(0x00) … TreeID:51295(\\192.168.119.155\public)#訪問靶機(jī)共享文件路徑TreeID ProcessID:51988 UserID:62509 MultiplexID:27235 WriteAndXRequest(0x2f) WordCount(WCT):14 AndXCommand:Nofurthercommands(0xff) Reserved:00 AndXOffset:0 FID:0xef37(\rDfDKbgV.so)#惡意動(dòng)態(tài)庫文件FID … [FileRWLength:476]#寫入文件大小 ByteCount(BCC):476 Data(476bytes)#上傳二進(jìn)制數(shù)據(jù) Data:7f454c4602010100000000000000000003003e0001000000... [Length:476]
2)以命名管道方式請(qǐng)求惡意動(dòng)態(tài)庫
第59個(gè)包NT Create AndX Request 請(qǐng)求命名管道資源數(shù)據(jù), 如下所示:
SMB(ServerMessageBlockProtocol) SMBHeader ServerComponent:SMB SMBCommand:NTCreateAndX(0xa2) … TreeID:19967(\\192.168.119.155\IPC$)#這里使用命名管道方式很重要 ProcessID:51988 UserID:62509 MultiplexID:27235 NTCreateAndXRequest(0xa2) WordCount(WCT):24 AndXCommand:Nofurthercommands(0xff) Reserved:00 AndXOffset:0 Reserved:00 FileNameLen:23 CreateFlags:0x00000016 RootFID:0x00000000 … ByteCount(BCC):24 FileName:/home/samba/rDfDKbgV.so#管道名稱即為前面上傳文件的絕對(duì)路徑
3)服務(wù)器加載惡意動(dòng)態(tài)庫
Smbd服務(wù)進(jìn)程詳細(xì)調(diào)用鏈, 如下如所示:
Samba漏洞關(guān)鍵源代碼位置, 如下如所示:
由于沒有對(duì)pipename的值做判斷, smb_probe_module函數(shù)調(diào)用執(zhí)行在共享目錄下上傳so的文件, 進(jìn)而導(dǎo)致惡意代碼執(zhí)行漏洞。
Metaspoit中提供在SMB_SHARE_BASE的列表用于猜解, 共享目錄的絕對(duì)路徑。 筆者直接設(shè)置可正確的Samba共享目錄絕對(duì)路徑, 可以確保一次通過。
0x04 檢測(cè)漏洞是否存在
1) 本地檢測(cè):本地檢查Samba版本是否屬于 4.4.14、 4.5.10、4.6.4 及以后的版本。
2) 遠(yuǎn)程檢測(cè):使用nmap --script=smb-os-discovery -p 445 192.168.1.122/24命令掃描網(wǎng)絡(luò)中Samba版本。
0x05 漏洞修復(fù)
1. Samba 官方已經(jīng)提供了新版本來修復(fù)上述漏洞, 請(qǐng)受影響的用戶盡快升級(jí)到新版本。 使用源碼安裝的 Samba 用戶, 請(qǐng)盡快下載最新的 Samba 版本手動(dòng)更新;使用二進(jìn)制分發(fā)包(RPM 等方式)的用戶立即進(jìn)行 yum, apt-get update 等安全更新操作。
下載鏈接如下:
https://download.samba.org/pub/samba/stable/samba-4.6.4.tar.gz https://download.samba.org/pub/samba/stable/samba-4.5.10.tar.gz https://download.samba.org/pub/samba/stable/samba-4.4.14.tar.gz
2. 緩解措施:通過在 smb.conf 的[global]節(jié)點(diǎn)下增加 nt pipe support = no選項(xiàng), 然后重新啟動(dòng)Samba 服務(wù), 以此達(dá)到緩解針對(duì)該漏洞攻擊的效果。
0x06 FAQ
1)很多童鞋在ubuntu16.04或者centos6.8上沒有驗(yàn)證成功, 是so不對(duì)?metasploit版本不對(duì)?還是靶機(jī)環(huán)境不對(duì)?
答:
a) kali上的metasploit保證最新, 然后只需下載對(duì)應(yīng)的is_known_pipename.rb模塊, 放入/usr/share/metasploit-framework/modules/exploits/linux/samba/目錄即可;
b) 使用metasploit自帶的payload生成模塊即可, 默認(rèn)為reverse TCP;
c) 本次測(cè)試靶機(jī)的smb.conf設(shè)置如下:
[public] path=/home/samba public=yes writable=yes browseable=yes guestok=yes readlist=nobody writelist=nobody
能觸發(fā)漏洞的配置文件版本很多, writable = yes是必需的, global里有個(gè)security設(shè)置, 刪除后默認(rèn)是匿名訪問。
d) 本次測(cè)試共享目錄/home/samba的權(quán)限為777;
e) 重點(diǎn):2017年5月24日以后使用apt或者yum安裝的smb服務(wù)基本都是打過補(bǔ)丁的, 所以不可能利用成功。
2)如何在ubuntu下查看Samba的完整版本?
a) apt install apt-show-versions
b) apt-show-versions samba
c) 位置1是Samba版本, 位置2是ubuntu補(bǔ)丁版(ubuntu0.16.04.7), 可以參見ubuntu的修改日志http://changelogs.ubuntu.com/changelogs/pool/main/s/samba/samba_4.3.11+dfsg-0ubuntu0.16.04.7/changelog, 可以看到已經(jīng)修復(fù)了漏洞CVE-2017-7494。
3)如何查看centos已經(jīng)修復(fù)的版本?
上面是電腦上網(wǎng)安全的一些基礎(chǔ)常識(shí),學(xué)習(xí)了安全知識(shí),幾乎可以讓你免費(fèi)電腦中毒的煩擾。