2.2 KiB
OpenShift - Jenkins
{{#include ../../../banners/hacktricks-training.md}}
该页面的原作者是 Fares
本页面提供了一些关于如何攻击运行在 Openshift(或 Kubernetes)集群中的 Jenkins 实例的指引。
免责声明
Jenkins 实例可以在 Openshift 或 Kubernetes 集群中部署。根据您的上下文,您可能需要调整任何显示的有效负载、yaml 或技术。有关攻击 Jenkins 的更多信息,您可以查看 此页面。
先决条件
1a. 在 Jenkins 实例中的用户访问权限 或 1b. 对 SCM 仓库的写入权限,自动构建在推送/合并后触发。
工作原理
从根本上讲,几乎所有后台工作与在 VM 中运行的常规 Jenkins 实例相同。主要区别在于整体架构以及如何在 openshift(或 kubernetes)集群中管理构建。
构建
当构建被触发时,首先由 Jenkins 主节点管理/协调,然后委派给代理/从属/工作节点。在这种情况下,主节点只是一个在命名空间中运行的常规 pod(可能与工作节点运行的命名空间不同)。从属/工作节点也是如此,但它们在构建完成后会被销毁,而主节点始终保持运行。您的构建通常在一个 pod 内运行,使用 Jenkins 管理员定义的默认 pod 模板。
触发构建
您有多种主要方式来触发构建,例如:
- 您可以访问 Jenkins 的 UI
一种非常简单方便的方法是使用现有构建的重放功能。它允许您重放先前执行的构建,同时允许您更新 groovy 脚本。这需要对 Jenkins 文件夹和预定义管道的权限。如果您需要保持隐蔽,您可以在拥有足够权限的情况下删除您触发的构建。
- 您对 SCM 有写入访问权限,并且通过 webhook 配置了自动构建
您可以直接编辑构建脚本(例如 Jenkinsfile),提交并推送(如果构建仅在 PR 合并时触发,则最终创建 PR)。请记住,这条路径非常嘈杂,需要提升权限来清理您的痕迹。
Jenkins 构建 Pod YAML 覆盖
{{#ref}} openshift-jenkins-build-overrides.md {{#endref}}
{{#include ../../../banners/hacktricks-training.md}}