> For the complete documentation index, see [llms.txt](https://4lec4st.gitbook.io/4lec4st/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://4lec4st.gitbook.io/4lec4st/writes-ups/dockerlabs/very-easy/injection.md).

# Injection

## Información de la máquina

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

La máquina **Injection**, de dificultad **fácil**, está diseñada para reforzar conocimientos básicos pero esenciales en el ámbito del hacking ético y el pentesting. A lo largo de su resolución, nos enfrentaremos a una aplicación web vulnerable que simula un escenario realista donde un atacante puede **explotar una inyección SQL (SQLi)** para obtener acceso no autorizado.

Una vez dentro, pasaremos por una etapa de **post-explotación**, en la que exploraremos el sistema comprometido en busca de vectores para una **escalada de privilegios**, utilizando técnicas comunes como la detección de binarios con el bit **SUID** habilitado.

***

## Reconocimiento&#x20;

La fase de **reconocimiento** es el primer paso a la hora de resolver una máquina. Su objetivo es recopilar la mayor cantidad de información posible sobre el sistema objetivo, permitiendo entender su estructura, tecnología y posibles vectores de ataque.

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

**. `-p-` → Escaneo de todos los puertos (1-65535)**

Por defecto, `nmap` solo escanea los **1000 puertos más comunes**.\
Con `-p-`, forzamos a que escanee **los 65535 puertos** de la máquina objetivo, lo que puede ser útil para encontrar servicios que corren en puertos poco convencionales.

**2. `--open` → Filtrar solo los puertos abiertos**

Cuando escaneamos un sistema, muchos puertos pueden estar cerrados o filtrados por un firewall.\
Este parámetro hace que `nmap` **solo muestre los puertos abiertos**, reduciendo el ruido y facilitando el análisis.

**3. `-sS` → Stealth Scan (Escaneo Sigiloso con SYN)**

Es conocido como **"TCP SYN Scan"**, y funciona de la siguiente manera:

* `nmap` envía un paquete **SYN** (solicitud de conexión).
* &#x20;Si el puerto está abierto, el servidor responde con **SYN-ACK**.
* En lugar de completar la conexión con un **ACK**, `nmap` responde con un **RST (Reset)**, interrumpiendo la comunicación.

**4. `--min-rate 5000` → Velocidad mínima de paquetes (5000 por segundo)**

Por defecto, `nmap` ajusta dinámicamente la velocidad de los paquetes según la respuesta de la red.\
Con `--min-rate 5000`, obligamos a `nmap` a **no enviar menos de 5000 paquetes por segundo**, acelerando el escaneo.

**5. `-n` → Deshabilitar resolución DNS**

Normalmente, `nmap` intenta resolver el nombre de dominio de las IPs escaneadas (DNS lookup).\
Con `-n`, evitamos esta resolución de nombres, lo que **acelera el escaneo** y evita que los servidores DNS registren nuestra actividad.

**6. `-Pn` → Omitir detección de host (Host Discovery Off)**

Por defecto, `nmap` envía paquetes ICMP (ping) para ver si un host está activo antes de escanearlo.\
Si un firewall bloquea los pings, `nmap` puede marcarlo como "host down" y no escanearlo.

**7. `-oG`** **→ Exportar el contenido en formato grepeable**

Todo el resultado del escaneo lo exportaremos en un archivo llamado **`puertos` .**

El escaneo revela que el puerto **22(SSH), 80(HTTP)**  está abierto. Ahora realizamos un escaneo más detallado:

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

**1. `-p22,80` → Escaneo de puertos específicos**

Con `-p22,80`, le indicamos que **solo** escanee los puertos **22 (SSH) y 80(HTTP).**

**2. `-sCV` → Escaneo de versiones y scripts básicos**

Este parámetro en realidad es **dos combinaciones en una**:

* **`-sC`** → Activa los **NSE scripts por defecto** en `nmap` (similar a usar `--script=default`).\
  Ejecuta scripts básicos para enumerar información del servicio detectado, como banners, versiones, etc.
* **`-sV`** → Realiza **fingerprinting de versiones**, intentando identificar la versión exacta del software en cada puerto abierto.

**3. `-oN` → Guardar el resultado en formato Normal**

Por defecto, `nmap` muestra los resultados en pantalla, pero con **`-oN targeted`**, guardamos el resultado en un archivo en **formato legible para humanos**.

***

## Enumeración y búsqueda de vulnerabilidades&#x20;

Utilizamos **Gobuster** para realizar fuerza bruta sobre los directorios del servidor web, lo que nos permite descubrir rutas y archivos ocultos que no están visibles a simple vista. Durante esta enumeración, encontramos dos archivos importantes: `index.php` y `config.php`.

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

Al acceder a `index.php`, observamos que se trata de una **página de inicio de sesión**. Intentamos ingresar usando credenciales comunes (como `admin:admin` o `admin:password`), pero el sistema devuelve un mensaje de error, lo que sugiere que esas credenciales no son válidas.

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

***

## Explotación de las vulnerabilidades

Sospechando de una posible **inyección SQL (SQLi)** en el formulario de login, probamos a introducir una carga típica (`' OR '1'='1`) en el campo de usuario o contraseña. Al hacerlo, conseguimos **eludir la autenticación** y acceder al sistema

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

Dentro del panel autenticado, conseguimos extraer credenciales válidas pertenecientes al usuario **Dylan**.

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

Con esta información, intentamos conectarnos mediante **SSH** al servidor objetivo utilizando las credenciales obtenidas, lo cual **nos concede acceso como el usuario Dylan.**

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

***

## Post Explotación y escalada de privilegios

Una vez dentro de la máquina, realizamos una **enumeración del sistema** para identificar posibles vectores de escalada de privilegios. Ejecutamos comandos como `find / -perm -4000 2>/dev/null` para listar archivos con el bit **SUID** habilitado, lo que nos permite ejecutar ciertos binarios con permisos de otro usuario (a menudo root).

<figure><img src="/files/46fTEpDS0UV4mAgd685d" alt=""><figcaption></figcaption></figure>

Durante esta búsqueda, encontramos que el binario `env` tiene el bit SUID. Este binario puede ser explotado para ejecutar comandos como si fuéramos el superusuario.

Al ejecutar `env /bin/bash -p`, obtenemos una shell con **privilegios de root**, completando así la escalada de privilegios.

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

***

## Conclusión

**Injection** es una máquina de dificultad sencilla que permite practicar técnicas básicas pero fundamentales en hacking ético. Aprendemos cómo detectar y explotar una **inyección SQL** para evadir un login y cómo **escalar privilegios** aprovechando archivos con permisos SUID mal configurados. Una excelente máquina para reforzar la comprensión de vulnerabilidades comunes en aplicaciones web y sistemas Linux.
