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”获取相关攻击模拟验证动作,从而验证您的安全防御体系是否能够有效应对该漏洞,平台以业界独有方式确保您的验证过程安全无害。