Samba 遠程命令執行漏洞(CVE-2017-7494)
Path samba/CVE-2017-7494
運行測試環境
docker-compose up -d
Samba版本:4.6.3(該漏洞在4.6.4被修復)
原理
Samba允許連接一個遠程的命名管道,并且在連接前會調用is_known_pipename()函數驗證管道名稱是否合法。在is_known_pipename()函數中,并沒有檢查管道名稱中的特殊字符,加載了使用該名稱的動態鏈接庫。導致攻擊者可以構造一個惡意的動態鏈接庫文件,執行任意代碼。
該漏洞要求的利用條件:
- 擁有共享文件寫入權限,如:匿名可寫等
- 需要知道共享目錄的物理路徑
參考:
- https://www.twistlock.com/2017/06/04/security-alert-new-samba-vulnerability-cve-2017-7494/
- http://bobao.#/learning/detail/3900.html
測試過程
測試環境運行后,監聽445端口,默認開啟了一個共享“myshare”,共享的目錄為/home/share,可讀可寫。
我們可以在Linux下用smbclient(安裝:apt install smbclient)連接試試:

成功連接。大家測試的時候如果連接不成功,有可能是國內運營商封了445端口,最好在VPS上進行測試,比如上圖,我在本地進行測試,連接的是127.0.0.1。
然后使用metasploit來利用該漏洞,首先在Docker中運行最新版的metasploit:
git clone git@github.com:rapid7/metasploit-framework.git
cd metasploit-framework
chmod 0777 $HOME/.msf4/
docker-compose run --rm --service-ports ms
然后選擇模塊exploit/linux/samba/is_known_pipename,RHOST為目標IP(運行docker的主機的IP),我這里是127.0.0.1。
注意,如果你能猜到目標可寫的目錄的絕對路徑,比如當前這個測試環境,就設置一下set SMB_FOLDER /home/share。如果在實戰中你猜不到絕對路徑,那么就不設置,msf會自動爆破一些路徑。

成功拿到shell。
Vulhub 文檔
推薦文章: