mirror of
https://github.com/Ed1s0nZ/CyberStrikeAI.git
synced 2026-05-07 01:56:40 +02:00
287 lines
4.4 KiB
Markdown
287 lines
4.4 KiB
Markdown
---
|
||
name: api-security-testing
|
||
description: API安全测试的专业技能和方法论
|
||
version: 1.0.0
|
||
---
|
||
|
||
# API安全测试
|
||
|
||
## 概述
|
||
|
||
API安全测试是确保API接口安全性的重要环节。本技能提供API安全测试的方法、工具和最佳实践。
|
||
|
||
## 测试范围
|
||
|
||
### 1. 认证和授权
|
||
|
||
**测试项目:**
|
||
- Token有效性验证
|
||
- Token过期处理
|
||
- 权限控制
|
||
- 角色权限验证
|
||
|
||
### 2. 输入验证
|
||
|
||
**测试项目:**
|
||
- 参数类型验证
|
||
- 数据长度限制
|
||
- 特殊字符处理
|
||
- SQL注入防护
|
||
- XSS防护
|
||
|
||
### 3. 业务逻辑
|
||
|
||
**测试项目:**
|
||
- 工作流验证
|
||
- 状态转换
|
||
- 并发控制
|
||
- 业务规则
|
||
|
||
### 4. 错误处理
|
||
|
||
**测试项目:**
|
||
- 错误信息泄露
|
||
- 堆栈跟踪
|
||
- 敏感信息暴露
|
||
|
||
## 测试方法
|
||
|
||
### 1. API发现
|
||
|
||
**识别API端点:**
|
||
```bash
|
||
# 使用目录扫描
|
||
gobuster dir -u https://target.com -w api-wordlist.txt
|
||
|
||
# 使用Burp Suite被动扫描
|
||
# 浏览应用,观察API调用
|
||
|
||
# 分析JavaScript文件
|
||
# 查找API端点定义
|
||
```
|
||
|
||
### 2. 认证测试
|
||
|
||
**Token测试:**
|
||
```http
|
||
# 测试无效Token
|
||
GET /api/user
|
||
Authorization: Bearer invalid_token
|
||
|
||
# 测试过期Token
|
||
GET /api/user
|
||
Authorization: Bearer expired_token
|
||
|
||
# 测试无Token
|
||
GET /api/user
|
||
```
|
||
|
||
**JWT测试:**
|
||
```bash
|
||
# 使用jwt_tool
|
||
python jwt_tool.py <JWT_TOKEN>
|
||
|
||
# 测试算法混淆
|
||
python jwt_tool.py <JWT_TOKEN> -X a
|
||
|
||
# 测试密钥暴力破解
|
||
python jwt_tool.py <JWT_TOKEN> -C -d wordlist.txt
|
||
```
|
||
|
||
### 3. 授权测试
|
||
|
||
**水平权限:**
|
||
```http
|
||
# 用户A访问用户B的资源
|
||
GET /api/user/123
|
||
Authorization: Bearer user_a_token
|
||
|
||
# 应该返回403
|
||
```
|
||
|
||
**垂直权限:**
|
||
```http
|
||
# 普通用户访问管理员接口
|
||
GET /api/admin/users
|
||
Authorization: Bearer user_token
|
||
|
||
# 应该返回403
|
||
```
|
||
|
||
### 4. 输入验证测试
|
||
|
||
**SQL注入:**
|
||
```http
|
||
POST /api/search
|
||
{
|
||
"query": "test' OR '1'='1"
|
||
}
|
||
```
|
||
|
||
**命令注入:**
|
||
```http
|
||
POST /api/execute
|
||
{
|
||
"command": "ping; id"
|
||
}
|
||
```
|
||
|
||
**XXE:**
|
||
```http
|
||
POST /api/parse
|
||
Content-Type: application/xml
|
||
|
||
<?xml version="1.0"?>
|
||
<!DOCTYPE foo [<!ENTITY xxe SYSTEM "file:///etc/passwd">]>
|
||
<foo>&xxe;</foo>
|
||
```
|
||
|
||
### 5. 速率限制测试
|
||
|
||
**测试速率限制:**
|
||
```python
|
||
import requests
|
||
|
||
for i in range(1000):
|
||
response = requests.get('https://target.com/api/endpoint')
|
||
print(f"Request {i}: {response.status_code}")
|
||
```
|
||
|
||
## 工具使用
|
||
|
||
### Postman
|
||
|
||
**创建测试集合:**
|
||
1. 导入API文档
|
||
2. 设置认证
|
||
3. 创建测试用例
|
||
4. 运行自动化测试
|
||
|
||
### Burp Suite
|
||
|
||
**API扫描:**
|
||
1. 配置API端点
|
||
2. 设置认证
|
||
3. 运行主动扫描
|
||
4. 分析结果
|
||
|
||
### OWASP ZAP
|
||
|
||
```bash
|
||
# API扫描
|
||
zap-cli quick-scan --self-contained \
|
||
--start-options '-config api.disablekey=true' \
|
||
http://target.com/api
|
||
```
|
||
|
||
### REST-Attacker
|
||
|
||
```bash
|
||
# 扫描OpenAPI规范
|
||
rest-attacker scan openapi.yaml
|
||
```
|
||
|
||
## 常见漏洞
|
||
|
||
### 1. 认证绕过
|
||
|
||
**Token验证缺陷:**
|
||
- 弱Token生成
|
||
- Token可预测
|
||
- Token不验证签名
|
||
|
||
### 2. 权限提升
|
||
|
||
**IDOR:**
|
||
- 直接对象引用
|
||
- 未验证资源所有权
|
||
|
||
### 3. 信息泄露
|
||
|
||
**错误信息:**
|
||
- 详细错误信息
|
||
- 堆栈跟踪
|
||
- 敏感数据
|
||
|
||
### 4. 注入漏洞
|
||
|
||
**常见注入:**
|
||
- SQL注入
|
||
- NoSQL注入
|
||
- 命令注入
|
||
- XXE
|
||
|
||
### 5. 业务逻辑
|
||
|
||
**逻辑缺陷:**
|
||
- 价格操作
|
||
- 数量限制绕过
|
||
- 状态修改
|
||
|
||
## 测试清单
|
||
|
||
### 认证测试
|
||
- [ ] Token有效性验证
|
||
- [ ] Token过期处理
|
||
- [ ] 弱Token检测
|
||
- [ ] Token重放攻击
|
||
|
||
### 授权测试
|
||
- [ ] 水平权限测试
|
||
- [ ] 垂直权限测试
|
||
- [ ] 角色权限验证
|
||
- [ ] 资源访问控制
|
||
|
||
### 输入验证
|
||
- [ ] SQL注入测试
|
||
- [ ] XSS测试
|
||
- [ ] 命令注入测试
|
||
- [ ] XXE测试
|
||
- [ ] 参数污染
|
||
|
||
### 业务逻辑
|
||
- [ ] 工作流验证
|
||
- [ ] 状态转换
|
||
- [ ] 并发控制
|
||
- [ ] 业务规则
|
||
|
||
### 错误处理
|
||
- [ ] 错误信息泄露
|
||
- [ ] 堆栈跟踪
|
||
- [ ] 敏感信息暴露
|
||
|
||
## 防护措施
|
||
|
||
### 推荐方案
|
||
|
||
1. **认证**
|
||
- 使用强Token
|
||
- 实现Token刷新
|
||
- 验证Token签名
|
||
|
||
2. **授权**
|
||
- 基于角色的访问控制
|
||
- 资源所有权验证
|
||
- 最小权限原则
|
||
|
||
3. **输入验证**
|
||
- 参数类型验证
|
||
- 数据长度限制
|
||
- 白名单验证
|
||
|
||
4. **错误处理**
|
||
- 统一错误响应
|
||
- 不泄露详细信息
|
||
- 记录错误日志
|
||
|
||
5. **速率限制**
|
||
- 实现API限流
|
||
- 防止暴力破解
|
||
- 监控异常请求
|
||
|
||
## 注意事项
|
||
|
||
- 仅在授权测试环境中进行
|
||
- 避免对API造成影响
|
||
- 注意不同API版本的差异
|
||
- 测试时注意请求频率 |