服务器端漏洞篇 | API测试专题
字数 965 2025-08-20 18:18:10
API测试专题教学文档
1. API测试概述
1.1 API基本概念
- 定义:API(Application Programming Interfaces)是应用程序编程接口,使软件系统和应用程序能够通信和共享数据
- 重要性:API中的漏洞可能破坏网站的机密性、完整性和可用性
- 范围:所有动态网站都由API组成,因此传统Web漏洞(如SQL注入)也可归类为API测试
1.2 API测试重点
- RESTful API
- JSON API
2. API信息收集
2.1 确定API端点
- 示例:
GET /api/books HTTP/1.1 - 可能存在的其他端点:
/api/books/mystery等
2.2 交互方式分析
-
输入数据:
- 必选参数
- 可选参数
-
请求类型:
- 支持的HTTP方法(GET, POST, PUT, DELETE等)
- 接受的媒体格式(JSON, XML等)
-
安全机制:
- 速率限制
- 身份验证机制
3. API文档利用
3.1 API文档类型
-
人类可读文档:
- 详细解释
- 使用示例
- 应用场景
-
机器可读文档:
- JSON或XML格式
- 用于自动化集成和验证
3.2 发现API文档的常见路径
/api/swagger/index.html/openapi.json/api/swagger/v1/api/swagger
4. 实战案例解析
4.1 靶场示例:利用API端点删除用户
目标:找到删除用户的API端点并删除carlos
步骤:
- 登录测试用户wiener
- 修改邮箱触发API请求:
PATCH /api/user/wiener {"email":"wienerr@normal-user.net"} - 分析API端点规则
- 尝试删除wiener用户(会报错)
- 继续测试API端点结构
- 最终发现三个API端点信息
- 构造删除请求:
DELETE /api/user/carlos
5. 最佳实践建议
- 全面测试:对所有发现的API端点进行测试
- 方法覆盖:尝试所有HTTP方法,即使文档中未提及
- 参数测试:测试所有参数,包括可选参数
- 错误处理:通过错误信息获取更多API信息
- 文档利用:充分利用可获得的API文档
6. 常见API漏洞类型
- 认证和授权缺陷
- 注入漏洞(SQL, NoSQL, 命令注入等)
- 敏感数据暴露
- 速率限制缺失
- 错误配置
- 业务逻辑缺陷
7. 测试工具推荐
- Burp Suite
- Postman
- OWASP ZAP
- SoapUI
- cURL