随着微服务与云原生架构的普及,API已成为企业核心业务的关键入口。然而,OWASP API Security Top 10报告显示,75%的API漏洞源于身份验证缺失、数据过度暴露和业务逻辑缺陷。本文从渗透测试视角出发,系统性梳理18个API安全测试技巧及配套工具,覆盖漏洞挖掘、自动化审计与实战防御场景。
一、身份验证与授权漏洞挖掘
-
1. JWT令牌破解 -
• 技巧:检查JWT是否使用弱加密算法(如HS256密钥过短)、是否缺失有效期验证。 -
• 工具: -
• jwt_tool
:爆破密钥、伪造令牌(命令示例:jwt_tool <JWT> -C -d wordlist.txt
) -
• Burp Suite JWT Editor
:实时修改JWT声明并重放请求。 -
• 防御:强制使用RS256/ES256算法,设置合理的 exp
和nbf
时间戳。 -
2. OAuth 2.0授权码劫持 -
• 攻击路径:窃取 authorization_code
、滥用redirect_uri
参数实现CSRF。 -
• 测试方法: -
• 修改 redirect_uri
为攻击者可控域名,观察是否跳转并携带code。 -
• 使用 Postman
模拟OAuth流程,检查state
参数是否缺失或可预测。 -
• 工具: OAuth Tester
(Burp插件)自动化检测配置错误。 -
3. API密钥泄露 -
• 检测点:客户端代码、Git历史记录、日志文件、公共文档。 -
• 工具: -
• TruffleHog
:扫描Git仓库中的敏感信息(API密钥、密码)。 -
• Gitleaks
:实时监控代码提交中的密钥泄露。 -
• 案例:某电商平台因API密钥硬编码至前端JS文件,导致百万用户数据泄露。 -
4. 水平越权(IDOR) -
• 技巧:修改请求中的用户ID、订单号等参数,验证资源访问控制。 -
• 工具: Autorize
(Burp插件)自动检测越权漏洞。 -
• Payload示例:将 GET /api/user/123/profile
改为GET /api/user/456/profile
。
二、输入验证与注入攻击
-
5. SQL注入绕过 -
• API特征:RESTful路径参数、GraphQL查询易成注入点。 -
• 测试方法: -
• 发送畸形参数: /api/users?id=1'%20OR%201=1--
-
• GraphQL查询: {user(id:"1' UNION SELECT null,version()--"){name}}
-
• 工具: SQLmap
(设置--level=5
检测复杂注入点)。 -
6. NoSQL注入检测 -
• 漏洞场景:MongoDB、Redis等使用JSON格式传参。 -
• Payload示例: {"username":{"$ne":""},"password":{"$exists":true}}
-
• 工具: NoSQLi
(Burp插件)自动化生成攻击向量。 -
7. XXE漏洞利用 -
• 触发条件:API接收XML格式输入且未禁用外部实体解析。 -
• 攻击载荷: <?xml version="1.0"?>
<!DOCTYPE data [ <!ENTITY xxeSYSTEM"file:///etc/passwd"> ]>
<user><name>&xxe;</name></user> -
• 工具: XXEinjector
自动化测试文件读取、SSRF等场景。 -
8. SSRF(服务端请求伪造) -
• 检测点:URL参数、Webhook回调地址、文件导入功能。 -
• 技巧: -
• 尝试访问内网服务: http://169.254.169.254/latest/meta-data/
-
• 使用DNS重绑定技术绕过限制。 -
• 工具: SSRFmap
自动化枚举内网资产。
三、业务逻辑与配置缺陷
-
9. 批量分配漏洞(Mass Assignment) -
• 原理:API未过滤客户端传入的敏感字段(如 isAdmin=true
)。 -
• 测试步骤: -
1. 拦截正常请求,添加额外参数(如 role=admin
)。 -
2. 重放请求并检查响应是否生效。 -
• 工具: Burp Suite
的Match and Replace
功能自动添加参数。 -
10. 速率限制绕过 -
• 绕过方法: -
• 修改 X-Forwarded-For
头伪造IP。 -
• 使用不同API密钥或JWT令牌轮询请求。 -
• 工具: Wfuzz
并发测试(-t 100 -p 3
设置线程与延迟)。 -
11. CORS配置错误 -
• 检测:检查 Access-Control-Allow-Origin
是否包含*
或可控域名。 -
• 利用:构造恶意页面发起跨域请求,窃取用户数据。 -
• 工具: CORS Scanner
(Chrome插件)快速识别风险配置。
四、自动化与高级测试工具
-
12. Postman自动化测试 -
• 场景:编写测试脚本验证API响应状态、数据完整性。 -
• 示例脚本: pm.test("Status code is 200", () => pm.response.to.have.status(200));
pm.test("Response time < 500ms", () => pm.expect(pm.response.responseTime).to.be.below(500)); -
13. OWASP ZAP -
• 功能:主动/被动扫描、身份认证爬虫、API Swagger导入。 -
• 技巧:导入OpenAPI文档生成测试用例,覆盖率高。 -
14. APIFuzzer -
• 定位:专用API模糊测试工具,支持GraphQL、gRPC。 -
• 策略:基于语法变异的参数篡改(如边界值、异常数据类型)。 -
15. Nuclei模板引擎 -
• 优势:社区模板库覆盖API漏洞(CVE-2023-1234等)。 -
• 命令: nuclei -t api/ -u https://target.com/api/v1
。
五、云原生与微服务API安全
-
16. Kubernetes API审计 -
• 风险点:未鉴权的 /api/v1/pods
、/apis/extensions/v1beta1
。 -
• 工具: kube-hunter
扫描集群配置缺陷。 -
17. Serverless函数注入 -
• 案例:AWS Lambda函数未校验输入,导致命令执行。 -
• 测试:向事件参数注入 ; whoami
等系统命令。 -
18. GraphQL渗透测试 -
• 工具: -
• GraphQLmap
:自动化注入(./graphqlmap.py -u http://api.com/graphql -i
)。 -
• InQL Scanner
(Burp插件)可视化分析Schema。 -
• 技巧:利用 __typename
探测内省查询是否开放。
六、防御加固与最佳实践
技术防御:
-
• 启用严格的CORS策略,禁用 Access-Control-Allow-Origin: *
。 -
• 对所有API请求实施速率限制(如令牌桶算法)。 -
• 使用OpenAPI规范明确定义输入输出模型。
管理措施:
-
• 建立API资产清单,定期更新漏洞扫描规则。 -
• 对第三方API依赖进行供应链安全评估。 -
• 实施威胁建模(STRIDE),识别高风险接口。
监控与响应:
-
• 部署API网关日志分析(如ELK + Wazuh)。 -
• 设置异常行为告警(如单IP高频调用、非常规参数出现)。
总结
API渗透测试绝非简单的工具堆砌,需结合业务逻辑深度分析。建议采用**“三步走”策略**:
-
1. 资产梳理:基于Swagger/OpenAPI文档建立测试边界。 -
2. 自动化扫描:使用ZAP、Nuclei覆盖基础漏洞。 -
3. 人工验证:针对业务流定制测试用例,挖掘深层逻辑漏洞。
原文始发于微信公众号(HACK之道):18个API渗透测试技巧及工具(2025实战手册)
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论