Translated ['src/banners/hacktricks-training.md', 'src/pentesting-ci-cd/

This commit is contained in:
Translator
2025-01-02 01:13:27 +00:00
parent 599a50fbec
commit c14d2efa43
215 changed files with 1670 additions and 1679 deletions

View File

@@ -1,10 +1,10 @@
# Jenkins Security
# Seguridad de Jenkins
{{#include ../../banners/hacktricks-training.md}}
## Información Básica
Jenkins es una herramienta que ofrece un método sencillo para establecer un **entorno de integración continua** o **entrega continua** (CI/CD) para casi **cualquier** combinación de **lenguajes de programación** y repositorios de código fuente utilizando pipelines. Además, automatiza varias tareas rutinarias de desarrollo. Si bien Jenkins no elimina la **necesidad de crear scripts para pasos individuales**, proporciona una forma más rápida y robusta de integrar toda la secuencia de herramientas de construcción, prueba y despliegue que uno puede construir fácilmente de forma manual.
Jenkins es una herramienta que ofrece un método sencillo para establecer un **entorno de integración continua** o **entrega continua** (CI/CD) para casi **cualquier** combinación de **lenguajes de programación** y repositorios de código fuente utilizando pipelines. Además, automatiza varias tareas rutinarias de desarrollo. Aunque Jenkins no elimina la **necesidad de crear scripts para pasos individuales**, proporciona una forma más rápida y robusta de integrar toda la secuencia de herramientas de construcción, prueba y despliegue que uno puede construir manualmente.
{{#ref}}
basic-jenkins-information.md
@@ -42,11 +42,11 @@ basic-jenkins-information.md
### Registro
Podrás encontrar instancias de Jenkins que **te permiten crear una cuenta e iniciar sesión en ella. Así de simple.**
Podrás encontrar instancias de Jenkins que **te permiten crear una cuenta e iniciar sesión en ella. Tan simple como eso.**
### **Inicio de Sesión SSO**
Además, si la **funcionalidad**/**plugins** de **SSO** están presentes, entonces deberías intentar **iniciar sesión** en la aplicación usando una cuenta de prueba (es decir, una **cuenta de prueba de Github/Bitbucket**). Truco de [**aquí**](https://emtunc.org/blog/01/2018/research-misconfigured-jenkins-servers/).
Además, si la **funcionalidad**/**plugins** de **SSO** estaban presentes, entonces deberías intentar **iniciar sesión** en la aplicación usando una cuenta de prueba (es decir, una **cuenta de prueba de Github/Bitbucket**). Truco de [**aquí**](https://emtunc.org/blog/01/2018/research-misconfigured-jenkins-servers/).
### Fuerza Bruta
@@ -56,15 +56,15 @@ msf> use auxiliary/scanner/http/jenkins_login
```
### Password spraying
Use [this python script](https://github.com/gquere/pwn_jenkins/blob/master/password_spraying/jenkins_password_spraying.py) or [this powershell script](https://github.com/chryzsh/JenkinsPasswordSpray).
Usa [este script de python](https://github.com/gquere/pwn_jenkins/blob/master/password_spraying/jenkins_password_spraying.py) o [este script de powershell](https://github.com/chryzsh/JenkinsPasswordSpray).
### Bypass de la lista blanca de IP
### Bypass de IP Whitelisting
Muchas organizaciones combinan **sistemas de gestión de control de versiones (SCM) basados en SaaS** como GitHub o GitLab con una **solución CI interna y autohospedada** como Jenkins o TeamCity. Esta configuración permite que los sistemas CI **reciban eventos de webhook de los proveedores de control de versiones SaaS**, principalmente para activar trabajos de pipeline.
Muchas organizaciones combinan **sistemas de gestión de control de versiones (SCM) basados en SaaS** como GitHub o GitLab con una **solución CI interna y autohospedada** como Jenkins o TeamCity. Esta configuración permite que los sistemas CI **reciban eventos de webhook de proveedores de control de versiones SaaS**, principalmente para activar trabajos de pipeline.
Para lograr esto, las organizaciones **agregan a la lista blanca** los **rangos de IP** de las **plataformas SCM**, permitiéndoles acceder al **sistema CI interno** a través de **webhooks**. Sin embargo, es importante tener en cuenta que **cualquiera** puede crear una **cuenta** en GitHub o GitLab y configurarla para **activar un webhook**, enviando potencialmente solicitudes al **sistema CI interno**.
Para lograr esto, las organizaciones **blanquean** los **rangos de IP** de las **plataformas SCM**, permitiéndoles acceder al **sistema CI interno** a través de **webhooks**. Sin embargo, es importante notar que **cualquiera** puede crear una **cuenta** en GitHub o GitLab y configurarla para **activar un webhook**, enviando potencialmente solicitudes al **sistema CI interno**.
Check: [https://www.paloaltonetworks.com/blog/prisma-cloud/repository-webhook-abuse-access-ci-cd-systems-at-scale/](https://www.paloaltonetworks.com/blog/prisma-cloud/repository-webhook-abuse-access-ci-cd-systems-at-scale/)
Verifica: [https://www.paloaltonetworks.com/blog/prisma-cloud/repository-webhook-abuse-access-ci-cd-systems-at-scale/](https://www.paloaltonetworks.com/blog/prisma-cloud/repository-webhook-abuse-access-ci-cd-systems-at-scale/)
## Abusos internos de Jenkins
@@ -85,7 +85,7 @@ Si has accedido a Jenkins, puedes listar otros usuarios registrados en [http://1
### Extracción de builds para encontrar secretos en texto claro
Use [this script](https://github.com/gquere/pwn_jenkins/blob/master/dump_builds/jenkins_dump_builds.py) para extraer las salidas de consola de los builds y las variables de entorno de los builds para encontrar, con suerte, secretos en texto claro.
Usa [este script](https://github.com/gquere/pwn_jenkins/blob/master/dump_builds/jenkins_dump_builds.py) para extraer las salidas de consola de los builds y las variables de entorno de los builds para encontrar, con suerte, secretos en texto claro.
```bash
python3 jenkins_dump_builds.py -u alice -p alice http://127.0.0.1:8080/ -o build_dumps
cd build_dumps
@@ -135,7 +135,7 @@ Para explotar pipelines aún necesitas tener acceso a Jenkins.
### Construir Pipelines
**Pipelines** también pueden ser utilizados como **mecanismo de construcción en proyectos**, en ese caso se puede configurar un **archivo dentro del repositorio** que contendrá la sintaxis del pipeline. Por defecto se usa `/Jenkinsfile`:
**Pipelines** también pueden ser utilizados como **mecanismo de construcción en proyectos**, en ese caso se puede configurar un **archivo dentro del repositorio** que contendrá la sintaxis del pipeline. Por defecto se utiliza `/Jenkinsfile`:
![](<../../images/image (127).png>)
@@ -174,7 +174,7 @@ STAGE_ENV_VAR = "Test stage ENV variables."
}
steps {
```
### Dumping secrets
### Extracción de secretos
Para obtener información sobre cómo se tratan generalmente los secretos en Jenkins, consulta la información básica:
@@ -182,7 +182,7 @@ Para obtener información sobre cómo se tratan generalmente los secretos en Jen
basic-jenkins-information.md
{{#endref}}
Las credenciales pueden ser **alcanzadas por proveedores globales** (`/credentials/`) o por **proyectos específicos** (`/job/<project-name>/configure`). Por lo tanto, para exfiltrar todos ellos, necesitas **comprometer al menos todos los proyectos** que contienen secretos y ejecutar pipelines personalizados/contaminados.
Las credenciales pueden estar **alcanzadas a proveedores globales** (`/credentials/`) o a **proyectos específicos** (`/job/<project-name>/configure`). Por lo tanto, para exfiltrar todos ellos, necesitas **comprometer al menos todos los proyectos** que contienen secretos y ejecutar pipelines personalizados/contaminados.
Hay otro problema, para obtener un **secreto dentro del env** de un pipeline, necesitas **conocer el nombre y tipo del secreto**. Por ejemplo, si intentas **cargar** un **secreto** de **`usernamePassword`** como un **secreto** de **`string`**, obtendrás este **error**:
```
@@ -320,13 +320,13 @@ Si puedes **ver la configuración de cada proyecto**, también puedes ver allí
![](<../../images/image (180).png>)
#### From Groovy
#### Desde Groovy
{{#ref}}
jenkins-dumping-secrets-from-groovy.md
{{#endref}}
#### From disk
#### Desde el disco
Estos archivos son necesarios para **desencriptar los secretos de Jenkins**:
@@ -349,9 +349,9 @@ grep -lre "^\s*<[a-zA-Z]*>{[a-zA-Z0-9=+/]*}<"
# Secret example
credentials.xml: <secret>{AQAAABAAAAAwsSbQDNcKIRQMjEMYYJeSIxi2d3MHmsfW3d1Y52KMOmZ9tLYyOzTSvNoTXdvHpx/kkEbRZS9OYoqzGsIFXtg7cw==}</secret>
```
#### Decrypt Jenkins secrets offline
#### Desencriptar secretos de Jenkins sin conexión
Si has volcado las **contraseñas necesarias para descifrar los secretos**, utiliza [**este script**](https://github.com/gquere/pwn_jenkins/blob/master/offline_decryption/jenkins_offline_decrypt.py) **para descifrar esos secretos**.
Si has volcado las **contraseñas necesarias para desencriptar los secretos**, utiliza [**este script**](https://github.com/gquere/pwn_jenkins/blob/master/offline_decryption/jenkins_offline_decrypt.py) **para desencriptar esos secretos**.
```bash
python3 jenkins_offline_decrypt.py master.key hudson.util.Secret cred.xml
06165DF2-C047-4402-8CAB-1C8EC526C115
@@ -365,11 +365,11 @@ println(hudson.util.Secret.decrypt("{...}"))
```
### Crear un nuevo usuario administrador
1. Accede al archivo Jenkins config.xml en `/var/lib/jenkins/config.xml` o `C:\Program Files (x86)\Jenkins\`
1. Accede al archivo config.xml de Jenkins en `/var/lib/jenkins/config.xml` o `C:\Program Files (x86)\Jenkis\`
2. Busca la palabra `<useSecurity>true</useSecurity>` y cambia la palabra **`true`** a **`false`**.
1. `sed -i -e 's/<useSecurity>true</<useSecurity>false</g' config.xml`
3. **Reinicia** el **servidor Jenkins**: `service jenkins restart`
4. Ahora ve al portal de Jenkins nuevamente y **Jenkins no pedirá ninguna credencial** esta vez. Navega a "**Administrar Jenkins**" para establecer la **contraseña de administrador nuevamente**.
3. **Reinicia** el servidor **Jenkins**: `service jenkins restart`
4. Ahora ve al portal de Jenkins nuevamente y **Jenkins no pedirá ninguna credencial** esta vez. Navega a "**Manage Jenkins**" para establecer la **contraseña de administrador nuevamente**.
5. **Habilita** la **seguridad** nuevamente cambiando la configuración a `<useSecurity>true</useSecurity>` y **reinicia Jenkins nuevamente**.
## Referencias

View File

@@ -14,7 +14,7 @@ Si una **cookie autorizada es robada**, puede ser utilizada para acceder a la se
### SSO/Plugins
Jenkins puede ser configurado usando plugins para ser **accesible a través de SSO de terceros**.
Jenkins se puede configurar utilizando plugins para ser **accesible a través de SSO de terceros**.
### Tokens
@@ -22,7 +22,7 @@ Jenkins puede ser configurado usando plugins para ser **accesible a través de S
### Claves SSH
Este componente proporciona un servidor SSH integrado para Jenkins. Es una interfaz alternativa para el [Jenkins CLI](https://www.jenkins.io/doc/book/managing/cli/), y los comandos pueden ser invocados de esta manera usando cualquier cliente SSH. (De la [documentación](https://plugins.jenkins.io/sshd/))
Este componente proporciona un servidor SSH integrado para Jenkins. Es una interfaz alternativa para el [Jenkins CLI](https://www.jenkins.io/doc/book/managing/cli/), y los comandos se pueden invocar de esta manera utilizando cualquier cliente SSH. (De los [docs](https://plugins.jenkins.io/sshd/))
## Autorización
@@ -35,17 +35,17 @@ En `/configureSecurity` es posible **configurar el método de autorización de J
![](<../../images/image (149).png>)
- **Estrategia de Autorización Basada en Proyectos:** Este modo es una **extensión** de "**seguridad basada en matriz**" que permite definir una matriz ACL adicional para ser **definida para cada proyecto por separado.**
- **Estrategia Basada en Roles:** Permite definir autorizaciones usando una **estrategia basada en roles**. Administra los roles en `/role-strategy`.
- **Estrategia de Autorización Basada en Proyectos:** Este modo es una **extensión** de "**seguridad basada en matriz**" que permite definir una matriz ACL adicional para **cada proyecto por separado.**
- **Estrategia Basada en Roles:** Permite definir autorizaciones utilizando una **estrategia basada en roles**. Administra los roles en `/role-strategy`.
## **Reino de Seguridad**
En `/configureSecurity` es posible **configurar el reino de seguridad.** Por defecto, Jenkins incluye soporte para algunos reinos de seguridad diferentes:
- **Delegar al contenedor de servlets**: Para **delegar la autenticación a un contenedor de servlets que ejecuta el controlador de Jenkins**, como [Jetty](https://www.eclipse.org/jetty/).
- **Base de datos de usuarios propia de Jenkins:** Usa **la propia base de datos de usuarios integrada de Jenkins** para la autenticación en lugar de delegar a un sistema externo. Esto está habilitado por defecto.
- **Base de datos de usuarios propia de Jenkins:** Utiliza **la propia base de datos de usuarios integrada de Jenkins** para la autenticación en lugar de delegar a un sistema externo. Esto está habilitado por defecto.
- **LDAP**: Delegar toda la autenticación a un servidor LDAP configurado, incluyendo tanto usuarios como grupos.
- **Base de datos de usuarios/grupos de Unix**: **Delegar la autenticación a la base de datos de usuarios a nivel de OS de Unix** en el controlador de Jenkins. Este modo también permitirá la reutilización de grupos de Unix para autorización.
- **Base de datos de usuarios/grupos de Unix**: **Delegar la autenticación a la base de datos de usuarios a nivel de OS de Unix** en el controlador de Jenkins. Este modo también permitirá reutilizar grupos de Unix para autorización.
Los plugins pueden proporcionar reinos de seguridad adicionales que pueden ser útiles para incorporar Jenkins en sistemas de identidad existentes, como:
@@ -55,19 +55,19 @@ Los plugins pueden proporcionar reinos de seguridad adicionales que pueden ser
## Nodos, Agentes y Ejecutores de Jenkins
Definiciones de la [documentación](https://www.jenkins.io/doc/book/managing/nodes/):
Definiciones de los [docs](https://www.jenkins.io/doc/book/managing/nodes/):
**Nodos** son las **máquinas** en las que se ejecutan los **agentes de construcción**. Jenkins monitorea cada nodo adjunto en cuanto a espacio en disco, espacio temporal libre, intercambio libre, tiempo/sincronización del reloj y tiempo de respuesta. Un nodo se desconecta si alguno de estos valores sale del umbral configurado.
**Agentes** **gestionan** la **ejecución de tareas** en nombre del controlador de Jenkins utilizando **ejecutores**. Un agente puede usar cualquier sistema operativo que soporte Java. Las herramientas requeridas para construcciones y pruebas se instalan en el nodo donde se ejecuta el agente; pueden **ser instaladas directamente o en un contenedor** (Docker o Kubernetes). Cada **agente es efectivamente un proceso con su propio PID** en la máquina host.
**Agentes** **gestionan** la **ejecución de tareas** en nombre del controlador de Jenkins utilizando **ejecutores**. Un agente puede usar cualquier sistema operativo que soporte Java. Las herramientas requeridas para construcciones y pruebas se instalan en el nodo donde se ejecuta el agente; pueden **instalarse directamente o en un contenedor** (Docker o Kubernetes). Cada **agente es efectivamente un proceso con su propio PID** en la máquina host.
Un **ejecutor** es un **espacio para la ejecución de tareas**; efectivamente, es **un hilo en el agente**. El **número de ejecutores** en un nodo define el número de **tareas concurrentes** que pueden ser ejecutadas en ese nodo al mismo tiempo. En otras palabras, esto determina el **número de `stages` de Pipeline concurrentes** que pueden ejecutarse en ese nodo al mismo tiempo.
Un **ejecutor** es un **espacio para la ejecución de tareas**; efectivamente, es **un hilo en el agente**. El **número de ejecutores** en un nodo define el número de **tareas concurrentes** que se pueden ejecutar en ese nodo al mismo tiempo. En otras palabras, esto determina el **número de `stages` de Pipeline concurrentes** que pueden ejecutarse en ese nodo al mismo tiempo.
## Secretos de Jenkins
### Cifrado de Secretos y Credenciales
Definición de la [documentación](https://www.jenkins.io/doc/developer/security/secrets/#encryption-of-secrets-and-credentials): Jenkins utiliza **AES para cifrar y proteger secretos**, credenciales y sus respectivas claves de cifrado. Estas claves de cifrado se almacenan en `$JENKINS_HOME/secrets/` junto con la clave maestra utilizada para proteger dichas claves. Este directorio debe ser configurado para que solo el usuario del sistema operativo bajo el cual se ejecuta el controlador de Jenkins tenga acceso de lectura y escritura a este directorio (es decir, un valor de `chmod` de `0700` o usando atributos de archivo apropiados). La **clave maestra** (a veces referida como "clave de cifrado de clave" en jerga criptográfica) se **almacena \_sin cifrar\_** en el sistema de archivos del controlador de Jenkins en **`$JENKINS_HOME/secrets/master.key`** lo que no protege contra atacantes con acceso directo a ese archivo. La mayoría de los usuarios y desarrolladores utilizarán estas claves de cifrado indirectamente a través de la API [Secret](https://javadoc.jenkins.io/byShortName/Secret) para cifrar datos secretos genéricos o a través de la API de credenciales. Para los curiosos sobre criptografía, Jenkins utiliza AES en modo de encadenamiento de bloques de cifrado (CBC) con relleno PKCS#5 y IVs aleatorios para cifrar instancias de [CryptoConfidentialKey](https://javadoc.jenkins.io/byShortName/CryptoConfidentialKey) que se almacenan en `$JENKINS_HOME/secrets/` con un nombre de archivo correspondiente a su id de `CryptoConfidentialKey`. Los ids de clave comunes incluyen:
Definición de los [docs](https://www.jenkins.io/doc/developer/security/secrets/#encryption-of-secrets-and-credentials): Jenkins utiliza **AES para cifrar y proteger secretos**, credenciales y sus respectivas claves de cifrado. Estas claves de cifrado se almacenan en `$JENKINS_HOME/secrets/` junto con la clave maestra utilizada para proteger dichas claves. Este directorio debe configurarse para que solo el usuario del sistema operativo bajo el cual se ejecuta el controlador de Jenkins tenga acceso de lectura y escritura a este directorio (es decir, un valor de `chmod` de `0700` o utilizando atributos de archivo apropiados). La **clave maestra** (a veces referida como "clave de cifrado" en jerga criptográfica) se **almacena \_sin cifrar\_** en el sistema de archivos del controlador de Jenkins en **`$JENKINS_HOME/secrets/master.key`** lo que no protege contra atacantes con acceso directo a ese archivo. La mayoría de los usuarios y desarrolladores utilizarán estas claves de cifrado de manera indirecta a través de la API [Secret](https://javadoc.jenkins.io/byShortName/Secret) para cifrar datos secretos genéricos o a través de la API de credenciales. Para los curiosos sobre criptografía, Jenkins utiliza AES en modo de encadenamiento de bloques (CBC) con relleno PKCS#5 y IVs aleatorios para cifrar instancias de [CryptoConfidentialKey](https://javadoc.jenkins.io/byShortName/CryptoConfidentialKey) que se almacenan en `$JENKINS_HOME/secrets/` con un nombre de archivo correspondiente a su id de `CryptoConfidentialKey`. Los ids de clave comunes incluyen:
- `hudson.util.Secret`: utilizado para secretos genéricos;
- `com.cloudbees.plugins.credentials.SecretBytes.KEY`: utilizado para algunos tipos de credenciales;
@@ -75,9 +75,9 @@ Definición de la [documentación](https://www.jenkins.io/doc/developer/security
### Acceso a Credenciales
Las credenciales pueden ser **alcanzadas por proveedores globales** (`/credentials/`) que pueden ser accedidos por cualquier proyecto configurado, o pueden ser limitadas a **proyectos específicos** (`/job/<project-name>/configure`) y, por lo tanto, solo accesibles desde el proyecto específico.
Las credenciales pueden ser **escaladas a proveedores globales** (`/credentials/`) que pueden ser accedidos por cualquier proyecto configurado, o pueden ser escaladas a **proyectos específicos** (`/job/<project-name>/configure`) y, por lo tanto, solo accesibles desde el proyecto específico.
Según [**la documentación**](https://www.jenkins.io/blog/2019/02/21/credentials-masking/): Las credenciales que están en alcance están disponibles para la pipeline sin limitaciones. Para **prevenir la exposición accidental en el registro de construcción**, las credenciales son **enmascaradas** de la salida regular, por lo que una invocación de `env` (Linux) o `set` (Windows), o programas que imprimen su entorno o parámetros **no las revelaría en el registro de construcción** a usuarios que de otro modo no tendrían acceso a las credenciales.
Según [**los docs**](https://www.jenkins.io/blog/2019/02/21/credentials-masking/): Las credenciales que están en el ámbito se ponen a disposición de la pipeline sin limitaciones. Para **prevenir la exposición accidental en el registro de construcción**, las credenciales son **enmascaradas** de la salida regular, por lo que una invocación de `env` (Linux) o `set` (Windows), o programas que imprimen su entorno o parámetros **no las revelarían en el registro de construcción** a usuarios que de otro modo no tendrían acceso a las credenciales.
**Por eso, para exfiltrar las credenciales, un atacante necesita, por ejemplo, codificarlas en base64.**

View File

@@ -1,14 +1,14 @@
# Jenkins Arbitrary File Read to RCE via "Remember Me"
# Jenkins Lectura Arbitraria de Archivos a RCE a través de "Recordarme"
{{#include ../../banners/hacktricks-training.md}}
En esta publicación de blog es posible encontrar una gran manera de transformar una vulnerabilidad de Inclusión de Archivos Local en Jenkins en RCE: [https://blog.securelayer7.net/spring-cloud-skipper-vulnerability/](https://blog.securelayer7.net/spring-cloud-skipper-vulnerability/)
Este es un resumen creado por IA de la parte de la publicación donde se abusa de la creación de una cookie arbitraria para obtener RCE abusando de una lectura de archivos locales hasta que tenga tiempo para crear un resumen por mi cuenta:
Este es un resumen creado por IA de la parte de la publicación donde se abusa de la creación de una cookie arbitraria para obtener RCE abusando de una lectura de archivos locales hasta que tenga tiempo de crear un resumen por mi cuenta:
### Requisitos Previos del Ataque
### Prerrequisitos del Ataque
- **Requisito de Función:** "Recuerdame" debe estar habilitado (configuración predeterminada).
- **Requisito de Función:** "Recordarme" debe estar habilitado (configuración predeterminada).
- **Niveles de Acceso:** El atacante necesita permisos de Lectura/General.
- **Acceso Secreto:** Capacidad para leer tanto contenido binario como textual de archivos clave.
@@ -31,7 +31,7 @@ Este es un resumen creado por IA de la parte de la publicación donde se abusa d
- **Clave Maestra:** `$JENKINS_HOME/secrets/master.key`
- **Archivo de Clave MAC:** `$JENKINS_HOME/secrets/org.springframework.security.web.authentication.rememberme.TokenBasedRememberMeServices.mac`
#### Paso 2: Falsificación de Cookies
#### Paso 2: Forja de Cookies
**Preparación del Token**
@@ -84,7 +84,7 @@ username + ":" + tokenExpiryTime + ":" + tokenSignature
- **Obtener Tokens CSRF y de Sesión:**
- Hacer una solicitud a `/crumbIssuer/api/json` para obtener `Jenkins-Crumb`.
- Capturar `JSESSIONID` de la respuesta, que se utilizará junto con la cookie de "recuerdame".
- Capturar `JSESSIONID` de la respuesta, que se utilizará junto con la cookie de recordar-me.
**Solicitud de Ejecución de Comando**

View File

@@ -5,7 +5,7 @@
> [!WARNING]
> Tenga en cuenta que estos scripts solo enumerarán los secretos dentro del archivo `credentials.xml`, pero **los archivos de configuración de compilación** también pueden tener **más credenciales**.
Puede **volcar todos los secretos desde la consola de scripts de Groovy** en `/script` ejecutando este código
Puede **volcar todos los secretos de la consola de scripts de Groovy** en `/script` ejecutando este código
```java
// From https://www.dennisotugo.com/how-to-view-all-jenkins-secrets-credentials/
import jenkins.model.*

View File

@@ -32,6 +32,6 @@ Finalmente, haz clic en **Guardar** y **Construir ahora** y el pipeline se ejecu
## Modificando un Pipeline
Si puedes acceder al archivo de configuración de algún pipeline configurado, podrías **modificarlo añadiendo tu reverse shell** y luego ejecutarlo o esperar a que se ejecute.
Si puedes acceder al archivo de configuración de algún pipeline configurado, podrías **modificarlo añadiendo tu reverse shell** y luego ejecutarlo o esperar a que se ejecute.
{{#include ../../banners/hacktricks-training.md}}

View File

@@ -4,7 +4,7 @@
## Creando un Proyecto
Este método es muy ruidoso porque tienes que crear un proyecto completamente nuevo (obviamente esto solo funcionará si el usuario tiene permiso para crear un nuevo proyecto).
Este método es muy ruidoso porque tienes que crear un proyecto completamente nuevo (obviamente esto solo funcionará si se permite al usuario crear un nuevo proyecto).
1. **Crea un nuevo proyecto** (proyecto Freestyle) haciendo clic en "Nuevo Elemento" o en `/view/all/newJob`
2. Dentro de la sección **Construir**, establece **Ejecutar shell** y pega un lanzador de powershell Empire o un powershell de meterpreter (se puede obtener usando _unicorn_). Inicia la carga útil con _PowerShell.exe_ en lugar de usar _powershell._
@@ -16,7 +16,7 @@ Este método es muy ruidoso porque tienes que crear un proyecto completamente nu
## Modificando un Proyecto
Ve a los proyectos y verifica **si puedes configurar alguno** de ellos (busca el "botón de Configurar"):
Ve a los proyectos y verifica **si puedes configurar alguno** de ellos (busca el "botón Configurar"):
![](<../../images/image (265).png>)
@@ -31,6 +31,6 @@ Si se te permite configurar el proyecto, puedes **hacer que ejecute comandos cua
![](<../../images/image (98).png>)
Haz clic en **Guardar** y **construye** el proyecto y tu **comando será ejecutado**.\
Si no estás ejecutando un shell inverso, sino un comando simple, puedes **ver la salida del comando dentro de la salida de la construcción**.
Si no estás ejecutando un shell reverso sino un comando simple, puedes **ver la salida del comando dentro de la salida de la construcción**.
{{#include ../../banners/hacktricks-training.md}}