
作为测试的一部分,首先需要确认应用使用了哪种OAuth实现方式,例如:
response_type=tokenresponse_type=code检查以下标准端点,这有助于我们了解应用支持或预期的范围(scopes)等信息:
/.well-known/oauth-authorization-server//.well-known/openid-configuration检查是否存在开放重定向(Open Redirect)漏洞,即测试重定向URI验证不足的情况。参考常见的绕过手法。
示例 (来自 OWASP WSTG):
攻击者控制的回调域为 client.evil.com,目标是诱使OAuth流程将授权码发送到攻击者的域名。
https://as.example.com/authorize?client_id=example-client&redirect_uri=http%3A%2F%client.evil.com%2F&state=example&response_mode=fragment&response_type=code&scope=openid&nonce=exampleclient_id。client_id,或者测试人员能够通过动态客户端注册等方式在授权服务器上注册新的client_id。redirect_uri。示例 (来自 OWASP WSTG):
POST /oauth/token HTTP/1.1
Host: as.example.com
[...]
{"client_id":"example-client","code":"INJECT_CODE_HERE","grant_type":"authorization_code","redirect_uri":"https://client.example.com"}重放此请求,如果响应返回了访问令牌(Access Tokens)、刷新令牌(Refresh Token)等,请将其作为安全发现提交。
测试是否存在PKCE降级攻击的可能。
检查OAuth流程中是否存在服务端请求伪造(SSRF)漏洞。
state 参数是否存在。如果不存在,可能存在跨站请求伪造(CSRF)风险。state 参数存在,检查其是否被验证以及是否足够随机。OAuth流程中的CSRF测试通常在“用户授权页面”进行。示例 (来自 OWASP WSTG):
POST /u/consent?state=Tampered_State HTTP/1.1
Host: as.example.com
[...]
state=MODIFY_OR_OMIT_THIS&audience=https%3A%2F%2Fas.example.com%2Fuserinfo&scope%5B%5D=profile&scope%5B%5D=email&action=accept测试授权页面是否存在点击劫持风险。CSP的 frame-ancestors 指令和/或 X-Frame-Options 标头是有效的缓解措施。
测试JWT令牌(如访问令牌、刷新令牌)的生命周期是否设置合理。
检查是否可以升级授权范围。例如,如果初始 scope=openid%20email,能否将其升级为 scope=openid%20email%20profile?
在OpenID Connect中,检查配置是否支持动态客户端注册。这可能引入SSRF等风险。
如果使用隐式流程,检查 response_mode 是否未设置为 form_post。若未设置,令牌可能因作为URL的一部分而泄露。
“如果
response_mode未设置为form_post,隐式流程会将授权令牌作为URL的一部分传输。这可能导致请求的令牌或代码通过Referrer头、日志文件和代理服务器泄露,因为这些参数是通过查询字符串或片段标识符传递的。” — OWASP WSTG
检查OAuth流程涉及的端点是否缺失必要的安全头,如:CSP(需配置恰当的指令)、HSTS、Referrer Policy、Permission Policy、X-Frame-Options、X-Content-Type-Options等。
检查OAuth流程涉及的端点是否存在CORS配置错误,例如设置了 Access-Control-Allow-Origin: *,或者允许任意域名的Origin。
检查OAuth流程涉及的端点是否使用了未加密的网络连接。
适用于客户端直接接收访问令牌的响应类型(如隐式授权类型)。测试是否存在访问令牌注入的风险。
redirect_uri 参数必须与预期的URI完全一致)。state 参数)和反点击劫持头(如CSP的 frame-ancestors 指令和/或 X-Frame-Options)。原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。