Jenkins 任意文件读取(CVE-2024

在线wifi跑包 金刚包跑包 cap跑包 hccapx ewsa在线 就来 握手包跑包

各位好 又见面了 我是曹操 今天给大家带来一篇新的教程

希望各位细心学习 低调用网

00:50:56:3D:BD:9B

一、引言
本文将探讨与Jenkins相关的安全问题,并介绍在实验室环境中的相关概念。这些技能在渗透测试中对于有效管理输出至关重要,并且在本次漏洞利用中尤为关键。本文还将涉及Jenkins凭证管理和部署,指导读者如何查找存储的用户和密码信息。此外,我们还将引导读者使用Hashcat工具来破解这些凭证,以揭示其中的安全挑战。实验的亮点之一是反向Shell测试,要求读者使用Jenkins内置的Groovy脚本控制台建立反向Shell。通过一个典型的试错过程,读者将亲身体验实现远程命令执行的刺激和挑战。最后,我们将探讨权限提升,一旦获得shell访问权限,读者将学习如何识别并利用设置了SUID位的二进制文件进行权限提升。

二、Jenkins (CVE-2024–23897) 靶机主题
本次靶场攻击的主题是Jenkins的一个安全漏洞(CVE-2024–23897)。

三、靶机配置
首先,下载靶机并为其生成一个MAC地址。配置完成后,开机并登录(无需密码)。确保靶机与您的本地局域网相连,否则可能无法找到靶机。接下来,从靶机系统下载Jenkins客户端,并将其保存到指定文件夹中。如果下载过程中出现错误,请多次尝试,确保成功提取jenkins-cli.jar文件。

四、本地文件读取漏洞
使用CLI命令测试服务器上是否启用了匿名读取权限。请注意将IP地址替换为您自己的IP。通过Jenkins客户端的help命令,我们成功获取了/etc/passwd文件的第一行。需要注意的是,此漏洞的一个关键方面是不同的命令可以读取文件中不同数量的行数。在help命令下,只返回了一行。接下来,我们将编写一个脚本来测试这些命令中的每一个,以查看可以读取/etc/passwd中的行数。首先,将help命令的输出重定向到名为output.txt的文件中。然而,由于help命令的输出是打印到STDERR而不是STDOUT,所以output.txt文件是空的。为了解决这个问题,我们需要编写一个脚本来枚举每个可用命令,并测试它们在/etc/passwd文件中返回的行数。创建一个名为output2.txt的文本文件,并将命令复制到其中。

五、枚举Jenkins用户、提取密码哈希值(破解)
Jenkins安装将包含一个文件,列出了所有有效用户。使用connect-node命令读取此文件,并找到用户文件夹的路径。在每个用户文件夹中,都会有一个包含用户密码哈希的config.xml文件。将找到的密码哈希复制到名为hashes.txt的文件中。然后,使用Hashcat工具对hashes.txt文件进行密码破解攻击,使用RockYou密码字典进行破解。

六、后台命令执行和反弹Shell
Jenkins脚本控制台可以执行命令。在Kali上创建一个名为exploit.sh的文件,并将base64编码的反向Shell代码复制到其中。然后,使用curl命令将该文件提取到Jenkins服务器的/tmp目录中。接下来,给予Shell文件执行权限,并在Kali上启动一个NC监听器。最后,运行Shell文件,与NC建立反向连接。

七、总结
本文深入探讨了Jenkins的一个安全漏洞,并通过实验室操作带领读者了解渗透测试的关键技术和步骤。从文件描述符和输出管理到Jenkins凭证的挖掘,再到密码破解和反向Shell建立,最后到权限提升,每个环节都涉及了渗透测试中的重要方面。然而,Jenkins仍然有许多技术和挑战需要进一步探索和学习。

赞(0)