# OpenShift - Jenkins

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

**L'autore originale di questa pagina è** [**Fares**](https://www.linkedin.com/in/fares-siala/)

Questa pagina fornisce alcuni suggerimenti su come attaccare un'istanza di Jenkins in esecuzione in un cluster Openshift (o Kubernetes).

## Disclaimer

Un'istanza di Jenkins può essere distribuita sia in un cluster Openshift che in un cluster Kubernetes. A seconda del tuo contesto, potresti dover adattare qualsiasi payload, yaml o tecnica mostrata. Per ulteriori informazioni su come attaccare Jenkins, puoi dare un'occhiata a [questa pagina](../../../pentesting-ci-cd/jenkins-security/index.html).

## Prerequisiti

1a. Accesso utente in un'istanza di Jenkins OPPURE 1b. Accesso utente con permesso di scrittura a un repository SCM dove viene attivata una build automatizzata dopo un push/merge.

## Come funziona

Fondamentalmente, quasi tutto ciò che avviene dietro le quinte funziona allo stesso modo di un'istanza di Jenkins regolare in esecuzione in una VM. La principale differenza è l'architettura complessiva e come le build sono gestite all'interno di un cluster openshift (o kubernetes).

### Build

Quando viene attivata una build, viene prima gestita/orchestrata dal nodo master di Jenkins e poi delegata a un agente/slave/worker. In questo contesto, il nodo master è semplicemente un pod regolare in esecuzione in uno spazio dei nomi (che potrebbe essere diverso da quello in cui vengono eseguiti i worker). Lo stesso vale per i worker/slave, tuttavia vengono distrutti una volta che la build è terminata, mentre il master rimane sempre attivo. La tua build viene solitamente eseguita all'interno di un pod, utilizzando un modello di pod predefinito definito dagli amministratori di Jenkins.

### Attivazione di una build

Hai diversi modi principali per attivare una build, come ad esempio:

1. Hai accesso all'interfaccia utente di Jenkins

Un modo molto semplice e conveniente è utilizzare la funzionalità Replay di una build esistente. Ti consente di ripetere una build precedentemente eseguita, permettendoti di aggiornare lo script groovy. Questo richiede privilegi su una cartella di Jenkins e una pipeline predefinita. Se hai bisogno di essere furtivo, puoi eliminare le tue build attivate se hai abbastanza permessi.

2. Hai accesso in scrittura allo SCM e le build automatizzate sono configurate tramite webhook

Puoi semplicemente modificare uno script di build (come Jenkinsfile), fare commit e push (eventualmente creare una PR se le build vengono attivate solo sui merge delle PR). Tieni presente che questo percorso è molto rumoroso e richiede privilegi elevati per pulire le tue tracce.

## Override YAML del Pod di Build di Jenkins

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

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