# CVE-2018-20250 WinRAR目錄穿越漏洞
==漏洞原理==
該漏洞是由於WinRAR 所使用的一個陳舊的動態鏈接庫UNACEV2.dll所造成的,該動態鏈接庫在2006 年被編譯,沒有任何的基礎保護機制(ASLR,DEP 等)。該動態鏈接庫的作用是處理ACE 格式文件。而在解壓處理過程中存在一處目錄穿越漏洞,允許解壓過程寫入文件至開機啟動項,導致代碼執行。
==漏洞影響==
WinRAR < 5.70 Beta 1 Bandizip < = 6.2.0.0 好壓(2345壓縮) < = 5.9.8.10907 360壓縮 < = 4.0.0.1170
==利用條件==
攻擊不能跨盤符,即受害者進行解壓文件觸發漏洞時,必須在系統盤,且在不知道計算機主機名的情況下,只能在主瀏覽器的默認下載路徑下(C:\Users\Administrator \Downloads)或者桌面進行解壓,或者多猜幾個啟動項路徑。產生漏洞的DLL文件:UNACEV2.DLL,不能識別相對路徑,文件名部分必須為絕對路徑。
以下是幾種機器的開機啟動項路徑,可以看到在個人PC上受用戶名影響,無法猜測到準確的路徑,而服務器上一般不會修改用戶名,所以這個漏洞在服務器上利用度比較高。
==漏洞利用==
這裡我們寫一個bat,進行彈窗演示:

然後打開WinAce,選中我們創建的文件,右鍵,點擊Add to...

利用WinACE進行壓縮,這裡選擇store full path

生成之後我們利用腳本檢查一下我們生成的文件1.ace的header信息:

這裡幾個是我們需要修改的參數。
在010Edit工具中打開剛才生成的1.ace文件,將文件路徑替換為啟動項路徑如下,然後可以看到新的完整的文件路徑長度為93,轉換為16進制後為:5D。

修改完这两个地方之后点击保存,接着还需要修改hdr_size


這三個地方修改完成之後點擊保存。
最後利用acefile.py重新查看文件header信息。修改acefile.py,在3061行處添加以下語句,輸出文件hdr_crc。

print("[+] right_hdr_crc : {} | struct {} ".format(hex(ace_crc16(buf)),struct.pack('

可以看到当前的hdr_crc为:16 9A,我们要把它改为E4 A3,保存之后重新查看文件header信息。

修改完成,將文件另存為1.rar。

選擇解壓到當前文件夾或解壓到文件夾1都可以,可以看到bat文件成功解壓到開機啟動項裡。

重啟電腦查看效果

复现成功,自动运行bat文件弹窗。
==EXP&POC==
https://github.com/WyAtu/CVE-2018-20250
https://github.com/QAX-A-Team/CVE-2018-20250
==參考==
https://wiki.bylibrary.cn/%E6%BC%8F%E6%B4%9E%E5%BA%93/03-%E4%BA%A7%E5%93%81%E6%BC%8F%E6%B4%9E/winrar/WinRAR%E7%A9%BF%E9%80%8F%E6%BC%8F%E6%B4%9E%EF%BC%88CVE-2018-20250%EF%BC%89/==漏洞原理==
該漏洞是由於WinRAR 所使用的一個陳舊的動態鏈接庫UNACEV2.dll所造成的,該動態鏈接庫在2006 年被編譯,沒有任何的基礎保護機制(ASLR,DEP 等)。該動態鏈接庫的作用是處理ACE 格式文件。而在解壓處理過程中存在一處目錄穿越漏洞,允許解壓過程寫入文件至開機啟動項,導致代碼執行。
==漏洞影響==
WinRAR < 5.70 Beta 1
Bandizip < = 6.2.0.0
好壓(2345壓縮) < = 5.9.8.10907
360壓縮 < = 4.0.0.1170
==利用條件==
攻擊不能跨盤符,即受害者進行解壓文件觸發漏洞時,必須在系統盤,且在不知道計算機主機名的情況下,只能在主瀏覽器的默認下載路徑下(C:\Users\Administrator \Downloads)或者桌面進行解壓,或者多猜幾個啟動項路徑。產生漏洞的DLL文件:UNACEV2.DLL,不能識別相對路徑,文件名部分必須為絕對路徑。
以下是幾種機器的開機啟動項路徑,可以看到在個人PC上受用戶名影響,無法猜測到準確的路徑,而服務器上一般不會修改用戶名,所以這個漏洞在服務器上利用度比較高。
==漏洞利用==
這裡我們寫一個bat,進行彈窗演示:

然後打開WinAce,選中我們創建的文件,右鍵,點擊Add to...

利用WinACE進行壓縮,這裡選擇store full path

生成之後我們利用腳本檢查一下我們生成的文件1.ace的header信息:

這裡幾個是我們需要修改的參數。
在010Edit工具中打開剛才生成的1.ace文件,將文件路徑替換為啟動項路徑如下,然後可以看到新的完整的文件路徑長度為93,轉換為16進制後為:5D。

修改完这两个地方之后点击保存,接着还需要修改hdr_size


這三個地方修改完成之後點擊保存。
最後利用acefile.py重新查看文件header信息。修改acefile.py,在3061行處添加以下語句,輸出文件hdr_crc。

print("[+] right_hdr_crc : {} | struct {} ".format(hex(ace_crc16(buf)),struct.pack('

可以看到当前的hdr_crc为:16 9A,我们要把它改为E4 A3,保存之后重新查看文件header信息。

修改完成,將文件另存為1.rar。

選擇解壓到當前文件夾或解壓到文件夾1都可以,可以看到bat文件成功解壓到開機啟動項裡。

重啟電腦查看效果

复现成功,自动运行bat文件弹窗。
==EXP&POC==
https://github.com/WyAtu/CVE-2018-20250
https://github.com/QAX-A-Team/CVE-2018-20250
==參考==
https://wiki.bylibrary.cn/%E6%BC%8F%E6%B4%9E%E5%BA%93/03-%E4%BA%A7%E5%93%81%E6%BC%8F%E6%B4%9E/winrar/WinRAR%E7%A9%BF%E9%80%8F%E6%BC%8F%E6%B4%9E%EF%BC%88CVE-2018-20250%EF%BC%89/













请登录后查看评论内容