ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

基于 OWASP API Security Top 10 的 API 安全测试实战指南:从 REST/GraphQL 漏洞挖掘到自动化验证

基于 OWASP API Security Top 10 的 API 安全测试实战指南:从 REST/GraphQL 漏洞挖掘到自动化验证 基于 OWASP API Security Top 10 的 API 安全测试实战指南从 REST/GraphQL 漏洞挖掘到自动化验证【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATTCK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI 20 platforms · 29 security domains · Apache 2.0项目地址: https://gitcode.com/GitHub_Trending/an/Anthropic-Cybersecurity-Skills导读本文以 Anthropic-Cybersecurity-Skills 仓库中的 conducting-api-security-testing 技能 为骨架系统讲解如何在授权范围内对 REST、GraphQL、gRPC 三类 API 开展安全测试覆盖认证、授权、限流、输入校验与业务逻辑五类高危面。读者将掌握一套可复用的五步工作流攻击面发现 → 认证与令牌测试 → 授权测试 → 注入与输入校验 → 数据暴露分析并学会使用仓库自带 Python 自动化脚本批量验证 OWASP API Security Top 10 中的 BOLA、BFLA、Mass Assignment 等核心漏洞。技能定位与适用场景该技能在仓库元数据中定义为penetration-testing子域下的安全技能其核心使命是以OWASP API Security Top 10作为测试框架结合Burp Suite流量拦截与Postman集合管理对 API 端点进行全权限等级未认证、普通用户、管理员的安全测试。其 front matter 同时声明了与多个安全框架的映射关系包括NIST CSF 2.0ID.RA-01、ID.RA-06风险识别与评估、GV.OV-02、DE.AE-07异常事件检测MITRE ATTCKT1190利用面向公网的应用程序、T1213来自信息库的数据、T1552.001未受保护的凭证、T1078有效账户、T1071.001应用层协议通信。When to Use何时使用技能文档明确适用的典型场景包括测试 API 端点的授权缺陷、注入漏洞与业务逻辑绕过评估以 API 为主要通信方式的微服务架构安全态势验证 API 网关防护限流、认证、输入校验是否被正确强制执行测试第三方 API 集成是否存在数据暴露与不安全配置评估 GraphQL API 的 introspection 信息泄露、查询复杂度攻击与授权绕过。使用边界Do not use安全测试有严格的法律与伦理边界。该技能明确声明禁止在无书面授权的情况下对 API 进行测试除非明确写入授权范围否则不得用于负载测试或拒绝服务DoS测试未经保护措施不得测试处理真实金融交易的线上 API。这条边界同样体现在仓库配套脚本的文件头注释中For authorized penetration testing and lab environments onlyscripts/agent.py。前置条件Prerequisites在启动测试前需要准备以下五类输入API 文档OpenAPI/Swagger 规范、GraphQL schema、Postman 集合或具备应用访问权限以便逆向工程 APIBurp Suite Professional配置为可拦截 API 流量并正确处理 JSON/XML 内容类型Postman 或 Insomnia用于跨不同认证上下文组织和重放 API 请求多权限级凭据覆盖未认证、标准用户、管理员三个等级的有效 API 令牌或凭据目标信息目标 API 的基础 URL 与版本信息。五步安全测试工作流以下工作流来自技能文档主体是全文的实操核心。Step 1API 发现与文档梳理API Discovery and Documentation完整测绘 API 攻击面是后续一切测试的地基导入 API 文档将 OpenAPI/Swagger 规范加载进 Postman 或 Burp Suite编目所有端点、方法、参数与认证要求逆向工程未文档化 API将移动端 App 或 Web 前端代理到 Burp Suite逐一触发全部功能以捕获真实 API 调用并将 Burp 站点地图导出作为基线端点清单——这是发现影子端点Shadow Endpoints与废弃版本的关键手段GraphQL introspection 探测发送 introspection 查询以发现完整 schema{query: {__schema{types{name,fields{name,args{name,type{name}}}}}}}端点枚举模糊探测隐藏的 API 版本/api/v1/、/api/v2/、/api/internal/、调试端点/api/debug、/api/health、/api/metrics以及管理端点认证机制识别判断 API 使用 API Key、OAuth 2.0 Bearer Token、JWT、会话 Cookie 还是双向 TLSmTLS。Step 2认证与令牌测试Authentication and Token Testing针对认证机制测试其薄弱点JWT 分析解码 JWT 并检查sub、exp、iss、aud、role等声明随后逐项测试算法混淆将alg改为none并移除签名密钥混淆将alg从 RS256 改为 HS256并用公钥对令牌签名弱密钥使用hashcat -m 16500 jwt.txt wordlist.txt爆破 HMAC 密钥过期验证确认令牌会过期且过期后无法继续使用声明篡改修改 role、userId、permission 等声明后重新签名。OAuth 2.0 测试检查redirect_uri篡改、授权码重用、令牌经 Referer 头泄露、以及缺失state参数导致的 CSRFAPI Key 安全测试 API Key 是否按端点逐一校验、吊销的 Key 是否被立即拒绝、以及查询字符串中的 Key 是否会出现在访问日志或分析系统中。源码佐证仓库脚本将 JWTnone算法攻击固化为 test_jwt_none_algorithm()先校验令牌是否为三段式parts[0].parts[1].parts[2]将头部alg改写为none后用 base64url 重新编码、拼接出new_header.payload.空签名的伪造令牌再携带该令牌请求目标端点若返回200即判定存在算法混淆漏洞。其内部对格式非法的令牌会返回Invalid JWT并标记为不受影响。Step 3授权测试BOLA / BFLA这是 OWASP API Top 10 中权重最高的两个类别。BOLAIDOR测试对每个返回用户专属数据的端点将对象标识符替换为其他用户的标识符GET /api/users/123/orders→GET /api/users/456/orders分别使用数字 ID、UUID、用户名、邮箱地址进行测试使用 Burp Autorize 扩展自动化配置攻击者与受害者两个会话重放全部请求。BFLA 测试使用低权限令牌尝试访问管理端点DELETE /api/users/456仅管理员可删除PUT /api/users/456/role角色修改GET /api/admin/dashboard管理面板数据Mass Assignment批量赋值发送文档中未出现的附加 JSON 属性PUT /api/users/123 {name: Test, role: admin, isVerified: true, balance: 99999}HTTP 方法测试若 GET 可用继续尝试 PUT、PATCH、DELETE、OPTIONS以发现未受保护的方法。源码佐证脚本以三个函数分别固化上述测试逻辑test_bola() 将端点模板中的{id_field}占位符分别替换为valid_id本人资源与other_id他人资源携带同一认证令牌发送两次 GET 请求当他人资源返回200且响应体长度超过 50 字节时判定存在 BOLAtest_bfla() 对管理端点列表依次使用 GET、POST、DELETE 三种方法发起请求任一方法返回200/201/204即视为低权限令牌可访问管理功能test_mass_assignment() 先 PUT 注入额外字段再 GET 同一端点并比对响应体若注入字段的键值对被服务端持久化即确认漏洞存在。Step 4输入校验与注入测试Input Validation and Injection TestingAPI 参数中的 SQL 注入对所有参数路径、查询、请求体、请求头测试 SQL 注入载荷。JSON API 常被忽略{username: admin OR 11--, password: test}NoSQL 注入针对 MongoDB 后端测试操作符注入{username: {$gt: }, password: {$gt: }}经 API 触发的 SSRF对任何接受 URL 的参数Webhook URL、头像 URL、导入端点测试内网地址与云元数据端点如 169.254.169.254GraphQL 专属注入测试查询深度攻击query depth attack、基于别名的批量请求alias-based batching用于暴力破解以及字段建议枚举field suggestion enumerationXML API 中的 XXE向接受 XML 的端点提交带外部实体声明的 XML 内容限流验证向认证端点、密码重置、OTP 验证发送 100 次快速请求测试是否存在暴力破解防护。源码佐证限流测试在 test_rate_limiting() 中实现——默认连续发送 100 次CLI 主流程中为 50 次带有递增用户名、错误密码的登录 POST 请求一旦收到429 Too Many Requests即认为限流生效并立即返回若请求全部发完仍无429则标记为无限流、存在漏洞对应 OWASP API4:2023Unrestricted Resource Consumption。Step 5数据暴露与响应分析Data Exposure and Response Analysis冗余响应Verbose responses对比 API 响应返回的数据与 UI 实际展示的数据。API 往往返回比界面所需更多的字段内部 ID、创建时间戳、其他用户邮箱、角色信息错误消息分析通过发送畸形输入、无效令牌、不存在的资源触发错误检查错误消息是否泄露堆栈跟踪、数据库查询、内部路径或技术栈细节分页与枚举通过遍历分页响应/api/users?page1、page2……测试是否可批量提取全部记录GraphQL 数据暴露查询当前角色不应访问的字段测试可跨越对象关系遍历的嵌套查询以获取未授权数据调试端点检查/api/debug、/api/status、/metrics、/health、/.env、/api/swagger.json是否暴露内部信息。源码佐证test_excessive_data_exposure() 以期望字段白名单为基准GET 请求返回后将响应体 JSON 的所有键与expected_fields列表比对凡是白名单之外的字段都被记为extra_fields存在即判定数据过度暴露。自动化测试脚本agent.py 使用指南技能目录下提供了完整的 Python 参考实现可对上述手工流程进行批量自动化验证。依赖与 CLI 用法脚本仅依赖requests版本 2.28运行方式参考 api-reference.mdpython agent.py --base-url https://api.target.com --token jwt \ --low-priv-token jwt --graphql --output report.json命令行参数参数必填说明--base-url是目标 API 基础 URL--token否用于认证测试的 Bearer 令牌--low-priv-token否用于 BFLA 测试的低权限令牌--login-endpoint否限流测试的登录端点默认/api/auth/login--graphql否测试 GraphQL introspection 信息泄露--output否输出文件默认api_security_report.json内置测试函数与 OWASP 覆盖OWASP ID漏洞类别对应函数API1:2023Broken Object Level Authorizationtest_bolaAPI3:2023Excessive Data Exposuretest_excessive_data_exposureAPI4:2023Unrestricted Resource Consumptiontest_rate_limitingAPI5:2023Broken Function Level Authorizationtest_bflaAPI6:2023Mass Assignmenttest_mass_assignment此外还包含两个 OWASP 之外的补充测试test_jwt_none_algorithm()JWT 算法混淆与 test_graphql_introspection()GraphQL introspection 泄露后者发送与技能文档 Step 1 相同的 introspection 查询载荷若响应中包含types字段即判定 introspection 处于启用状态。主流程main的编排逻辑从 main() 的调用顺序可以清晰看到各测试的触发条件与内置测试目标无条件执行test_rate_limiting默认 50 次请求端点取--login-endpoint传入--graphql时执行 introspection 测试传入--low-priv-token时对内置的管理端点列表/api/admin/users、/api/admin/settings、/api/admin/dashboard执行 BFLA 测试传入--token时对/api/profile端点执行 JWTnone算法测试最后经 generate_report() 汇总所有vulnerableTrue的发现生成包含时间戳、总测试数与漏洞数的 JSON 报告并写入--output指定文件。关键概念速查Key Concepts术语定义BOLABroken Object Level AuthorizationOWASP API #1未能验证请求用户是否有权访问特定对象从而引发 IDOR 攻击BFLABroken Function Level AuthorizationOWASP API #5未能将管理或特权 API 功能限制在低权限用户之外Mass AssignmentAPI 未过滤地将客户端提供的数据绑定到内部对象属性使攻击者可修改本无权访问的字段GraphQL IntrospectionGraphQL 内置特性会暴露包含全部类型、字段和关系的完整 API schema生产环境应予以禁用JWTJSON Web Token用于 API 认证的自包含令牌格式包含用密钥或密钥对签名的声明Rate Limiting限制客户端在时间窗口内可发起 API 请求数量的控制机制用于防止暴力破解、枚举与滥用工具链组合Tools SystemsBurp Suite ProfessionalHTTP 代理用于拦截、修改和重放 API 请求配合 Autorize 等扩展实现自动化授权测试PostmanAPI 开发平台用于组织端点集合、编写测试脚本、跨认证上下文对比响应GraphQL Voyager可视化工具用于探索通过 introspection 查询获取的 GraphQL schemajwt.io / jwt_tool用于解码、分析、篡改 JWT 令牌以测试认证绕过Nuclei基于模板的扫描器内置 API 专用模板可检测常见错误配置与已知漏洞。实战场景金融科技移动应用 API 安全评估背景一家金融科技初创公司拥有基于 REST API 后端的移动银行应用API 负责账户管理、资金转账、账单支付与交易历史。测试者持有 Swagger 文档以及用户级、管理员级账户。执行步骤技能文档中的完整走查将 Swagger 规范导入 Postman生成覆盖 12 个控制器的 87 个端点集合在/api/v1/accounts/{accountId}/transactions发现 BOLA任何已认证用户均可查看任意账户的交易历史在用户更新端点发现 Mass Assignment附加dailyTransferLimit: 999999可绕过已配置的转账限额确认资金转账端点缺乏限流转账尝试可无限发起而不被节流发现 JWT 令牌有效期长达 30 天且无刷新令牌轮换机制存在长期会话劫持风险发现管理端点/api/v1/admin/users可用标准用户令牌访问BFLA为所有发现标注 CVSS 评分并给出针对 API 代码层的修复建议。常见失误Pitfalls只测试 Swagger 中记录的端点遗漏未文档化或已废弃的 API 版本未使用每个权限等级的令牌测试同一端点导致授权绕过未被发现忽略响应体分析——UI 只展示返回字段的子集时未识别数据过度暴露只发送文档中展示的字段遗漏 Mass Assignment 测试。漏洞报告输出格式Output Format技能文档给出了一套可直接套用的标准漏洞报告模板兼顾可读性与可追溯性## Finding: Broken Object Level Authorization in Transaction History API **ID**: API-001 **Severity**: Critical (CVSS 9.1) **Affected Endpoint**: GET /api/v1/accounts/{accountId}/transactions **OWASP API Category**: API1:2023 - Broken Object Level Authorization **Description**: The transaction history endpoint returns all transactions for the specified account without verifying that the authenticated user owns the account. Any authenticated user can view the complete transaction history of any account by substituting the accountId path parameter. **Proof of Concept**: 1. Authenticate as User A (account ID: ACC-10045) 2. Request: GET /api/v1/accounts/ACC-10046/transactions Authorization: Bearer User_A_token 3. Response: 200 OK with User Bs full transaction history **Impact**: Any authenticated user can view the complete financial transaction history of all 45,000 customer accounts, including amounts, dates, recipients, and transaction descriptions. **Remediation**: Implement server-side authorization check that verifies the authenticated user owns the requested account before returning data: const account await Account.findById(accountId); if (account.userId ! req.user.id) return res.status(403).json({error: Forbidden});报告模板的要素包括唯一编号ID、严重级别与 CVSS 评分、受影响端点、对应 OWASP API 分类、缺陷描述、可复现的 PoC含请求与响应、影响面量化如受影响账户总数以及具体的代码级修复方案。与 OWASP Top 10 框架的仓库级映射在仓库的 mappings/owasp/README.md 中API 安全测试技能被明确归入多个 2025 版 OWASP Top 10 类别的api-security子域A01:2025Broken Access Controlapi-security 子域共 28 项技能关键主题即 BOLA 与 function level authorizationA03:2025Injectionapi-security 的关键主题包括 GraphQL 注入、NoSQL 注入、header 注入A07:2025Identification and Authentication Failures覆盖 API Key 管理、OAuth 令牌处理、JWT 校验A10:2025SSRF覆盖 API 到 API 的 SSRF 与 Webhook 校验。该映射文档同时给出了 OWASP 与 MITRE ATTCK 的交叉引用如 A01 Broken Access Control ↔ T1078 Valid Accounts、T1548 Abuse Elevation Control以及 OWASP 与 NIST CSF 2.0 的交叉引用如 A03 Injection ↔ Protect PR.DS、Detect DE.AE可作为测试结果向组织级风险语言转换的参考。结语本技能的价值在于以框架驱动测试、以工具固化流程、以模板收敛输出五步工作流确保覆盖认证、授权、注入、限流与数据暴露五大攻击面scripts/agent.py 将 BOLA、BFLA、Mass Assignment、限流、JWT 混淆与 GraphQL introspection 六类测试固化为可重复执行的代码api-reference.md 则提供了面向 Agent 的标准接口契约。安全测试者可以手工流程为纲、以自动化脚本为矛、以报告模板为盾在书面授权的范围内系统性地完成一次高质量 API 安全评估。【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATTCK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI 20 platforms · 29 security domains · Apache 2.0项目地址: https://gitcode.com/GitHub_Trending/an/Anthropic-Cybersecurity-Skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表