L’interface est localisée ; les présentations et documents des Skills sont traduits automatiquement par IA dans votre langue. Le code, les commandes, chemins et termes techniques restent en version originale, et le document de l’auteur fait foi.
Explorer les Skills
Développement · SKILL.md

testing-mobile-api-authentication

testing-mobile-api-authentication

测试移动应用 API 的认证与授权机制,识别认证失效、不安全的令牌管理、会话固定、 权限提升和 IDOR 漏洞。适用于对移动应用后端进行 API 安全评估、测试 JWT 实现、 评估 OAuth 流程或评估会话管理的场景。适合涉及移动 API 认证测试、令牌安全评估、 OAuth 移动端流程测试或 API 授权绕过的相关请求。

Independent GitHub snapshot · Automated classification · Original documentation governs

Documentation de la Skill

GitHub

name: testing-mobile-api-authentication description: > 测试移动应用 API 的认证与授权机制,识别认证失效、不安全的令牌管理、会话固定、 权限提升和 IDOR 漏洞。适用于对移动应用后端进行 API 安全评估、测试 JWT 实现、 评估 OAuth 流程或评估会话管理的场景。适合涉及移动 API 认证测试、令牌安全评估、 OAuth 移动端流程测试或 API 授权绕过的相关请求。 domain: cybersecurity subdomain: mobile-security author: mahipal tags: [mobile-security, android, ios, api-security, authentication, penetration-testing] version: 1.0.0 license: Apache-2.0

测试移动应用 API 认证

适用场景

适用于以下情况:

  • 在渗透测试中评估移动应用后端 API 认证机制
  • 测试 JWT 实现中的常见漏洞(none 算法、弱签名密钥)
  • 评估移动应用中 OAuth 2.0 / OIDC 流程的重定向、PKCE 和权限范围问题
  • 测试 API 端点中的 BOLA/IDOR(对象级授权失效)漏洞

不适用场景:未经明确授权且无速率限制意识,不得对生产 API 使用此技能。

前置条件

  • Burp Suite 或 mitmproxy 已配置为移动设备代理
  • 目标应用已绕过 SSL 固定(如已实现)
  • 目标应用的有效测试账户凭据
  • Postman 或 curl 用于构造 API 请求
  • jwt.io 或 PyJWT 用于 JWT 分析与篡改

工作流程

步骤 1:映射认证端点

拦截移动应用流量,识别认证相关端点:

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             - 已认证用户信息

步骤 2:分析 Token 格式与安全性

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 是否失效

步骤 3:测试认证绕过

# 测试无认证访问
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>"

步骤 4:测试 IDOR(对象级授权失效)

# 修改请求路径中的用户 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>"

步骤 5:测试会话管理

# 测试并发会话
# 从多台设备同时登录——两个会话是否均保持有效?

# 测试登出后 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 应在修改后失效

步骤 6:测试 OAuth 2.0 / OIDC 移动端流程

# 测试授权码拦截
# 检查是否强制使用 PKCE(Proof Key for Code Exchange)
# 测试缺少 code_verifier 参数的情况

# 测试重定向 URI 操纵
# 尝试自定义 Scheme 劫持:myapp://callback
# 测试修改 redirect_uri 参数

# 测试权限范围提升
# 请求超出已授权的权限范围

核心概念

术语定义
BOLA/IDOR对象级授权失效——通过修改标识符访问资源,而服务端未进行授权检查
JWTJSON Web Token——包含 Header、Payload 和 Signature 的自包含认证令牌
PKCEProof Key for Code Exchange——防止移动应用授权码被拦截的 OAuth 2.0 扩展
Token 刷新使用长期有效的刷新令牌获取新访问令牌的机制,无需重新认证
会话固定(Session Fixation)攻击者在受害者认证前预设已知会话 ID,随后劫持该会话的攻击方式

工具与系统

  • Burp Suite:HTTP 代理,用于拦截和修改认证请求
  • jwt_tool:Python 工具,用于测试 JWT 漏洞(none 算法、密钥混淆、声明篡改)
  • Postman:API 测试客户端,用于构造认证请求
  • hashcat:密码/JWT secret 爆破工具,用于测试 HMAC 签名密钥强度
  • Autorize:Burp Suite 插件,用于自动化授权测试

常见问题

  • 速率限制掩盖问题:API 可能对测试请求进行速率限制。需在请求间添加延迟,并先从测试者已授权的视角进行测试。
  • URL 中的 Token:部分移动 API 将 Token 作为 URL 查询参数传递,使其暴露在服务器日志和浏览器历史中。即使授权功能正常,也应标记为发现项。
  • 刷新令牌轮换:部分 API 在每次使用刷新令牌后进行轮换。若测试使刷新令牌失效,可能导致测试账户被锁定。
  • 移动端特定 OAuth:移动应用使用自定义 URI Scheme 进行 OAuth 重定向,可能被注册了相同 Scheme 的恶意应用拦截。
Skills enregistrées