jenkins 手动执行_Jenkins Git client插件命令执行漏洞(CVE201910392)

0x00 漏洞描述

Jenkins发布了官方安全公告:https://jenkins.io/security/advisory/2019-09-12/,Git客户端插件中的系统命令执行漏洞。

Git客户端插件接受用户指定的值作为调用的参数,git ls-remote以验证指定URL处是否存在Git存储库。

这是以允许具有Job/Configure权限的攻击者在Jenkins主服务器上执行任意系统命令作为Jenkins进程正在运行的OS用户的方式实现命令执行。

0x01 影响组件

Git client Plugin <= 2.8.4

0x02 原因分析

以官方描述https://jenkins.io/security/advisory/2019-09-12/,漏洞存在关键点在于git ls-remote,参考Git 客户端 官方文档,从给的参数中可以注意到--upload-pack=。看起来像是可以执行某些命令,而漏洞作者也是看到了这个参数的形式而采用了这个参数执行。

3a0af096e0f55334c364ce195d79c805.png

在远程主机上指定git-upload-pack的完整路径。这允许列出通过SSH访问的存储库中的引用,以及SSH守护程序不使用用户配置的PATH的位置。

3eb9b0b920f25269f077dcf197b60f68.png

以此可见,这个错误stderr: error: unknown switch v' 除了打印Git的用法还有一条--upload-pack  可以直接执行命令。

我们可以使用以下Payload来运行命令:

--upload-pack="`id`"

3cdfbfb855d3b76d1cf22cb48c0754ab.png

代码:

3c9b834d5cc32e0cc3d43396d3649a31.png

0x03 环境搭建

漏洞复现版本:Jenkins 2.176.3

拉取docker 镜像

docker run -p 8080:8080 -p 50000:50000 jenkins/jenkins:lts-alpine

71b2b914e86c7256e406c9f183fb4c8b.png

docker拉取镜像完成后打开 localhost:8080, 解锁密码在部署过程中可以看到。

9cdb832ba5bec473eeddd1a23f788d60.png

0a19f506bde9bbeaacfff7624129e39c.png

安装推荐插件 等待完成初始化配置后,创建一个非管理员用户。

并给予创建job权限。

d89cc898cdac30eeaf78e95958953f20.png

由于官方已经升级了最高版本,所以需要手动上传插件存在漏洞版本得插件。

git客户端:http://updates.jenkins-ci.org/download/plugins/git-client/2.8.2/git-client.hpi

git插件:http://updates.jenkins-ci.org/download/plugins/git/3.12.0/git.hpi

导入完成后,重启Jenkins服务。

044635cfebf6e6054076b84fe72f6740.png

登陆创建的test用户并创建一个新的流水线任务。

19c15de8c9d4e8d1407bc24a69bbfcef.png

0x04 漏洞利用

执行刚才分析得来的os命令。

--upload-pack="`ifconfig`"

df21574847b298ba618af7d34521c5fa.png

0b1a18a3db9e3ec03f0db2daaefd30c6.png

反弹shell自然也是不在话下。

0x05 漏洞修复

升级Git client插件至2.8.4以上版本

0x06 其他说明

早在2014年,安识科技团队成员在安全脉搏发布过《知其一不知其二之Jenkins Hacking》https://www.secpulse.com/archives/2166.html,详细阐述了Jenkins的各种hacking技巧。8ff2a5a750390d3aee11af5cf48597e7.png

随着时间推移Jenkins后续也爆出了反序列化等漏洞,详情参见安全脉搏生态插件社区:https://x.secpulse.com/#/plugins

597707bdfea3213ff87d213e894eaa11.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值