Winrar目錄穿越漏洞復現

0x01 漏洞描述

近日Check Point團隊爆出了一個關於WinRAR存在19年的漏洞,用它來能夠得到受害者計算機的控制。攻擊者只需利用此漏洞構造惡意的壓縮文件,當受害者使用WinRAR解壓該惡意文件時便會觸發漏洞。python

該漏洞是因爲 WinRAR 所使用的一個陳舊的動態連接庫UNACEV2.dll所形成的,該動態連接庫在 2006 年被編譯,沒有任何的基礎保護機制(ASLR, DEP 等)。動態連接庫的做用是處理 ACE 格式文件。而WinRAR解壓ACE文件時,因爲沒有對文件名進行充分過濾,致使其可實現目錄穿越,將惡意文件寫入任意目錄,甚至能夠寫入文件至開機啓動項,致使代碼執

git

0x02 漏洞影響

 

影響軟件:github

WinRAR < 5.70 Beta 1web

Bandizip < = 6.2.0.0windows

好壓(2345壓縮) < = 5.9.8.10907函數

360壓縮 < = 4.0.0.1170工具

0x03  漏洞危害

1. 經過這個漏洞黑客能夠將惡意程序放入用戶啓動項,當目標電腦從新啓動時獲取目標主機的權限。測試

2. 在擁有system權限下能夠放入spa

c:/windows/system32/wbem/mof/nullevt.mof,直接在獲取目標主機的權限。.net

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,下載地址爲:

http://d3gkuj25u7yvfk.cloudfront.net/97m4@s345u2a5/Installer_winace_2.69.exe

https://download.sweetscape.com/010EditorWin64Installer901.exe

1.下載WinACE並安裝,安裝完成後,新建一個文本文件,名字能夠任意,這裏爲backlion.txt。

2.利用WinACE進行壓縮,這裏選擇store full path.
3.經過腳本檢查rar的header信息,其腳本下載地址爲:
https://raw.githubusercontent.com/backlion/acefile/master/acefile.py
python acefile.py --headers backlion.ace
須要注意如下參數:

hdr_crc
hdr_size
filename的長度
filename

 

 

4.咱們開始修改,要把他放置在啓動項

C:\ProgramData\Microsoft\Windows\Start Menu\Programs\backlion.txt。這裏修改以下:

5.選中文件位置,能夠看到其文件的長度爲65(十進制,這裏須要轉換成十六進制)
 
長度爲65(十進制)->0x41
6.其修改的長度位置:00  41( 修改順序是由後到前
而後修改 hdr_size的值,這裏選擇以下位置,能夠看到其長度爲96(十進制,這裏須要轉換成十六進制)。
長度爲96(十進制)->0x0060
其修改的位置以下:
 
 
7.而後這個時候咱們使用acefile.py進行解析ace文件,就能夠爆錯/
D:\python3>python 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
8.咱們能夠看出正確的CRC值爲  0xcda5, 因此進行以下修改:
9.再次解析發現成功
 
10.解壓backlion.rce文件,就會在其啓動項下釋放一個文件爲backlion.txt 文件
 
 
腳本自動化利用:
另附上自定腳本執行:
其中裏面的:calc.exe能夠換成你的木馬文件,這裏爲了測試方便我用計算器來替換,而後 world.txt和hello.txt是你須要壓縮的文件。
執行exp.py腳本後,會自動生成test.rar文件。

 

只須要受害者打開test.rar文件就會在你當前用戶的啓動選項下生產一個後門文件hh.exe
C:\Users\ 這個是當前計算機使用的用戶名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\
C:\Users\xxx\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

 

 
 
 
 

0x06   修復建議

有兩種方式

  1. 升級到最新版本,WinRAR 目前版本是 5.70 Beta 1

  2. 刪除其安裝目錄下的UNACEV2.dll文

 
 

0x07  參考

https://research.checkpoint.com/extracting-code-execution-from-winrar/

https://fuping.site/2019/02/21/WinRAR-Extracting-Code-Execution-Validate/

https://mp.weixin.qq.com/s/j8G9Tjq2NPg0CFhXl_sQGQ

https://github.com/Ridter/acefile

 
 

<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">

相關文章
相關標籤/搜索