金色时刻 · 15:48
让好资源,触手可及
AGENT SKILL

api-security-testing

api-security-testing 是面向测试与安全的 Agent Skill,来自 Ed1s0nZ/CyberStrikeAI。查看技能说明、操作步骤与使用约定,并通过原项目了解详细用法。

API安全测试的专业技能和方法论

SKILL.md

下载 MD ↓
nameapi-security-testing
descriptionAPI安全测试的专业技能和方法论
version1.0.0

API安全测试

概述

API安全测试是确保API接口安全性的重要环节。本技能提供API安全测试的方法、工具和最佳实践。

测试范围

1. 认证和授权

测试项目: - Token有效性验证 - Token过期处理 - 权限控制 - 角色权限验证

2. 输入验证

测试项目: - 参数类型验证 - 数据长度限制 - 特殊字符处理 - SQL注入防护 - XSS防护

3. 业务逻辑

测试项目: - 工作流验证 - 状态转换 - 并发控制 - 业务规则

4. 错误处理

测试项目: - 错误信息泄露 - 堆栈跟踪 - 敏感信息暴露

测试方法

1. API发现

识别API端点:

# 使用目录扫描
gobuster dir -u https://target.com -w api-wordlist.txt

# 使用Burp Suite被动扫描
# 浏览应用,观察API调用

# 分析JavaScript文件
# 查找API端点定义

2. 认证测试

Token测试:

# 测试无效Token
GET /api/user
Authorization: Bearer invalid_token

# 测试过期Token
GET /api/user
Authorization: Bearer expired_token

# 测试无Token
GET /api/user

JWT测试:

# 使用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. 授权测试

水平权限:

# 用户A访问用户B的资源
GET /api/user/123
Authorization: Bearer user_a_token

# 应该返回403

垂直权限:

# 普通用户访问管理员接口
GET /api/admin/users
Authorization: Bearer user_token

# 应该返回403

4. 输入验证测试

SQL注入:

POST /api/search
{
  "query": "test' OR '1'='1"
}

命令注入:

POST /api/execute
{
  "command": "ping; id"
}

XXE:

POST /api/parse
Content-Type: application/xml

<?xml version="1.0"?>
<!DOCTYPE foo [<!ENTITY xxe SYSTEM "file:///etc/passwd">]>
<foo>&xxe;</foo>

5. 速率限制测试

测试速率限制:

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

# API扫描
zap-cli quick-scan --self-contained \
  --start-options '-config api.disablekey=true' \
  http://target.com/api

REST-Attacker

# 扫描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版本的差异
  • 测试时注意请求频率

来源:Ed1s0nZ/CyberStrikeAI · Apache-2.0 许可 · 许可原文 · MD 为来源页保存的历史版本