Postman来做API安全测试:身份验证缺陷漏洞测试
Postman来做API安全测试:身份验证机制的缺陷通常会导致攻击者能够越权访问本不应访问的数据或功能。
1. 测试缺失或无效的身份验证
测试方法:直接访问需要认证的 API 端点,但不提供任何认证凭证(如不发送 Token、API Key 等)。
Postman 操作:
创建一个新的 GET 或 POST 请求,指向需要认证的端点(例如 /api/v1/users/me)。
删除 Headers 或 Auth 选项卡中的所有认证信息。
发送请求。
结果:如果 API 返回 200 OK 并显示了敏感数据,而不是 401 Unauthorized 或 403 Forbidden,则存在严重的安全漏洞。
2. 测试弱签名或可预测的令牌
测试方法:篡改 JWT(JSON Web Token)或其他令牌的 payload 部分,验证服务器是否正确地验证了签名。
Postman 操作:
正常登录获取一个 JWT Token。
访问 jwt.io,将 Token 解码。
修改 payload 中的数据(例如,将用户名 user 改为 admin,或将用户 ID user_id: 1001 改为 user_id: 1)。
将篡改后的 Token 复制回 Postman 的 Authorization 头(通常为 Bearer <篡改后的Token>)。
再次访问需要高权限的端点(例如 /api/v1/admin/users)。
结果:如果服务器接受了被篡改的 Token 并返回了管理员数据,说明其未验证签名,存在严重漏洞。
3. 测试令牌失效机制
测试方法:登出后,尝试继续使用旧的 Token 访问 API。
Postman 操作:
使用一个有效的 Token 访问 /api/logout 端点(或任何使令牌失效的端点)。
不改变 Postman 中的任何设置,立即再次使用同一个 Token 访问受保护的端点(如 /api/v1/users/me)。
结果:服务器应立即使该 Token 失效,并返回 401 Unauthorized。如果请求仍然成功,则存在漏洞。
4. 测试权限提升(垂直越权)
测试方法:使用低权限用户(如普通用户)的 Token,去访问高权限(如管理员)的 API 端点。
Postman 操作:
准备两个环境的 Collection:一个使用 UserA 的 Token,另一个使用 UserB(权限更低)的 Token。
使用 UserB 的 Token 去尝试执行 UserA 的操作,例如访问 DELETE /api/v1/users/{UserA'sID} 或 POST /api/v1/admin/create-user。
结果:服务器应始终返回 403 Forbidden。如果操作成功,则存在权限提升漏洞。