Gitlab远程代码执行漏洞复现CVE-2018-14364


所有文章,仅供安全研究与学习之用,后果自负!

Gitlab远程代码执行漏洞复现CVE-2018-14364

0x01 漏洞描述

import_upload_path将未过滤的参数params[:path]添加到gitlab上传目录,导致存在目录遍历,此外由于文件内容没有限制,最终导致任意内容写入任意文件。

由于默认gitlab创建并启动了git账户,该账户默认目录为/var/opt/gitlab/,修改.ssh/authorized_keys文件为攻击者的公钥,即可以git用户身份成功登录服务器,从而导致命令执行。

0x02 影响范围

GitLab CE and EE 8.9.0 - 9.5.10
GitLab CE and EE 10.0.0 - 10.1.5
GitLab CE and EE 10.2.0 - 10.2.5
GitLab CE and EE 10.3.0 - 10.3.3

0x03 漏洞复现

(1) 利用 vulfocus靶场 cve-2016-9086尝试
注册账号后发现版本后是 8.13.1 在影响范围里 尝试利用
在这里插入图片描述
(2)
攻击者在本地利用ssh-keygen生成公私钥对(用于攻击替换和登录)
受害机.ssh/authorized_keys。
在这里插入图片描述
生成gitlab和gitlab.pub公私钥对。

(3) 注册Gitlab用户并登录,创建project–>Import project->GitLab Import->选择文件

抓包 import project
在这里插入图片描述
(4) 将 框内 的 项目名称
改为

ssh/../../../../../../../../../var/opt/gitlab/.ssh/authorized_keys 

在这里插入图片描述
在这里插入图片描述
(5)发送请求后,使用用户名git以及生成的私钥登录gitlab服务器,如下是执行命令的demo:

ssh -i gitlab [email protected] -p 35100

该版本未复现成功

以前复现过 10.2.2版本 可以成功
在这里插入图片描述

0x04 漏洞修复

升级至最新版本

复现失败的常见问题解答

(1)请先访问对应ip+/help,查看版本是否属于有漏洞的版本
(2)漏洞原理是:利用任意文件写入,覆盖git用户的ssh登陆authorized_keys。默认git用户目录在/var/opt/gitlab/,如果目标服务器安装gitlab时更改了默认的路径,则需要适当修改path为对应的用户目录。

参考

https://idc.wanyunshuju.com/aqld/1891.html

猜你喜欢

转载自blog.csdn.net/YouthBelief/article/details/121279641