Jenkins Java 反序列化远程执行代码漏洞(CVE-2017-1000353)
一, 漏洞描述
该漏洞存在于使用 HTTP 协议的双向通信通道的具体实现代码中, jenkins 利用此通道来接收命令, 恶意攻击者可以构造恶意攻击参数远程执行命令, 从而获取系统权限, 造成数据泄露.
二, 漏洞影响版本
所有 jenkins 主版本均受到影响(包括<=2.56 版本)
所有的 jenkins LTS 均受到影响(包括<=2.46.1 版本)
三, 漏洞环境搭建
1, 官方下载 jenkins-2.46-1.1.noarch.rpm, 下载地址: http://mirrors.jenkins.io
2, 在 RedHat 安装 jenkins
rpm -ivh jenkins-2.46-1.1.noarch.rpm
3, 开启 jenkins 服务
4, 浏览器访问 http://192.168.10.137:8080, 如下图所示需要输入密码, 密码文件在如下图位置
5, 查看密码文件, 输入密码后进入如下界面, 选择安装建议的插件
6, 安装完插件之后, 进入如下界面, 设置用户名和密码
7, 设置完用户和密码之后, 进入如下界面, 点击如下图位置, 到此为止, jenkins 环境搭建成功
四, 漏洞复现
1, 下载生成 POC 的反序列化工具(CVE-2017-1000353-1.1-SNAPSHOT-all.jar), 下载地址: https://github.com/vulhub/CVE-2017-1000353/releases/download/1.1/CVE-2017-1000353-1.1-SNAPSHOT-all.jar
2, 执行下面命令, 生成字节码文件:
java -jar CVE-2017-1000353-1.1-SNAPSHOT-all.jar jenkins_poc.ser "touch /tmp/success"
3, 执行上述代码后, 生成 jenkins_poc.ser 文件, 这就是序列化字符串
4, 下载漏洞利用代码 exploit.py, 下载地址: https://github.com/vulhub/CVE-2017-1000353/blob/master/exploit.py
5, 修改 exploit.py, 把 proxies 里面的内容注释掉
6, 执行如下命令, 把刚才生成的字节码文件 (Jenkins_poc.ser) 发送给目标
python exploit.py http://192.168.10.137:8080 jenkins_poc.ser
7, 在 RedHat 下查看 / tmp 目录下是否成功创建 success 文件, 说明漏洞利用成功
五, 漏洞防御
1, 升级版本
来源: https://www.cnblogs.com/yuzly/p/11255729.html