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

相关推荐
消失的旧时光-19431 分钟前
Nginx 是什么?为什么它不写在代码里?——从 0 认识 Nginx
运维·服务器·nginx
BJ_Bonree2 分钟前
4月17日,博睿数据受邀出席GOPS全球运维大会2026 · 深圳站!
大数据·运维·人工智能
RisunJan3 分钟前
Linux命令-lpq(查看打印队列状态)
linux·运维·服务器
山君爱摸鱼5 分钟前
Linux-服务进程
linux·运维·服务器
阿乐艾官6 分钟前
【linux文件系统重要目录及命令解释】
linux·运维·服务器
senijusene11 分钟前
Linux软件编程: Linux 操作系统基础与shell脚本
linux·运维·chrome
乾元28 分钟前
身份与访问:行为生物识别(按键习惯、移动轨迹)的 AI 建模
运维·网络·人工智能·深度学习·安全·自动化·安全架构
ghostwritten30 分钟前
春节前夕,运维的「年关」:用 Kubeowler 给集群做一次「年终体检」
运维·云原生·kubernetes
馨谙1 小时前
Ansible模块化Playbook管理:静态导入与动态包含详解
运维·ansible
聆风吟º6 小时前
CANN开源项目深度实践:基于amct-toolkit实现自动化模型量化与精度保障策略
运维·开源·自动化·cann