Py学习  »  Git

【$1,060】GitLab HTML 注入漏洞

骨哥说事 • 15 小时前 • 13 次点击  

声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由用户承担全部法律及连带责任,文章作者不承担任何法律及连带责任。


文章原文:https://gugesay.com/archives/3470

不想错过任何消息?设置星标↓ ↓ ↓




前言

假如 GitLab 配置为使用soft电子邮件确认设置,那么攻击者可以通过注册帐户并登录,然后更改包含 HTML Payloads的电子邮件,从而实施攻击。

如果管理员手动验证攻击者的电子邮件地址,则可能会在模式确认对话框中执行 HTML 代码。在显示之前,

 和  等标记似乎会被过滤掉。

https://gitlab.com/gitlab-org/gitlab/-/blob/master/app/helpers/users_helper.rb 中的confirm_user_data方法有助于演示实现这一功能所需的条件:

我们需要通过 if user.unconfirmed_email.present? 检查才能在对话框中显示电子邮件。

这种情况只有在攻击者使用电子邮件确认注册账户,然后更改电子邮件时才会发生。如果攻击者设置后将电子邮件确认更改为 Hard,则攻击者仍会触发该漏洞,但新注册似乎会遵循 else 条件(那么电子邮件则不会显示在对话框内)。

漏洞复现

先决条件(管理员帐户):

  1. 转到Admin general settings页面 ( http://gitlab.example.com/admin/application_settings/general )

  2. 扩大注册限制并将“电子邮件确认设置”设置为“Soft”。

  3. 保存更改

(攻击者)步骤:

  1. 上注册一个帐户(例如,用户名:AttackerSoftEmail ,电子邮件:attackersoftemail@example.com )

  2. 登录帐户,然后在屏幕顶部会看到一条消息,“请检查你的电子邮件 ( attackersoftemail@example.com ) 以验证是否拥有此地址并解锁 CI/CD 的功能。没有收到它?电子邮件地址错误?请重新发送。”

  3. 转到用户的个人资料 ( http://gitlab.example.com/-/profile )

  4. 更改电子邮件地址,附加 

    testing

     到邮件地址末尾

  1. 保存更改

  2. (可选)通过在空目录中运行python3 -m http.server来启动 python3 Web 服务器以捕获 Web 请求

(受害者)步骤:

  1. 以管理员/root 身份登录 GitLab

  2. 导航到管理员用户面板并选择 AttackerSoftEmail 用户 ( http://gitlab.example.com/admin/users/AttackerSoftEmail )

  3. 请注意 AttackerSoftEmail 的电子邮件地址不包含 HTML

  1. 使用F12打开浏览器开发工具并导航到“Network”选项卡

  2. 对话框文本由于

    标头而被修改,并且对话框中出现损坏的图像

  3. 确认使用浏览器请求的网络选项卡 http://localhost:8000/test.png 如果 python 服务器正在运行,则返回 404

该漏洞最终通过CVSS定级为“低危”,GitLab 向白帽用户发放1060美元的赏金奖励。

以上内容由骨哥翻译并整理。

原文:https://hackerone.com/reports/1935628

加入星球,随时交流:


(前50位成员):99元/年
(后续会员统一定价):128元/年

感谢阅读,如果觉得还不错的话,欢迎分享给更多喜爱的朋友~

====正文结束====

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/174997
 
13 次点击