skills/conducting-api-security-testing/SKILL.md
对 REST、GraphQL 和 gRPC API 进行安全测试,识别认证、授权、速率限制、输入验证和业务逻辑中的漏洞。测试人员以 OWASP API 安全 Top 10 作为测试框架,结合 Burp Suite 拦截、Postman 集合和自定义脚本,在每个权限级别测试端点安全性。
npx skillsauth add killvxk/cybersecurity-skills-zh conducting-api-security-testingInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
不适用场景:未经书面授权的 API 测试、未明确划定范围的负载测试或拒绝服务测试,以及未采取安全措施对处理真实金融交易的生产 API 进行测试。
映射完整的 API 攻击面:
{"query": "{__schema{types{name,fields{name,args{name,type{name}}}}}}"}
/api/v1/、/api/v2/、/api/internal/)、调试端点(/api/debug、/api/health、/api/metrics)和管理端点测试认证机制的弱点:
alg 改为 none 并删除签名alg 从 RS256 改为 HS256,用公钥签名hashcat -m 16500 jwt.txt wordlist.txt 暴力破解 HMAC 密钥测试对象级授权断裂(BOLA)和功能级授权断裂(BFLA):
GET /api/users/123/orders -> GET /api/users/456/ordersDELETE /api/users/456(仅管理员可删除)PUT /api/users/456/role(角色修改)GET /api/admin/dashboard(管理面板数据)PUT /api/users/123
{"name": "Test", "role": "admin", "isVerified": true, "balance": 99999}
测试 API 输入的注入和验证缺陷:
{"username": "admin' OR 1=1--", "password": "test"}{"username": {"$gt": ""}, "password": {"$gt": ""}}检查 API 响应中的过度数据暴露:
/api/users?page=1、page=2 等)枚举提取所有记录/api/debug、/api/status、/metrics、/health、/.env、/api/swagger.json 是否暴露内部信息| 术语 | 定义 | |------|------------| | BOLA | 对象级授权断裂(OWASP API #1);未能验证请求用户是否有权访问特定对象,从而导致 IDOR 攻击 | | BFLA | 功能级授权断裂(OWASP API #5);未能限制低权限用户访问管理或特权 API 功能 | | 批量赋值 | API 在未过滤的情况下将客户端提供的数据绑定到内部对象属性,允许攻击者修改不应访问的字段 | | GraphQL 内省 | GraphQL 内置功能,暴露完整的 API schema,包括所有类型、字段和关系;生产环境应禁用 | | JWT | JSON Web Token;用于 API 认证的自包含令牌格式,包含用密钥对签名的声明 | | 速率限制 | 限制客户端在时间窗口内可发出的 API 请求数量的控制,防止暴力破解、枚举和滥用 |
背景:一家金融科技初创公司的移动银行应用具有 REST API 后端。API 处理账户管理、资金转账、账单支付和交易历史。测试人员拥有 Swagger 文档以及用户和管理员级别的账户。
方法:
/api/v1/accounts/{accountId}/transactions 上发现 BOLA,允许任何已认证用户查看任意账户的交易历史"dailyTransferLimit": 999999 可绕过配置的转账限制/api/v1/admin/users 可使用标准用户令牌访问(BFLA)常见陷阱:
## 发现:交易历史 API 中的对象级授权断裂
**ID**: API-001
**严重性**: 严重(CVSS 9.1)
**受影响端点**: GET /api/v1/accounts/{accountId}/transactions
**OWASP API 类别**: API1:2023 - 对象级授权断裂
**描述**:
交易历史端点在未验证已认证用户是否拥有该账户的情况下返回指定账户的所有交易。
任何已认证用户均可通过替换 accountId 路径参数查看任意账户的完整交易历史。
**概念验证**:
1. 以用户 A 身份认证(账户 ID:ACC-10045)
2. 请求:GET /api/v1/accounts/ACC-10046/transactions
Authorization: Bearer <用户A令牌>
3. 响应:200 OK,包含用户 B 的完整交易历史
**影响**:
任何已认证用户可查看所有 45,000 个客户账户的完整金融交易历史,
包括金额、日期、收款人和交易描述。
**修复建议**:
实施服务端授权检查,在返回数据前验证已认证用户是否拥有所请求的账户:
const account = await Account.findById(accountId);
if (account.userId !== req.user.id) return res.status(403).json({error: "Forbidden"});
testing
设计并执行社会工程学渗透测试,包括钓鱼、语音钓鱼、短信钓鱼和物理借口活动,以衡量人员安全韧性并识别培训差距。
testing
主持结构化的事件后审查,以识别根本原因、记录有效和无效的措施,并提出可操作的改进建议以提升未来的事件响应能力。
testing
通过分析举报的邮件、提取指标、评估凭据受攻陷情况、在全组织范围隔离恶意邮件并修复受影响账号来响应网络钓鱼事件。涵盖邮件头分析、URL/附件沙箱检测和邮箱范围清除操作。适用于网络钓鱼响应、邮件事件、凭据钓鱼、鱼叉式网络钓鱼调查或钓鱼修复相关请求。
tools
票据传递(Pass-the-Ticket,PtT)是一种横向移动技术,使用窃取的 Kerberos 票据(TGT 或 TGS)在不知道用户密码的情况下向服务进行认证。通过从已控制的主机内存中提取 Kerberos 票据,攻击者可以将这些票据注入自己的会话以模拟票据所有者。