协作头脑风暴
brainstorming
在实现前澄清需求、探索设计选择,并形成清晰的开发方向。
testing-mobile-api-authentication【开发与工程】测试移动应用 API 的认证与授权机制,识别认证失效、不安全的令牌管理、会话固定、 权限提升和 IDOR 漏洞。适用于对移动应用后端进行 API 安全评估、测试 JWT 实现、 评估 OAuth 流程或评估会话管理的场景。适合涉及移动 API 认证测试、令牌安全评估、 OAuth 移动端流程测试或 API 授权绕过的相关请求。
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
适用于以下情况:
不适用场景:未经明确授权且无速率限制意识,不得对生产 API 使用此技能。
拦截移动应用流量,识别认证相关端点:
POST /api/v1/auth/login - 初始认证
POST /api/v1/auth/register - 账户注册
POST /api/v1/auth/refresh - Token 刷新
POST /api/v1/auth/logout - 会话终止
POST /api/v1/auth/forgot-password - 密码重置
POST /api/v1/auth/verify-otp - OTP 验证
GET /api/v1/auth/me - 已认证用户信息
JWT 分析:
# 不验证签名直接解码 JWT
echo "eyJhbGciOiJIUzI1NiIs..." | cut -d. -f2 | base64 -d 2>/dev/null
# 检查常见 JWT 漏洞:
# 1. None 算法攻击
# 修改 Header 为:{"alg":"none","typ":"JWT"}
# 去掉签名:header.payload.
# 2. 算法混淆(RS256 改为 HS256)
# 若服务器使用 RS256,尝试以公钥作为 secret 使用 HS256
# 3. 弱签名密钥
# 使用 hashcat 或 jwt-cracker 爆破 HMAC secret
hashcat -m 16500 jwt.txt wordlist.txt
# 4. 过期时间绕过
# 修改 "exp" 声明为未来时间戳
不透明 Token 分析:
- 测试 Token 长度和熵值
- 检查 Token 是否具有顺序性或可预测性
- 测试登出后 Token 是否可复用
- 验证密码修改后 Token 是否失效
# 测试无认证访问
curl -X GET https://api.target.com/api/v1/users/profile
# 使用空/null Token 测试
curl -X GET https://api.target.com/api/v1/users/profile \
-H "Authorization: Bearer "
curl -X GET https://api.target.com/api/v1/users/profile \
-H "Authorization: Bearer null"
# 使用过期 Token 测试(应返回失败)
curl -X GET https://api.target.com/api/v1/users/profile \
-H "Authorization: Bearer <过期_token>"
# 使用其他用户 Token 测试
curl -X GET https://api.target.com/api/v1/users/123/profile \
-H "Authorization: Bearer <用户456的_token>"
# 修改请求路径中的用户 ID
curl -X GET https://api.target.com/api/v1/users/123/orders \
-H "Authorization: Bearer <用户456的_token>"
# 修改请求体中的对象 ID
curl -X PUT https://api.target.com/api/v1/orders/789 \
-H "Authorization: Bearer <用户456的_token>" \
-d '{"status": "cancelled"}'
# 测试横向权限提升
# 使用普通用户 Token 访问管理员端点
curl -X GET https://api.target.com/api/v1/admin/users \
-H "Authorization: Bearer <普通用户_token>"
# 测试并发会话
# 从多台设备同时登录——两个会话是否均保持有效?
# 测试登出后 Token 失效
TOKEN=$(curl -s -X POST https://api.target.com/api/v1/auth/login \
-d '{"email":"test@test.com","password":"pass"}' | jq -r '.token')
# 执行登出
curl -X POST https://api.target.com/api/v1/auth/logout \
-H "Authorization: Bearer $TOKEN"
# 尝试使用相同 Token(应返回失败)
curl -X GET https://api.target.com/api/v1/users/me \
-H "Authorization: Bearer $TOKEN"
# 测试密码修改后 Token 失效
# 密码修改前获取的 Token 应在修改后失效
# 测试授权码拦截
# 检查是否强制使用 PKCE(Proof Key for Code Exchange)
# 测试缺少 code_verifier 参数的情况
# 测试重定向 URI 操纵
# 尝试自定义 Scheme 劫持:myapp://callback
# 测试修改 redirect_uri 参数
# 测试权限范围提升
# 请求超出已授权的权限范围
| 术语 | 定义 |
|---|---|
| BOLA/IDOR | 对象级授权失效——通过修改标识符访问资源,而服务端未进行授权检查 |
| JWT | JSON Web Token——包含 Header、Payload 和 Signature 的自包含认证令牌 |
| PKCE | Proof Key for Code Exchange——防止移动应用授权码被拦截的 OAuth 2.0 扩展 |
| Token 刷新 | 使用长期有效的刷新令牌获取新访问令牌的机制,无需重新认证 |
| 会话固定(Session Fixation) | 攻击者在受害者认证前预设已知会话 ID,随后劫持该会话的攻击方式 |