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

项目介绍

Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成。Jenkins是开源CI&CD软件领导者, 提供超过1000个插件来支持构建、部署、自动化, 满足任何项目的需要。

项目地址

https://www.jenkins.io/zh/

漏洞概述

Jenkins 有一个内置的命令行界面CLI,在处理 CLI 命令时Jenkins 使用args4j 库解析 Jenkins 控制器上的命令参数和选项。此命令解析器具有一个功能,可以将@参数中后跟文件路径的字符替换为文件内容 ( expandAtFiles)。

根据Jenkins 官方描述,具有Overall/Read权限的攻击者可以读取整个文件,未授权的攻击者仅能读取文件前几行内容。攻击者可以通过读取jenkins文件获取相关密钥从而实现命令执行。

此功能默认启用,Jenkins 2.441 及更早版本、LTS 2.426.2 及更早版本默认不会禁用它。鉴于漏洞 exp 已公开,为避免您的资产受到影响,建议尽快安排修复升级方案。

影响版本

<= Jenkins 2.441、<= LTS 2.426.2

环境搭建

1、下载漏洞版本的jenkins

https://mirrors.jenkins.io/war-stable/

2、运行命令

java -jar jenkins.war --httpPort=8080

漏洞复现

1、下载jenkins-cli.jar,CLI 客户端可以直接在Jenkins主机下载

2、执行poc

漏洞分析

根据官方描述,问题出在args4j 库的expandAtFiles,因此在对应方法上直接下断点。根据调用堆栈,分析执行流程。

在main方法中会首先检查当前命令是否是who-am-i或者help,如果使用其他命令就会检查权限,并出现如下错误。

通过使用help命令绕过权限校验,继续跟踪调用流程。当getAtSyntax属性为true时,将通过expandAtFiles继续解析参数

在expandAtFiles中如果检测到@开头的参数,则会读取对应文件内容并返回

由于文件内容不符合参数格式要求,因此最后作为异常返回

由于读取的文件内容最后是通过异常返回的,因此不同的命令返回的结果长度不同,如果没有权限,则只能使用help或者who-am-i命令,返回的长度有限。但是当攻击者具备Overall/Read权限时,就可以使用更多jenkins命令,从而读取更多文件内容。这里仅仅分析漏洞原理,不在深究。

在新版本中,jenkins默认关闭了ALLOW_AT_SYNTAX参数

修复方式

升级到最新版或者禁用cli功能

参考链接

https://www.jenkins.io/security/advisory/2024-01-24/#SECURITY-3314

https://mp.weixin.qq.com/s/9xXO73YGi5xOQQ_Uakregw

https://www.jenkins.io/zh/doc/pipeline/tour/getting-started/

https://github.com/jenkinsci/jenkins/commit/554f03782057c499c49bbb06575f0d28b5200edb

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

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

相关文章

guhub访问

问题 访问不了guhub 解决过程 可以正常访问了 总结 此方法参考微软官方的方法&#xff0c;修改dns服务器网址&#xff0c;由原本的自动分配改为指定微软dns服务器网址

深度强化学习(王树森)笔记02

深度强化学习&#xff08;DRL&#xff09; 本文是学习笔记&#xff0c;如有侵权&#xff0c;请联系删除。本文在ChatGPT辅助下完成。 参考链接 Deep Reinforcement Learning官方链接&#xff1a;https://github.com/wangshusen/DRL 源代码链接&#xff1a;https://github.c…

苹果手机突然无服务了,这是怎么回事?

苹果手机无疑是一款备受青睐的智能设备&#xff0c;但有时候我们可能会面临一个令人困扰的情况——苹果手机突然无服务。这种情况可能会在任何时候发生&#xff0c;无论是在使用手机时&#xff0c;刚刚升级系统&#xff0c;或者是突然发现在本应有信号的区域却无法连接到运营商…

Linux——常用命令

1、命令的基本格式 对服务器来讲&#xff0c;图形界面会占用更多的系统资源&#xff0c;而且会安装更多的服务、开放更多的端口&#xff0c;这对服务器的稳定性和安全性都有负面影响。其实&#xff0c;服务器是一个连显示器都没有的家伙&#xff0c;要图形界面干什么&#xff…

Nodejs基础4之fs模块的批量重命名练习、path模块、HTTP协议

Nodejs基础 fs模块fs练习-批量重命名fs练习-批量排序重命名 path模块resolve 解决sep 分隔符parse 方法其他的几个方法 HTTP协议http报文安装fiddler软件配置fiddler使用fiddler 请求报文结构整体请求行请求方法URLHTTP版本号 请求头请求体 响应报文结构整体响应行响应状态码响…

用甘特图有效管理多个项目进度

当公司或组织同时承担多个项目时,合理规划各项目的时间节点与资源分配对确保高效完成至关重要。采用甘特图可以直观地展示多个项目的时间进程、关键里程碑以及资源分配情况,便于从宏观层面全面把控各项目的动态。 在线甘特图软件 zz-plan.com 提供了非常强大的时间轴规划功能,支…

14、Kafka ------ kafka 核心API 之 流API(就是把一个主题的消息 导流 到另一个主题里面去)

目录 kafka 核心API 之 流APIKafka流API的作用&#xff1a;流API的核心API&#xff1a;使用流API编程的大致步骤如下&#xff1a;代码演示 流API 用法MessageStream 流API 代码演示消息从 test1主题 导流到 test2主题演示使用匿名内部类对消息进行处理Topology 拓扑结构 讲解 代…

程序员该懂的一些测试(二)单元测试与集成测试

集成测试才是目的 单元测试只是对每个小模块进行的测试&#xff0c;可以理解成每次提交的一个小功能。 最终系统的良好运行依赖于这些小模块之间良好协作。所以需要有集成测试 集成测试回滚数据&#xff0c;保证测试的可重复性 我们可以把 ApplicationContext 理解成 DI 容器…

Transformer and Pretrain Language Models3-6

Pretrain Language Models预训练语言模型 content&#xff1a; language modeling&#xff08;语言模型知识&#xff09; pre-trained langue models(PLMs&#xff09;&#xff08;预训练的模型整体的一个分类&#xff09; fine-tuning approaches GPT and BERT&#xff08;…

【探索科技 感知未来】文心一言大模型

【探索科技 感知未来】文心大模型 &#x1f6a9;本文介绍 文心一言大模型是由中国科技巨头百度公司研发的一款大规模语言模型&#xff0c;其基于先进的深度学习技术和海量数据训练而成。这款大模型具备强大的自然语言处理能力&#xff0c;可以理解并生成自然语言&#xff0c;为…

JVM-字节码应用

一、字节码的应用远超你的想象 二、ASM介绍与读取字节码实战 用CoreAPI解析和TreeAPI都能做字节码解析&#xff0c;区别&#xff0c;TreeAPI必须读取完整字节码信息&#xff0c;才能做解析。 下面代码&#xff0c;使用CoreAPI做解析&#xff1a; package asm;public class MyM…

leetcode.2846. 边权重均等查询【lca+树形dp】

原题链接&#xff1a;2846. 边权重均等查询 题目描述&#xff1a; 现有一棵由 n 个节点组成的无向树&#xff0c;节点按从 0 到 n - 1 编号。给你一个整数 n 和一个长度为 n - 1 的二维整数数组 edges &#xff0c;其中 edges[i] [ui, vi, wi] 表示树中存在一条位于节点 ui …

微服务-微服务Alibaba-Nacos注册中心实现

1. 系统架构的演变 俗话说&#xff0c; 没有最好的架构&#xff0c;只有最合适的架构。 微服务架构也是随着信息产业的发展而出现的最有普 遍适用性的一套架构模式。通常来说&#xff0c;我们认为架构发展历史经历了这样一个过程&#xff1a;单体架构——> 垂直架构 ——&g…

leetcode 42.接雨水

问题1&#xff1a;怎么算接水量 总的接水量第一列接水量第二列接水量第三列接水量…最后一列接水量 问题2&#xff1a;当前列的接水量怎么计算 当前的接水量min(当前列左边最高的墙x1&#xff0c;当前列右边最高的墙x3&#xff09;- 当前列x2的高度 问题2图解&#xff1a; …

蓝桥杯-sort排序(上)

sort排序 &#x1f388;1.算法说明&#x1f388;2.例题&#x1f52d;2.1例题一&#x1f52d;2.2例题二&#x1f52d;2.3例题三&#x1f52d;2.4例题四&#x1f52d;2.5例题五&#x1f52d;2.6例题六 &#x1f388;1.算法说明 &#x1f50e;对于一个数组&#xff0c;通过对数组中…

新版UI界面影视小程序亲测无问题带详细搭建教程

新版UI界面影视小程序亲测无问题带详细搭建教程 环境php7.0 — fileinfo–redis–sg11 mysql5.5 apache2.4 添加站点php7.0—-创建ftp—-上传后端文件《后端文件修改&#xff0c;/maccms/wxapi/config/dbs.php–修改当前数据库》—-设置ssl—-打开数据库安装cms 安装好后管…

如何写出有效的单元测试?

什么是单元测试 《单元测试的艺术》中对单元测试的定义&#xff1a; 一个单元测试是一段自动化的代码&#xff0c;这段代码调用被测试的工作单元&#xff0c;之后对这个单元的单个最终结果的某些假设进行校验。 单元测试几乎都是用单元测试框架编写的&#xff1b;只要产品代码…

免费数据恢复软件,帮你轻松恢复丢失数据!

“由于我经常会丢失各种文件&#xff0c;因此非常需要一款实用又有效的数据恢复软件&#xff0c;大家有什么推荐的吗&#xff1f;希望能给我出出主意&#xff01;” 随着数字技术的不断发展&#xff0c;数据恢复软件在我们的生活中扮演着越来越重要的角色。当我们的硬盘或其他存…

Bluetooth Device Address(BD_ADDR) - 2

蓝牙核心规范&#xff1a;Core v5.3中关于蓝牙地址的其他说明 Vol 3: Host, Part C: Generic Access Profile 3 User interface aspects 3.2 Representation of Bluetooth parameters 3.2.1 Bluetooth Device Address (BD_ADDR) BD_ADDR 是蓝牙设备使用的地址。在设备发现过…

nav02 学习03 机器人传感器

机器人传感器 移动机器人配备了大量传感器&#xff0c;使它们能够看到和感知周围的环境。这些传感器获取的信息可用于构建和维护环境地图、在地图上定位机器人以及查看环境中的障碍物。这些任务对于能够安全有效地在动态环境中导航机器人至关重要。 机器人的传感器类似人的感官…