收到一个安全监控警告:
高亮部分就是一串命令,用 gitlab-rails runner 执行了一个创建管理员的命令!
gitlab 版本是 CE 的 13.10.2
里面的项目,没有用过 hook,也没有用流水线,因为团队的都不会用。
目前对于这个安全事故排查毫无头绪,完全不知道怎样注入,怎样执行的,有无大佬指导一下(哭
1
misaka19000 2021-08-13 15:44:27 +08:00
你也把命令贴出来啊
|
2
InternetExplorer 2021-08-13 15:44:35 +08:00
可能团队里有人在做渗透测试?
|
3
hly9469 2021-08-13 15:50:11 +08:00 via iPhone
你指着大佬一个个字母敲来复现?哈哈哈哈
|
4
raysonlu OP @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;" |
5
Rwing 2021-08-13 15:54:42 +08:00
1.不要开放外网
2.勤升级,他们团队一周一个补丁不是闹着玩的 |
7
jay4497 2021-08-13 16:06:10 +08:00
既然没人用流水线,就把 runner 服务关掉吧,没那么多事
|
10
polaa 2021-08-13 16:19:58 +08:00
和关不关 runner 无关
你这版本这么低 看一下 gitlab security release 就有一些 code injection |
11
jay4497 2021-08-13 16:24:52 +08:00
@raysonlu 安全小白,也不太懂,但以前折腾过这个 runner,需要配置啥的才能用上流水线功能,具体的你看看文档吧 docs.gitlab.com/runner/
|
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) |
15
polaa 2021-08-13 16:39:44 +08:00
官网都有吧
|
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 的形式运行命令(这条感觉不太可能) |
17
yw9381 2021-08-13 16:56:23 +08:00 via Android
个人觉得这是一个安全配置问题。并不算是有漏洞。安全缺陷和漏洞是两码事。不过还是建议你们内部自查一下弱口令这些。还有相应的权限管控。
|
18
raysonlu OP @yw9381 没有开放注册。如果必须要通过上传或修改一个.gitlab-ci.yml 文件的话,是不是我能在每个项目中找回这个记录?
|
20
raysonlu OP @yw9381 补充一下,我逐个项目看,找不到.gitlab-ci.yml 文件,以及在 /var/opt/gitlab/git-data/repositories 路径中,find ./ -name "*gitlab*",找不到。
|
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 |
22
raysonlu OP @polaa 怪不得我看 gitlab 的访问日志中,超多类似“{domain}/项目组名 /项目名字.git/info/refs?service=git-upload-pack”的路径访问,而且 IP 都是境外!
另外想问一下,我现在的 13.10.2,我是应该升级到 13.12.9,还是 14 的最新版本呢? |
23
zhighest 2021-08-13 18:55:48 +08:00
|
24
zhighest 2021-08-13 18:55:54 +08:00
|
25
zhighest 2021-08-13 18:56:24 +08:00
|
26
wangkun025 2021-08-13 19:00:27 +08:00
就创建了一个管理员级别的用户。然后估计可以为所欲为了。反正 git 的 repo 应该都被查看过了。
如果习惯好的话,只是代码泄露,应该还好。 |
27
locoz 2021-08-13 19:37:29 +08:00 via Android
暴露在公网的服务如果没有额外的保护措施就必须跟最新版本走,有任何安全更新必须立即更新,要不然就很容易被批量攻击拿下…
|
28
raysonlu OP @zhighest 我简单解读一下,任意账号密码 get 请求一下{domain}/users/sign_in,获得一个 token,然后尝试拿 token 去尝试 post 请求这个地址正式登录,如果成功,就继续创建包含命令的图片,并尝试上传到{domain}/uploads/user 。如果是这样的话,我是否能在服务器里面的哪个地方找到上传的图呢?
|
29
raysonlu OP @zhighest 另外,大佬贴的后面两张图是啥意思?大佬也遇到这个情况了?有个访问 IP 跟我这边的一模一样哦!~
|
30
zhighest 2021-08-14 23:36:48 +08:00
@raysonlu
昨天下午有台“蜜罐”被攻击,搜了下 payload,就找到了这个帖子。应该是批量攻击的,所以 IP 一样。 这个漏洞我没有仔细研究,也许能在服务器上找到图片,也许解析过程中就执行了命令,并没有将图片写到磁盘。有兴趣的话你可以研究下,这儿有篇漏洞复现的文章: https://www.cnblogs.com/ybit/p/14918949.html 。 最重要的是关闭注册功能,升级 Gitlab 。 |
31
loki13 2022-02-25 13:58:27 +08:00
gitlab 不同版本各种漏洞,技术支持力度不够的话,自建自管理风险真还挺高的。。。国内的话可以考虑下阿里腾讯的公有云服务,至少有人给兜底。
|