550 字
3 分鐘
CVE-2025-8088 WinRAR Path Traversal
漏洞成因
WinRAR 7.12(含)以前版本存在Path Traversal漏洞
此漏洞是WinRAR在解析ADS時會把..\\
解析為路徑,導致其可以在指定路徑解壓檔案
ADS是什麼
ADS 是 NTFS 檔案系統的一個特性,允許單個檔案包含多個「資料流」。每個檔案至少有一個主資料流,但可以附加多個替代資料流。filename:streamname
可以用 dir /r
來查看,通常是用來儲存檔案摘要資訊
主要成因
在rar的ads的檔名中包含..\\
,解壓縮的時候會將其解析為相對路徑,藉此可以把檔案放在非預期的路徑,像是\Start Menu\Programs\Startup
,以此方式來植入後門
一般來說檔名是不能包含.\
等字元的,但這邊利用的是先綁定正常的檔名的資料流,接著直接修改rar內的bytes,把這些正常的檔名改成具有..\\
的相對路徑,這樣當解壓縮時,就會讀取到這些路徑,並在指定的位置植入檔案
要注意rar為了檢查內容是被更動過,會使用CRC驗證,因此修改檔名時也要重新計算CRC並更新
漏洞復現
WinRAR版本:x64_7.11
這邊直接採用別人寫好的腳本來產生惡意RAR 其生成過程如下:
1. 生成多個txt檔,並用在其ads(XXX.txt:XXXXX...)寫入腳本內容2. 把這些txt檔壓縮成一個rar3. 修改rar的內容,把原本的路徑改成"..\\..\\.....\\Startup\\payload.bat"4. 計算新的CRC並更新,這樣就完成惡意rar了
生成惡意RAR exploit.rar
解壓後發現Startup
多出了一個payload.bat
開機時就會自動執行腳本內容
這個腳本我使用時會報錯,推測是placeholder太長的緣故,改成150即可
解壓時會出現一堆路徑錯誤是因為使用相對路徑,不確定目前這個壓縮檔所在位置的深度,所以需要不斷拼接..\\
來嘗試
漏洞防範
- 更新WinRAR到7.13之後
- 不解壓來路不明的壓縮檔,並檢查Startup目錄
- 改用好用的7zip
Reference
https://github.com/pentestfunctions/CVE-2025-8088-Multi-Document
CVE-2025-8088 WinRAR Path Traversal
https://fuwari.vercel.app/posts/cve-2025-8088/