# OpenShift - Jenkins

{{#include ../../../banners/hacktricks-training.md}}

**このページの元の著者は** [**Fares**](https://www.linkedin.com/in/fares-siala/)

このページでは、OpenShift（またはKubernetes）クラスターで実行されているJenkinsインスタンスを攻撃する方法についてのいくつかのポイントを示します。

## 免責事項

Jenkinsインスタンスは、OpenShiftまたはKubernetesクラスターの両方にデプロイできます。あなたのコンテキストに応じて、表示されているペイロード、yaml、または技術を適応させる必要があるかもしれません。Jenkinsを攻撃する方法についての詳細は、[このページ](../../../pentesting-ci-cd/jenkins-security/index.html)を参照してください。

## 前提条件

1a. Jenkinsインスタンスへのユーザーアクセス または 1b. プッシュ/マージ後に自動ビルドがトリガーされるSCMリポジトリへの書き込み権限を持つユーザーアクセス

## 仕組み

基本的に、裏側でのほとんどすべては、VMで実行されている通常のJenkinsインスタンスと同じように機能します。主な違いは、全体のアーキテクチャと、OpenShift（またはKubernetes）クラスター内でのビルドの管理方法です。

### ビルド

ビルドがトリガーされると、最初にJenkinsマスターノードによって管理/オーケストレーションされ、その後エージェント/スレーブ/ワーカーに委任されます。このコンテキストでは、マスターノードは単に名前空間内で実行されている通常のポッドです（ワーカーが実行されているものとは異なる場合があります）。ワーカー/スレーブについても同様ですが、ビルドが終了すると破棄されるのに対し、マスターは常に稼働しています。あなたのビルドは通常、Jenkins管理者によって定義されたデフォルトのポッドテンプレートを使用してポッド内で実行されます。

### ビルドのトリガー

ビルドをトリガーする主な方法はいくつかあります：

1. JenkinsへのUIアクセスがある

非常に簡単で便利な方法は、既存のビルドのリプレイ機能を使用することです。これにより、以前に実行されたビルドをリプレイしながら、groovyスクリプトを更新できます。これにはJenkinsフォルダーに対する権限と、事前に定義されたパイプラインが必要です。ステルス性が必要な場合は、十分な権限があればトリガーしたビルドを削除できます。

2. SCMへの書き込みアクセスがあり、自動ビルドがWebhookを介して構成されている

ビルドスクリプト（Jenkinsfileなど）を編集し、コミットしてプッシュするだけです（ビルドがPRマージ時のみトリガーされる場合は、最終的にPRを作成します）。この方法は非常に騒がしく、足跡を消すためには高い権限が必要です。

## JenkinsビルドポッドYAMLオーバーライド

{{#ref}}
openshift-jenkins-build-overrides.md
{{#endref}}

{{#include ../../../banners/hacktricks-training.md}}
