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