Jenkins是一个流行的开源持续集成(CI)和持续交付(CD)工具,它可以帮助团队自动化软件开发中的各种任务和流程,从而提高效率和质量。
▌漏洞原理
Jenkins提供了一个命令行的接口,用户可以下载一个命令行客户端jenkins-cli.jar到本地,并调用该客户端来执行一些Jenkins的功能。
▌漏洞影响
▌靶场环境
▌攻击流程
-
可以直接使用官方提供的命令行客户端,在http://localhost:8080/jnlpJars/jenkins-cli.jar下载,jenkins-cli.jar文件。 -
使用jenkins-cli.jar文件查看当前jenkins版本,可以看到版本为2.441。 -
-
在进行攻击的时候有多种参数攻击方式,不同的方式读取的行数有区别 -
-
-
造成这样的原因是 -
使用@将文件内容加载成命令行参数,文件中的空白字符,会分割参数。例如 -
-
所以1、2、3、4会变成help命令的4个参数。而解析命令行时通常只会取前面一些参数,报错也就只会把这些参数报出来,导致我们读取文件的时候只能读到文件的前几行。
-
这样读取的方式略显鸡肋,所以有以下两个方法,可以进行读取全部内容 -
connect-node
reload-job -
-
在读取过程中,都需要知道绝对路径的地址,可以按照以下步骤进行读取,通过读取环境变量以及CMD启动命令,了解jenkins根目录。 -
/proc/self/environ
/proc/self/cmdline -
-
通过Jenkins的根目录,再进行读取下面这些敏感文件。 -
-
旧版本Jenkins用户密码是加密而不是哈希,可以利用诸如jenkins-decrypt这样的工具来解密密码。
▌解决方案
更新至最新版本以解决该漏洞,现Jenkins2.442、LTS 2.426.3已禁用相关命令解析器功能。
▌塞讯验证规则
针对该漏洞的攻击模拟已经加入到塞讯安全度量验证平台中,您可以在塞讯安全度量验证平台中搜索关键词“CVE-2024-23897”或“Jenkins”获取相关攻击模拟验证动作,从而验证您的安全防御体系是否能够有效应对该漏洞,平台以业界独有方式确保您的验证过程安全无害。
用持续验证 建长久安全
核心团队均来自于全球知名网络安全公司和APT研究机构,拥有业界突出的安全研究与APT组织追踪能力。两大研发团队分别位于上海和杭州,致力于为客户打造最优秀的安全验证产品。我们在北京、上海、深圳、杭州均设有分支机构,服务可覆盖全国各个角落。
原文始发于微信公众号(塞讯安全验证):漏洞分析 | Jenkins 未授权文件读取漏洞(CVE-2024-23897)
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论