找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

695

积分

0

好友

97

主题
发表于 12 小时前 | 查看: 1| 回复: 0

CVE-2025-8088 (CVSS 8.4) 是一个影响 WinRAR 7.12 及以下版本(包含 UnRAR.dll 等相关组件)的高风险路径遍历漏洞(CWE-35)。该漏洞允许攻击者在未经授权的情况下,将恶意文件写入系统敏感目录,例如 Windows 启动文件夹,从而实现文件执行并可能造成权限提升。

这已经是半年内针对 WinRAR 发现的第二个路径遍历漏洞。此前在7月份,CVE-2025-6218 主要影响 7.11 版本,而本次的 CVE-2025-8088 则针对更新至 7.12 的版本。连续出现此类高危漏洞,使得 WinRAR 成为攻击者青睐的目标,对于相关领域的安全研究,可以在安全/渗透/逆向板块找到更多深入的探讨。

一、检测 WinRAR 版本

首先,我们可以使用一段 PowerShell 脚本来检测当前系统是否受此漏洞影响。该脚本会检查系统中已安装的 WinRAR 版本。

# Detects exposure to CVE-2025-8088 based on WinRAR.
# Vulnerable: WinRAR < 7.13   (Patched: 7.13+)
Set-StrictMode -Version Latest
$ErrorActionPreference = 'Stop'

function info { param([string]$m) Write-Host "[i] $m" }
function good { param([string]$m) Write-Host "[+] $m" -ForegroundColor Green }
function bad  { param([string]$m) Write-Host "[-] $m" -ForegroundColor Red }

$fixedVersion = [version]'7.13.0'

# Common install locations
$candidates = @(
  "$env:ProgramFiles\WinRAR\WinRAR.exe",
  "${env:ProgramFiles(x86)}\WinRAR\WinRAR.exe"
) | Where-Object { $_ -and (Test-Path $_) }

if (-not $candidates) {
  $cmd = Get-Command 'WinRAR.exe' -ErrorAction SilentlyContinue
  if ($cmd) { $candidates = @($cmd.Source) }
}

if (-not $candidates) {
  info "WinRAR not found. Nothing to check."
  return
}

$entries = foreach ($p in $candidates) {
  $v = (Get-Command $p).FileVersionInfo.ProductVersion
  [pscustomobject]@{ Path = $p; Version = $v; V = [version]$v }
}

$winrar = $entries | Sort-Object V -Descending | Select-Object -First 1
info ("WinRAR path: " + $winrar.Path)
info ("WinRAR version: " + $winrar.Version)

if ($winrar.V -lt $fixedVersion) {
  bad  "CVE-2025-8088 IS exploitable (WinRAR < 7.13)."
} else {
  good "CVE-2025-8088 is NOT exploitable (WinRAR >= 7.13)."
}

运行上述脚本后,检测结果如下所示。图中显示 WinRAR 版本为 7.12.0,且判定为存在风险。
PowerShell脚本检测WinRAR版本结果

当然,你也可以直接打开 WinRAR 软件,在其关于界面中查看版本信息。
WinRAR 7.12 软件关于界面

二、漏洞复现过程与分析

为了深入理解漏洞原理,我们进行完整的复现操作。

1. PoC 下载与使用

漏洞的公开概念验证(PoC)代码位于 GitHub:https://github.com/sxyrxyy/CVE-2025-8088-WinRAR-Proof-of-Concept-PoC-Exploit-?tab=readme-ov-file

其基本使用命令如下:

python poc.py --decoy clib.txt --payload run_decode.bat --drop "C:\Users\Administrator\Desktop\CVE-2025-8088-WinRAR-PoC-Exploit" --rar "C:\Program Files\WinRAR\rar.exe"

各参数含义如下表所示:
POC脚本参数说明表

2. 攻击流程详解

该命令的执行效果是创建一个特殊的恶意 RAR 文件,其内部攻击流程分解如下:

  1. 读取文件

    • 诱饵clib.txt(需存在于当前目录)
    • 载荷run_decode.bat(需存在于当前目录)
  2. NTFS 流附加

    • run_decode.bat 作为交替数据流 (Alternate Data Stream, ADS) 附加到 clib.txt 文件上。
    • 流名称初始化为一段占位符字符串(如 XXXXXXXX...)。
  3. 生成基础 RAR

    • 调用 WinRAR 的 rar.exe 程序,生成一个包含 clib.txt 及其 ADS 流的普通 RAR5 格式压缩包。
  4. 二进制补丁

    • 在生成的 RAR 文件头部搜索占位符字符串。
    • 将其替换为精心构造的路径遍历字符串,例如:..\..\..\...(16层)\Desktop\CVE-2025-8088...\run_decode.bat
  5. CRC32 修复

    • 由于修改了文件头部,需要重新计算所有相关 RAR 块头的 CRC32 校验和,以确保文件格式仍然合法,能够被解压软件正常识别。
  6. 输出文件

    • 最终生成恶意文件:cve-2025-8088-sxy-poc.rar
    • 中间文件 cve-2025-8088-sxy-poc.base.rar 会在生成后被自动删除。

3. 攻击后果

当受害者使用存在漏洞的 WinRAR 版本(< 7.13)解压这个恶意 RAR 文件时:

  • 表面现象:仅解压出可见的 clib.txt 文件。
  • 实际后果:隐藏在 ADS 中的 run_decode.bat 载荷会被悄无声息地释放到指定的目录:C:\Users\Administrator\Desktop\CVE-2025-8088-WinRAR-PoC-Exploit\run_decode.bat

4. 生成与检查恶意文件

执行 PoC 脚本后,会看到生成过程的输出。
Python脚本生成恶意RAR文件

我们可以使用 7z 工具的列表命令来检查生成的 RAR 文件内部结构:

7z l -sns cve-2025-8088-sxy-poc.rar

从输出中可以看到,除了 clib.txt,还存在着一个名为 run_decode.bat 的“交替数据流”。
7z命令查看RAR内部结构与ADS

也可以使用专门的工具(如 NtfsStreamEditor)直接查看和编辑 ADS 中的内容。下图展示了 run_decode.bat 载荷的具体代码。
通过工具查看ADS中的批处理脚本内容

5. 真实世界的攻击样本

互联网上已出现利用此漏洞的实际攻击样本。下图展示了一个使用 7z 命令列出的恶意 RAR 文件,其载荷是一个 HTA(HTML Application)文件,常用于执行脚本。
真实攻击样本中的HTA载荷文件

下图清晰地描绘了基于此漏洞的完整攻击链:攻击者通过恶意邮件附件投递利用 CVE-2025-8088 的 RAR 文件 -> 解压时释放恶意 HTA 文件到启动目录 -> HTA 文件连接远程服务器下载后续 VB 脚本载荷 -> 最终与 C2(命令与控制)服务器建立通信。
CVE-2025-8088攻击链示意图

6. 漏洞触发时的表现特征

当使用存在漏洞的 WinRAR 解压恶意文件时,可能会遇到“无法创建文件”的错误提示。这个错误信息本身就是线索。如下图所示,错误弹窗显示路径创建失败。
WinRAR解压恶意文件时报错

将完整的错误信息复制到文本编辑器中查看,可以清晰地看到攻击者试图写入的完整路径,其中包含了大量的路径遍历序列(..\),最终指向了系统的启动目录。
完整错误信息显示路径遍历细节

三、POC 脚本增强:模拟网络下载标记

为了更真实地模拟攻击场景(即从网络下载的文件),我们可以修改 poc.py 脚本,使其在生成 RAR 文件后自动附加一个“网络标记”(Mark of the Web)。这个标记通常以名为 Zone.Identifier 的 ADS 流形式存在,其中 ZoneId=3 表示文件来自互联网。

修改说明

  1. 新增 attach_motw 函数,用于创建 Zone.Identifier 流。
  2. 在主函数生成 RAR 文件后调用该函数。

新增函数代码示例如下:

def attach_motw(path: Path):
    """Attach Zone.Identifier to mimic a downloaded file (ZoneId=3)."""
    motw = textwrap.dedent("""
        [ZoneTransfer]
        ZoneId=3
        HostUrl=about:internet
        """)
    try:
        with open(f"{path}:Zone.Identifier", "w") as f:
            f.write(motw)
        print(f"[+] Attached Zone.Identifier (Mark of the Web) to {path}")
    except Exception as e:
        print(f"[-] Failed to attach MOTW: {e}")

应用此修改后,再次运行 PoC 脚本,生成的 RAR 文件将附带 Zone.Identifier 流。这有助于绕过一些基于此标记的简单检测,或用于研究相关防御机制的绕过。

效果验证
修改后,可以使用 PowerShell 命令验证 ADS 流是否成功添加:

Get-Item -Path cve-2025-8088-sxy-poc.rar -Stream *

命令输出会显示文件包含 $DATA 主数据流和 Zone.Identifier 交替数据流。
PowerShell查看RAR文件的ADS流

也可以直接在资源管理器的地址栏查看文件路径,确认 ADS 流的存在。
资源管理器路径显示ADS流

再次使用 7z 检查,可以看到文件大小等信息,但 7z 的标准列表命令可能不会直接显示 Zone.Identifier 这个 ADS。
7z再次检查生成的文件

四、总结与防护建议

  1. 立即升级:CVE-2025-8088 影响 WinRAR 7.13 以下的所有版本,危害性极高。所有用户应立即升级至官方最新版本(7.13 或更高)。
  2. 理解攻击:通过本次复现,我们深入了解了该漏洞如何利用 NTFS 交替数据流 (ADS) 隐藏恶意载荷,并结合路径遍历实现文件任意写入。掌握此类网络/系统层面的特性,对于防御和检测至关重要。文中也分享了使用 7z 和 PowerShell 检测 ADS 的方法。
  3. 增强模拟:我们通过改造 PoC 脚本,使其生成的文件附带 Zone.Identifier 流,以更逼真地模拟从网络下载的恶意文件场景。
  4. 合法用途:本文所有内容仅为技术研究与漏洞复现,旨在帮助安全社区更好地理解威胁、构建防护措施。严禁将相关知识用于任何非法攻击活动。

安全研究是一个持续对抗和学习的过程,保持软件更新和提升安全意识是防御此类漏洞最基本也是最有效的手段。希望本文的详细分析能对大家有所帮助,更多技术讨论欢迎在云栈社区进行交流。




上一篇:Falcon H1R-7B技术解析:Transformer+Mamba2混合架构如何实现7B模型越级性能?
下一篇:API安全测试:10步挖掘隐藏端点的漏洞赏金实战方法论
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-1-26 18:42 , Processed in 0.293868 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表