V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
raysonlu
V2EX  ›  GitLab

gitlab 被攻击了!求大佬进来分析一下

  •  
  •   raysonlu · 2021-08-13 15:41:47 +08:00 · 7758 次点击
    这是一个创建于 1206 天前的主题,其中的信息可能已经有所发展或是发生改变。

    收到一个安全监控警告:

    img

    高亮部分就是一串命令,用 gitlab-rails runner 执行了一个创建管理员的命令!

    gitlab 版本是 CE 的 13.10.2

    里面的项目,没有用过 hook,也没有用流水线,因为团队的都不会用。

    目前对于这个安全事故排查毫无头绪,完全不知道怎样注入,怎样执行的,有无大佬指导一下(哭

    31 条回复    2022-02-25 13:58:27 +08:00
    misaka19000
        1
    misaka19000  
       2021-08-13 15:44:27 +08:00
    你也把命令贴出来啊
    InternetExplorer
        2
    InternetExplorer  
       2021-08-13 15:44:35 +08:00
    可能团队里有人在做渗透测试?
    hly9469
        3
    hly9469  
       2021-08-13 15:50:11 +08:00 via iPhone
    你指着大佬一个个字母敲来复现?哈哈哈哈
    raysonlu
        4
    raysonlu  
    OP
       2021-08-13 15:52:56 +08:00
    @misaka19000
    @InternetExplorer
    @hly9469

    我以为这个命令的具体,对分析没什么意义,我也贴一下吧:
    gitlab-rails runner "user = User.create(username: 'dexbcx',password:'12345678',email:'[email protected]',name:'dexbcx',confirmed_at: '2021-08-11 16:46:53'); user.admin=true; user.save;"
    Rwing
        5
    Rwing  
       2021-08-13 15:54:42 +08:00
    1.不要开放外网
    2.勤升级,他们团队一周一个补丁不是闹着玩的
    raysonlu
        6
    raysonlu  
    OP
       2021-08-13 15:56:35 +08:00
    @Rwing gitlab 的安全性这么感人的吗?安排升级操作了,但想知道怎么死也没办法?
    jay4497
        7
    jay4497  
       2021-08-13 16:06:10 +08:00
    既然没人用流水线,就把 runner 服务关掉吧,没那么多事
    raysonlu
        8
    raysonlu  
    OP
       2021-08-13 16:13:29 +08:00
    @jay4497 怎样关闭 runner 服务?目前只是各个项目里面关闭了流水线功能。
    raysonlu
        9
    raysonlu  
    OP
       2021-08-13 16:14:54 +08:00
    @jay4497 但我对这个命令是不是流水线作为入口,进行注入并执行的,也不太确定,找不到任何的蛛丝马迹。
    polaa
        10
    polaa  
       2021-08-13 16:19:58 +08:00
    和关不关 runner 无关

    你这版本这么低

    看一下 gitlab security release 就有一些 code injection
    jay4497
        11
    jay4497  
       2021-08-13 16:24:52 +08:00
    @raysonlu 安全小白,也不太懂,但以前折腾过这个 runner,需要配置啥的才能用上流水线功能,具体的你看看文档吧 docs.gitlab.com/runner/
    raysonlu
        12
    raysonlu  
    OP
       2021-08-13 16:26:27 +08:00
    @polaa 这个版本还低? 13 系列的最高版本是哪个?
    polaa
        13
    polaa  
       2021-08-13 16:31:56 +08:00
    最新一个 release

    GitLab Security Release: 14.1.2, 14.0.7, and 13.12.9 for GitLab Community Edition (CE)
    raysonlu
        14
    raysonlu  
    OP
       2021-08-13 16:34:25 +08:00
    @polaa 想知道怎样获取这些信息,以及如何更新小版本?网上看到更新的方法,都是备份,然后重装?
    polaa
        15
    polaa  
       2021-08-13 16:39:44 +08:00
    官网都有吧
    yw9381
        16
    yw9381  
       2021-08-13 16:54:15 +08:00 via Android
    看了下应该大概能给你复原出来攻击场景,首先你的 gitlab 应该是开放了注册或者有人有弱口令。之后攻击者创建或是修改了某个仓库,并在其中加入了.gitlab-ci.yml 。然后触发了 ci 操作。因为你 gitlab 和 gitlab runner 都在一个机器上部署。所以 runmer 是可以访问到本机的 pgsql 的。攻击者在 runner 的 ci 脚本里写了那句 sh -c xxxx 。在 4 楼的解码后也可以看到攻击者创建了一个名为 dexbcx 的管理员用户。后续的攻击动作因为没提供更多信息就不得而知了。
    也有可能整个事情是个误报。你只是想创建一个名为 dexbcx 的管理员用户。结果 gitlab 对创建用户的底层实现是通过 sh -c 的形式运行命令(这条感觉不太可能)
    yw9381
        17
    yw9381  
       2021-08-13 16:56:23 +08:00 via Android
    个人觉得这是一个安全配置问题。并不算是有漏洞。安全缺陷和漏洞是两码事。不过还是建议你们内部自查一下弱口令这些。还有相应的权限管控。
    raysonlu
        18
    raysonlu  
    OP
       2021-08-13 16:59:18 +08:00
    @yw9381 没有开放注册。如果必须要通过上传或修改一个.gitlab-ci.yml 文件的话,是不是我能在每个项目中找回这个记录?
    raysonlu
        19
    raysonlu  
    OP
       2021-08-13 17:01:43 +08:00
    @polaa 在官网逛了很久,确实没找到,麻烦大佬贴一下路径,或者链接?
    raysonlu
        20
    raysonlu  
    OP
       2021-08-13 17:13:43 +08:00
    @yw9381 补充一下,我逐个项目看,找不到.gitlab-ci.yml 文件,以及在 /var/opt/gitlab/git-data/repositories 路径中,find ./ -name "*gitlab*",找不到。
    polaa
        21
    polaa  
       2021-08-13 17:27:51 +08:00
    about gitlab com/releases
    docs gitlab com/ce/update

    加上 .

    简单说一下 你这个版本收到各种 XSS 未授权访问操作 文件上传 信息泄露等漏洞影响

    这些漏洞组合起来存在很多攻击方式



    举例:
    Stealing GitLab OAuth access tokens using XSLeaks in Safari
    Unauthenticated CI lint API may lead to information disclosure and SSRF
    Remote code execution when uploading specially crafted image files
    raysonlu
        22
    raysonlu  
    OP
       2021-08-13 17:39:26 +08:00
    @polaa 怪不得我看 gitlab 的访问日志中,超多类似“{domain}/项目组名 /项目名字.git/info/refs?service=git-upload-pack”的路径访问,而且 IP 都是境外!
    另外想问一下,我现在的 13.10.2,我是应该升级到 13.12.9,还是 14 的最新版本呢?
    zhighest
        24
    zhighest  
       2021-08-13 18:55:54 +08:00
    zhighest
        25
    zhighest  
       2021-08-13 18:56:24 +08:00
    wangkun025
        26
    wangkun025  
       2021-08-13 19:00:27 +08:00
    就创建了一个管理员级别的用户。然后估计可以为所欲为了。反正 git 的 repo 应该都被查看过了。
    如果习惯好的话,只是代码泄露,应该还好。
    locoz
        27
    locoz  
       2021-08-13 19:37:29 +08:00 via Android
    暴露在公网的服务如果没有额外的保护措施就必须跟最新版本走,有任何安全更新必须立即更新,要不然就很容易被批量攻击拿下…
    raysonlu
        28
    raysonlu  
    OP
       2021-08-13 23:53:52 +08:00
    @zhighest 我简单解读一下,任意账号密码 get 请求一下{domain}/users/sign_in,获得一个 token,然后尝试拿 token 去尝试 post 请求这个地址正式登录,如果成功,就继续创建包含命令的图片,并尝试上传到{domain}/uploads/user 。如果是这样的话,我是否能在服务器里面的哪个地方找到上传的图呢?
    raysonlu
        29
    raysonlu  
    OP
       2021-08-13 23:55:07 +08:00
    @zhighest 另外,大佬贴的后面两张图是啥意思?大佬也遇到这个情况了?有个访问 IP 跟我这边的一模一样哦!~
    zhighest
        30
    zhighest  
       2021-08-14 23:36:48 +08:00
    @raysonlu
    昨天下午有台“蜜罐”被攻击,搜了下 payload,就找到了这个帖子。应该是批量攻击的,所以 IP 一样。
    这个漏洞我没有仔细研究,也许能在服务器上找到图片,也许解析过程中就执行了命令,并没有将图片写到磁盘。有兴趣的话你可以研究下,这儿有篇漏洞复现的文章: https://www.cnblogs.com/ybit/p/14918949.html
    最重要的是关闭注册功能,升级 Gitlab 。
    loki13
        31
    loki13  
       2022-02-25 13:58:27 +08:00
    gitlab 不同版本各种漏洞,技术支持力度不够的话,自建自管理风险真还挺高的。。。国内的话可以考虑下阿里腾讯的公有云服务,至少有人给兜底。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2661 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 11:13 · PVG 19:13 · LAX 03:13 · JFK 06:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.