標題:Winrar目錄穿越漏洞復現

taibeihacker

Moderator

0x01 漏洞描述​

近日Check Point團隊爆出了一個關於WinRAR存在19年的漏洞,用它來可以獲得受害者計算機的控制。攻擊者只需利用此漏洞構造惡意的壓縮文件,當受害者使用WinRAR解壓該惡意文件時便會觸發漏洞。
該漏洞是由於WinRAR 所使用的一個陳舊的動態鏈接庫UNACEV2.dll所造成的,該動態鏈接庫在2006 年被編譯,沒有任何的基礎保護機制(ASLR, DEP 等)。動態鏈接庫的作用是處理ACE 格式文件。而WinRAR解壓ACE文件時,由於沒有對文件名進行充分過濾,導致其可實現目錄穿越,將惡意文件寫入任意目錄,甚至可以寫入文件至開機啟動項,導致代碼執

0x02 漏洞影响​

影響軟件:
WinRAR 5.70 Beta 1
Bandizip=6.2.0.0
好壓(2345壓縮)=5.9.8.10907
360壓縮=4.0.0.1170

0x03 漏洞危害​

1. 通過這個漏洞黑客可以將惡意程序放入用戶啟動項,當目標電腦重新啟動時獲取目標主機的權限。
2. 在擁有system權限下可以放入
c:/windows/system32/wbem/mof/nullevt.mof,直接在獲取目標主機的權限。
3. 可以投放惡意dll文件進行dll劫持獲取到目標主機的權限,或者覆蓋用戶主機上的文件等方式獲取目標主機的權限

0x04 漏洞细节​

漏洞主要是由Winrar用來解壓ACE壓縮包採用的動態鏈接庫unacev2.dll這個dll引起的。 unacev2.dll中處理filename時只校驗了CRC,黑客可以通過更改壓縮包的CRC校驗碼來修改解壓時候的filename來觸發這個Path Traversal漏洞。但是Winrar本身檢測了filename,有一些限制並且普通用戶解壓RAR文件時候不能將我們惡意的Payload解壓到需要System權限的文件夾。當用戶將文件下載到默認的C:\Users\Administrator\Downloads目錄下時,我們通過構造
C:\C:C:/AppData\Roaming\Microsoft\Windows\StartMenu\Programs\Startup\test.exe
經過Winrar的CleanPath函數處理會變成
C:/AppData\Roaming\Microsoft\Windows\StartMenu\Programs\Startup\test.exe
其中C:會被轉換成當前路徑,如果用Winrar打開那麼當前路徑就是C:\Program Files\WinRAR,要是在文件夾中右鍵解壓到xxx\那麼當前路徑就是壓縮包所在的路徑。
當用戶在文件夾中直接右鍵解壓到xx那麼我們惡意的payload解壓地址就會變成
C:\Users\Administrator\Downloads./AppData\Roaming\Microsoft\Windows\StartMenu\Programs\Startup\test.exe
就是當前用戶的啟動項。這樣一個利用完成了從一個Path Traversal到任意命令執行的過程。

0x05 漏洞复现​

該漏洞的實現過程:首先新建一個任意文件(也可以指定一個後門exe文件都可以),然後利用WinACE進行壓縮,修改filename來實現目錄穿越漏洞,可以將文件解壓到任意目錄中。
主要所需工具WinACE、010Editor,下載地址為:
1.下載WinACE並安裝,安裝完成後,新建一個文本文件,名字可以任意,這里為backlion.txt。
epwphwxm4up23099.png
2.利用WinACE進行壓縮,這裡選擇store full path.
zayenijzeob23100.jpg

3.通過腳本檢查rar的header信息,其腳本下載地址為:
python acefile.py --headers backlion.ace
4mqito3mrol23101.png

需要注意以下參數:
hdr_crchdr_sizefilename的長度filename
4.我們開始修改,要把他放置在啟動項
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\backlion.txt。這裡修改如下:
oogkym212aj23102.png

5.選中文件位置,可以看到其文件的長度為65(十進制,這裡需要轉換成十六進制)
3p0qigo2zp223103.png

長度為65(十進制)-0x41
lct03w2kqht23104.png

6.其修改的長度位置:00 41(修改順序是由後到前)
c0mvzpwvhtl23105.png
然後修改hdr_size的值,這裡選擇如下位置,可以看到其長度為96(十進制,這裡需要轉換成十六進制)。
0ag1yuzz0tv23106.png
長度為96(十進制)-0x0060
yripbp1w33m23107.png

其修改的位置如下:
x5fixzanf1r23108.png

7.然後這個時候我們使用acefile.py進行解析ace文件,就可以爆錯/
D:\python3python acefile.py --headers backlion.ace
[+] right_hdr_crc :0xcda5 | struct b'\xa5\xcd'
[*] current_hdr_crc :0xed55 | struct b'U\xed'
backlion.ace: CorruptedArchiveError: header CRC failed
tytta5mkdz223109.png
8.我們可以看出正確的CRC值為0xcda5,所以進行如下修改:
lq0bjsqyqrz23110.png
9.再次解析發現成功
qafz1r4mja223111.png

10.解壓backlion.rce文件,就會在其啟動項下釋放一個文件為backlion.txt 文件
t0axyljbmnt23112.png

腳本自動化利用:
另附上自定腳本執行:
其中里面的:calc.exe可以換成你的木馬文件,這里為了測試方便我用計算器來替換,然後world.txt和hello.txt是你需要壓縮的文件。
執行exp.py腳本後,會自動生成test.rar文件。
hfpbf2nskwy23113.png

只需要受害者打開test.rar文件就會在你當前用戶的啟動選項下生產一個後門文件hh.exe
C:\Users\这个是当前计算机使用的用户名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\
C:\Users\xxx\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
3qj3yvaomdd23114.png

0x06 修复建议​

有兩種方式
升級到最新版本,WinRAR 目前版本是5.70 Beta 1
刪除其安裝目錄下的UNACEV2.dll文件

0x07 参考​

wiz_tmp_tag id='wiz-table-range-border' contenteditable='false' style='display: none;'
 
返回
上方