retX0/CVE-2026-20660

GitHub: retX0/CVE-2026-20660

针对 macOS Safari 的 gzip FNAME 路径遍历漏洞(CVE-2026-20660)的 PoC 工具,支持自定义遍历深度和目标文件名。

Stars: 0 | Forks: 0

# CVE-2026-20660 PoC 捆绑包 此文件夹打包了一个独立的漏洞概念验证 (PoC),针对: - CVE-2026-20660 - CFNetwork `NSGZipDecoder` 通过 gzip FNAME 实现的路径遍历 - 对启用了自动打开的易受攻击 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. 快速开始 从 repo 根目录: ``` python3 exploit/cve-2026-20660/server.py --port 8888 --depth 2 ``` 在易受攻击的 Safari 中打开: ``` http://:8888/ ``` 点击 `Trigger depth=2`。 ## 6. 验证 触发后,在目标机器上验证写入结果: ``` ls -la ~/cve-2026-20660-proof.txt cat ~/cve-2026-20660-proof.txt ``` 对于覆盖变体: ``` python3 exploit/cve-2026-20660/server_overwrite.py --port 9999 ``` 然后打开: ``` http://:9999/ ``` 检查: ``` ls -la ~/pwn.sh cat ~/pwn.sh ``` ## 7. 参数说明 (`server.py`) - `--bind`, `-b`: 绑定地址(默认 `0.0.0.0`) - `--port`, `-p`: 监听端口(默认 `8888`) - `--depth`, `-d`: 遍历深度(`../` 重复次数,默认 `2`) - `--name`, `-n`: 目标输出文件名 示例: ``` # 当深度匹配运行时目录嵌套时写入 ~/proof.txt python3 exploit/cve-2026-20660/server.py -p 8888 -d 2 -n proof.txt # 显式绝对路径测试(如果 resolver 允许) 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. 文件停留在 Downloads 中: - 对于当前的解压目录嵌套,深度太浅。 3. 连接失败: - 确认主机防火墙和 LAN 可达性。 4. 目标路径未更改: - 现有文件名冲突可能导致输出被重命名。 ## 10. 安全与范围 仅在授权的测试环境中使用。 - 未经明确许可,不得针对系统。 - 保持载荷非破坏性以利于复现。 - 存储截图/日志作为评估证据。 ## 11. 建议的证据收集 1. Safari 版本和 OS 构建截图。 2. PoC 服务器控制台日志(请求 + FNAME)。 3. 文件系统验证命令和输出。 4. 目标路径的前后目录列表。 ## 12. 详细文章 有关更详细的解释,请参阅: - https://ret0.dev/posts/cve-2026-20660/
标签:CFNetwork, CISA项目, CVE-2026-20660, DNS 反向解析, DNS 解析, ExP, Gzip解压, macOS安全, NSGZipDecoder, PoC, Safari漏洞, 文件写入, 暴力破解, 漏洞复现, 目录穿越, 编程工具, 自动打开, 路径遍历, 远程代码执行, 逆向工具