Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2026-20660 — CVE-2026-20660 的独立 PoC 漏洞利用:Safari 的 gzip 解码器中的路径遍历漏洞。服务器提供恶意 gzip 文件,可在受影响的 macOS 上写入任意文件。 | Kitploit
工具/GitHubGitHub/retx0/cve-2026-20660
Payload生成漏洞分析漏洞利用Web应用程序漏洞利用渗透测试
GitHubretx0/cve-2026-20660

CVE-2026-20660

CVE-2026-20660 的独立 PoC 漏洞利用:Safari 的 gzip 解码器中的路径遍历漏洞。服务器提供恶意 gzip 文件,可在受影响的 macOS 上写入任意文件。

查看仓库
225个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-20660 PoC 捆绑包

本文件夹打包了一个独立的 PoC(概念验证),针对:

  • CVE-2026-20660
  • 通过 gzip FNAME 实现的 CFNetwork NSGZipDecoder 路径遍历
  • 对启用自动打开功能的受影响 macOS Safari 的影响

1. 目录结构

  • server.py:主 PoC 服务器,支持可配置的遍历深度和目标文件名
  • server_overwrite.py:专门写入 ../../pwn.sh 的变体
  • README.md:复现说明和操作日志

2. 前置条件

  1. 目标为存在漏洞的 macOS Safari(早于 26.3 补丁线)。
  2. 已启用 Safari 设置:
    • 偏好设置 -> 通用 -> 下载后打开“安全”的文件
  3. 目标浏览器可以访问此主机。

3. 根本原因摘要

补丁差异显示 -[NSGZipDecoder filenameWithOriginalFilename:] 的行为发生了变化:

  • 旧行为:直接返回由 gzip FNAME 派生的名称。
  • 新行为:在返回之前应用 lastPathComponent。

这会阻止 FNAME 中包含 ../ 等目录组件以及绝对路径。

4. 为什么 Content-Disposition 不是攻击向量

HTTP 文件名可以是干净的,但利用仍然可以成功。

  • HTTP Content-Disposition 文件名:干净(例如:report.gz)
  • gzip 头部 FNAME:恶意(例如:../../proof.txt)

Safari 端的清理主要应用于 HTTP 层名称,而不是易受攻击流程中由 NSGZipDecoder 消费的内嵌 gzip FNAME。

5. 快速开始

在仓库根目录下执行:

root@kitploit:~
python3 exploit/cve-2026-20660/server.py --port 8888 --depth 2

在存在漏洞的 Safari 中打开:

root@kitploit:~
http://<server-ip>:8888/

点击 Trigger depth=2。

6. 验证

触发后,在目标机器上验证写入结果:

root@kitploit:~
ls -la ~/cve-2026-20660-proof.txt
cat ~/cve-2026-20660-proof.txt

对于覆盖变体:

root@kitploit:~
python3 exploit/cve-2026-20660/server_overwrite.py --port 9999

然后打开:

root@kitploit:~
http://<server-ip>:9999/

检查:

root@kitploit:~
ls -la ~/pwn.sh
cat ~/pwn.sh

7. 参数说明(server.py)

  • --bind、-b:绑定地址(默认 0.0.0.0)
  • --port、-p:监听端口(默认 8888)
  • --depth、-d:遍历深度(../ 重复次数,默认 2)
  • --name、-n:目标输出文件名

示例:

root@kitploit:~
# 当 depth 与运行时目录嵌套层级匹配时,写入 ~/proof.txt
python3 exploit/cve-2026-20660/server.py -p 8888 -d 2 -n proof.txt

# 显式绝对路径测试(如果解析器允许)
python3 exploit/cve-2026-20660/server.py -p 8888
# 然后使用:/download?depth=0&fname=/tmp/proof.txt

8. 已观察到的行为(当前说明)

  1. 解压可能发生在 ~/Downloads 下的临时目录中,因此深度通常需要 >= 2 才能逃逸到 ~/。
  2. 现有目标文件可能不会被覆盖;下载堆栈可能会自动重命名以避免冲突。
  3. 在观察到的运行中,脚本负载可能带有可执行位;请根据具体构建/配置进行验证。

9. 故障排除

  1. 未观察到写入:
    • 确认已启用 Safari 自动打开设置。
    • 增加深度(2、3、4)并重新测试。
  2. 文件停留在“下载”文件夹中:
    • 对于当前解压目录的嵌套层级而言,深度太浅。
  3. 连接失败:
    • 确认主机防火墙和局域网可达性。
  4. 目标路径未改变:
    • 现有文件名冲突可能导致输出被重命名。

10. 安全性与范围

仅在授权的测试环境中使用。

  • 未经明确许可,不得针对目标系统。
  • 保持负载非破坏性,以便可复现。
  • 保存屏幕截图/日志作为评估证据。

11. 建议的证据收集

  1. Safari 版本和操作系统构建的屏幕截图。
  2. PoC 服务器控制台日志(请求 + FNAME)。
  3. 文件系统验证命令及其输出。
  4. 目标路径的之前/之后目录列表。

12. 详细说明文档

更详细的解释请参见:

  • https://ret0.dev/posts/cve-2026-20660/
下载工具