JWT与OAuth令牌攻击
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/jwt-oauth-token-attacks-hwub。
技能介绍
解决的问题
现代Web应用广泛使用JWT和OAuth 2.0实现身份认证与授权,但开发者常因配置疏漏或对协议细节理解不足引入安全漏洞。例如JWT算法校验缺失导致令牌伪造、OAuth重定向地址验证不严引发令牌泄露,这些问题可能直接导致用户身份冒用或权限提升,传统功能测试往往难以覆盖这类协议层面的攻击面。
核心能力与工作方式
该技能围绕认证令牌攻击场景,提供结构化的攻击测试方法论:
- JWT攻击:覆盖
alg:none算法绕过、RS256→HS256密钥混淆、弱密钥暴力破解、kid/jku头注入等经典攻击。例如当服务端未校验签名算法时,可构造alg:none的无签名令牌;RS256场景下可利用公钥作为HMAC密钥伪造合法令牌。 - OAuth 2.0攻击:包括
state参数缺失导致的CSRF、redirect_uri路径匹配绕过、隐式流程令牌窃取、scope权限提升等。例如隐式流程中令牌通过URL fragment传递,若存在开放重定向可导致令牌泄露。 - 令牌泄露场景:总结
Referer头、服务器日志等常见泄露路径,指导识别令牌在HTTP请求或日志中的意外暴露。
适用边界与注意点
- 仅针对认证令牌相关的攻击场景,需结合目标应用的实际配置进行测试,不可直接套用所有场景。
- 涉及的暴力破解、注入等测试需在授权环境中进行,避免对生产系统造成影响。
- 部分攻击依赖具体实现细节(如
kid参数是否拼接SQL查询),需结合代码审计或动态测试验证。 - 不替代完整的安全审计流程,需与OWASP Top 10等标准配合使用。
使用场景
- 审计JWT认证的Web服务时,需要构造`alg:none`无签名令牌,验证服务端是否校验签名算法。
- 测试OAuth登录流程时,检查`state`参数是否缺失,验证能否通过CSRF劫持用户授权。
- 对采用RS256签名的应用,尝试用公钥作为HS256密钥构造令牌,验证密钥混淆漏洞。
- 排查令牌泄露时,检查接口是否在URL参数中携带access_token,评估Referer头或访问日志中的泄露风险。
适合人员
- 负责Web应用渗透测试的安全工程师,需要对OAuth/JWT认证流程做攻击面验证
- 设计OAuth授权服务的后端工程师,需要在上线前自查redirect_uri校验与PKCE配置
- 做代码审计的开发人员,需要定位JWT验签逻辑中kid、jku等参数拼接导致的注入风险
- 处理令牌泄露事件的运维人员,需要排查日志与Referer中的access_token残留