> For the complete documentation index, see [llms.txt](https://propus.gitbook.io/hackbook/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://propus.gitbook.io/hackbook/writeups/dockerlabs/secret-jenkins.md).

# 🟩 Secret Jenkins

## 🕵️ Reconocimiento

Comenzamos con un escaneo de puertos con nmap:

```bash
nmap -sC -sV -Pn $IPTARGET
```

<figure><img src="/files/yhc7YvNDvW1g0s5yZoHm" alt=""><figcaption></figcaption></figure>

Si entramos a la página principal en el puerto 8080, vemos que es un Jenkins (se intuye por el nombre de la máquina también). Con whatweb podemos averiguar la versión de Jenkins ante la que estamos.

<figure><img src="/files/MGuuy2vHjQtPgXdtBTdk" alt=""><figcaption></figcaption></figure>

Si buscamos la versión de Jenkins vemos que existe un exploit que nos habilita un LFI. Con esta vulnerabilidad podemos listar ficheros en el sistema.

## 🚪 Ganando acceso

Utilizamos el siguiente [exploit](https://www.exploit-db.com/exploits/51993) para listar el fichero `/etc/passwd`:

<figure><img src="/files/BfFsmPhHYu3fqXcc2jgi" alt=""><figcaption></figcaption></figure>

Probamos a hacer fuerza bruta al usuario `bobby`, y encontramos una contraseña para poder acceder por SSH a la máquina.

<figure><img src="/files/npJcZpG86zAoKBvbxj7W" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/HCrIScw7mp8JNZTRIIiE" alt=""><figcaption></figcaption></figure>

## 💥 Escalada de privilegios

Vemos los permisos que tenemos con sudo para el usuario bobby:

<figure><img src="/files/6nbf56caRXBSlNPAW4OB" alt=""><figcaption></figcaption></figure>

Podemos ejecutar python3 como el usuario `pinguinito` sin necesidad de introducir su contraseña. Ejecutamos una shell con python3 usando sudo:

<figure><img src="/files/v7c4VROUXvKgaBdgEwun" alt=""><figcaption></figcaption></figure>

Ahora vemos los permisos que tenemos con el usuario `pinguinito`:

<figure><img src="/files/cbEx4ywxi3kIq32MKtmw" alt=""><figcaption></figcaption></figure>

Vemos que se puede ejecutar la orden `/usr/bin/python3 /opt/script.py` como cualquier usuario sin necesidad de contraseña. El problema viene cuando nos damos cuenta que ese script no tiene permisos de escritura, por lo que no podemos modificarlo para obtener una shell como root. Lo que sí podemos hacer es un library hijacking de la librería `shutil` para la función `shutil.copy`, que es la que usa el script.

<figure><img src="/files/dnsK2YpTQC0HBIUufVy6" alt=""><figcaption></figcaption></figure>

La función copy en nuestra librería falsa nos ejecuta una shell. Ahora ejecutamos el script y obtenemos una shell como root (por usar sudo).

<figure><img src="/files/5iGysePG3WlHuVDB4xtS" alt=""><figcaption></figcaption></figure>
