Web API Pentesting

Reading time: 9 minutes

tip

学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE) 学习和实践 Azure 黑客技术:HackTricks Training Azure Red Team Expert (AzRTE)

支持 HackTricks

API Pentesting Methodology Summary

对 API 进行 pentesting 需要采用有结构的方法来发现漏洞。本指南概述了全面的方法论,强调实用的技术和工具。

理解 API 类型

  • SOAP/XML Web Services: 使用 WSDL 格式作为文档,通常位于 ?wsdl 路径下。像 SOAPUIWSDLer (Burp Suite Extension) 这样的工具对于解析和生成请求非常有用。示例文档可在 DNE Online 访问。
  • REST APIs (JSON): 文档常以 WADL 文件形式提供,但像 Swagger UI 这样的工具能提供更友好的交互界面。Postman 是用于创建和管理示例请求的有力工具。
  • GraphQL: 一种为 API 提供完整且可理解数据描述的查询语言。

实践实验室

  • VAmPI: 一个刻意设计为有漏洞的 API,用于实践练习,覆盖 OWASP top 10 API vulnerabilities。

API Pentesting 的有效技巧

  • SOAP/XML Vulnerabilities: 探索 XXE 漏洞,尽管 DTD 声明通常会受限。如果 XML 保持有效,CDATA 标签可能允许插入 payload。
  • Privilege Escalation: 针对不同权限级别的端点进行测试,以识别未经授权访问的可能性。
  • CORS Misconfigurations: 检查 CORS 设置是否可被利用,通过来自已认证会话的 CSRF 攻击进行滥用。
  • Endpoint Discovery: 利用 API 模式发现隐藏端点。像 fuzzers 这样的工具可以自动化此过程。
  • Parameter Tampering: 尝试在请求中添加或替换参数,以访问未授权的数据或功能。
  • HTTP Method Testing: 变换请求方法(GET, POST, PUT, DELETE, PATCH)以发现意外行为或信息泄露。
  • Content-Type Manipulation: 在不同的 content types(x-www-form-urlencoded, application/xml, application/json)之间切换,以测试解析问题或漏洞。
  • Advanced Parameter Techniques: 在 JSON payload 中测试意外的数据类型或操作 XML 数据进行 XXE 注入。还要尝试 parameter pollution 和通配符字符以进行更广泛的测试。
  • Version Testing: 旧版本的 API 可能更容易受到攻击。务必检查并测试多个 API 版本。

Authorization & Business Logic (AuthN != AuthZ) — tRPC/Zod protectedProcedure pitfalls

现代 TypeScript 堆栈通常使用 tRPC 和 Zod 进行输入验证。在 tRPC 中,protectedProcedure 通常确保请求具有有效的 session (authentication),但并不意味着调用者具有正确的 role/permissions (authorization)。这种不匹配会在敏感过程仅由 protectedProcedure 进行限制时导致 Broken Function Level Authorization/BOLA。

  • Threat model: 如果缺少角色检查,任何低权限的已认证用户都可以调用本应仅限管理员的过程(例如 background migrations、feature flags、tenant-wide maintenance、job control)。
  • Black-box signal: 当 POST /api/trpc/<router>.<procedure> 端点对于普通账户也能成功且本应仅限管理员时。自助注册会大大增加可利用性。
  • Typical tRPC route shape (v10+): JSON body wrapped under {"input": {...}}.

Example vulnerable pattern (no role/permission gate):

ts
// The endpoint for retrying a migration job
// This checks for a valid session (authentication)
retry: protectedProcedure
// but not for an admin role (authorization).
.input(z.object({ name: z.string() }))
.mutation(async ({ input, ctx }) => {
// Logic to restart a sensitive migration
}),

实际利用 (black-box)

  1. 注册一个普通账号并获取经过认证的会话(cookies/headers)。
  2. 通过“list”/“all”/“status”接口枚举后台作业或其他敏感资源。
bash
curl -s -X POST 'https://<tenant>/api/trpc/backgroundMigrations.all' \
-H 'Content-Type: application/json' \
-b '<AUTH_COOKIES>' \
--data '{"input":{}}'
  1. 调用特权操作,例如重启作业:
bash
curl -s -X POST 'https://<tenant>/api/trpc/backgroundMigrations.retry' \
-H 'Content-Type: application/json' \
-b '<AUTH_COOKIES>' \
--data '{"input":{"name":"<migration_name>"}}'

需评估的影响

  • 通过非幂等重启导致的数据损坏:强制并发运行迁移/worker 可能产生竞态条件并造成不一致的部分状态(静默数据丢失、分析功能损坏)。
  • DoS via worker/DB starvation:重复触发高负载任务可能耗尽 worker 池和数据库连接,导致租户范围的服务中断。

用于 API Pentesting 的工具与资源

  • kiterunner:非常适合发现 API endpoints。用于扫描并对目标 API 的路径和参数进行 brute force。
bash
kr scan https://domain.com/api/ -w routes-large.kite -x 20
kr scan https://domain.com/api/ -A=apiroutes-220828 -x 20
kr brute https://domain.com/api/ -A=raft-large-words -x 20 -d=0
kr brute https://domain.com/api/ -w /tmp/lang-english.txt -x 20 -d=0
  • https://github.com/BishopFox/sj: sj 是一个命令行工具,旨在通过检查相关的 API 端点是否存在弱身份验证来协助审计 exposed Swagger/OpenAPI definition files。它还提供用于手动漏洞测试的命令模板。
  • 其他工具如 automatic-api-attack-toolAstrarestler-fuzzer 为 API 安全测试提供定制化功能,范围包括攻击模拟、fuzzing 和漏洞扫描。
  • Cherrybomb: 它是一个基于 OAS 文件对 API 进行审计的 API 安全工具(该工具用 rust 编写)。

学习与练习资源

  • OWASP API Security Top 10: 理解常见 API 漏洞的必读材料 (OWASP Top 10).
  • API Security Checklist: 用于保护 API 的全面检查清单 (GitHub link).
  • Logger++ Filters: 用于追踪 API 漏洞,Logger++ 提供了有用的过滤器 (GitHub link).
  • API Endpoints List: 为测试目的整理的潜在 API 端点列表 (GitHub gist).

参考资料

tip

学习和实践 AWS 黑客技术:HackTricks Training AWS Red Team Expert (ARTE)
学习和实践 GCP 黑客技术:HackTricks Training GCP Red Team Expert (GRTE) 学习和实践 Azure 黑客技术:HackTricks Training Azure Red Team Expert (AzRTE)

支持 HackTricks