Internal DockerLabs (Easy)
Contexto de la maquina
Trayectoria Internal

Descripción
Internal – SysVault Backup Lab es una máquina Linux vulnerable desplegada en entorno local mediante contenedor. El laboratorio combina explotación web, evasión de filtros tipo WAF, inyección de comandos a nivel sistema y escalada de privilegios mediante binarios con permisos SUID mal configurados.
El escenario parte de un servicio web con virtual hosting interno, desde el cual se descubre un subdominio que expone una funcionalidad vulnerable a inyección de comandos. A partir de ahí, se obtiene una reverse shell como www-data, se compromete el usuario vault mediante reutilización de credenciales expuestas y finalmente se escalan privilegios a root explotando un binario SUID inseguro.
Objetivo del reto
Obtener acceso inicial al sistema mediante explotación web.
Comprometer el usuario
vault.Escalar privilegios hasta
root.Obtener las flags correspondientes.
Tipo de máquina
Linux
Web + Command Injection
Escalada de privilegios (SUID)
Habilidades y técnicas evaluadas
Enumeración de puertos y servicios.
Virtual Host Discovery.
Fuzzing de subdominios.
Bypass de WAF por blacklist.
Inyección de comandos en entorno web.
Obtención y estabilización de reverse shell.
Ataques de fuerza bruta con Hydra.
Escalada de privilegios mediante binarios SUID inseguros.
Análisis de vulnerabilidades



Instalación
Cuando obtenemos el .zip nos lo pasamos al entorno en el que vamos a empezar a hackear la maquina y haremos lo siguiente.
Nos lo descomprimira y despues montamos la maquina de la siguiente forma.
Info:
Por lo que cuando terminemos de hackearla, le damos a Ctrl+C y nos eliminara la maquina para que no se queden archivos basura.
Escaneo de puertos
Info:
Observamos únicamente dos puertos expuestos:
22/tcp → Servicio SSH
80/tcp → Servidor web Apache 2.4.58
Es importante destacar que el puerto 80 redirige a un dominio interno llamado internal.dl, lo que indica el uso de virtual hosts.
Resolución del dominio interno
Para poder interactuar correctamente con el virtual host, añadimos el dominio al archivo /etc/hosts:
Accedemos entonces a:
Respuesta:

Observamos una página web aparentemente funcional y sin elementos sospechosos a simple vista.
Fuzzing de subdominios
Dado que se trata de un entorno interno, procedemos a enumerar posibles subdominios utilizando FFUF:
Respuesta:
Se descubre el subdominio backup.internal.dl.
Lo añadimos también al archivo /etc/hosts:

Lo guardamos y entramos a dicho subdominio de esta forma:
Respuesta:

Análisis del subdominio Backup
La aplicación expone un dashboard que incluye una funcionalidad llamada Directory Inspector, la cual permite introducir rutas y ejecuta internamente un ls -lah mostrando el output en pantalla.
Esto ya nos da una pista clara: existe una posible inyección de comandos del sistema (OS Command Injection).
Intento de Command Injection
Probamos inicialmente con:
Sin embargo, el sistema bloquea la ejecución. Esto indica la presencia de una blacklist que filtra operadores como:
;&&||Espacios
Algunos comandos directos
Tras varias pruebas, se detecta que el filtrado no contempla correctamente la sustitución de comandos ($()), ni técnicas de evasión mediante fragmentación de cadenas.
Escalate user www-data
Bypass del filtro (WAF Evading)
Utilizamos sustitución de comandos junto con evasión básica:
Resultado:
El resultado muestra errores del comando ls, pero incluye el contenido de /etc/passwd embebido en la salida. Esto confirma que:
La inyección es viable.
El comando dentro de
$()se ejecuta antes dells.El filtrado se basa en blacklist débil.
Entre los usuarios listados observamos uno interesante:
Obtención de Reverse Shell (www-data)
Una vez confirmada la inyección de comandos, el siguiente paso lógico es obtener una reverse shell para trabajar de forma más cómoda y estable sobre el sistema comprometido.
Preparación de la shell en la máquina atacante
Creamos un archivo llamado shell con el siguiente contenido:
shell
Este script abrirá una conexión TCP hacia nuestra máquina atacante y redirigirá la entrada/salida estándar, otorgándonos una shell interactiva.
A continuación, levantamos un servidor HTTP simple para alojar el archivo:
Descarga del payload desde el servidor vulnerable
Aprovechando la vulnerabilidad de command injection y el bypass previamente descubierto, forzamos la descarga del archivo hacia /tmp:
La fragmentación del comando (w''g''e''t) permite evadir la blacklist del WAF.
Confirmamos en nuestro servidor HTTP que la víctima realizó la petición:
Ejecución de la reverse shell
Ponemos el listener en nuestra máquina atacante:
Desde la aplicación vulnerable ejecutamos el script descargado:
Recibimos conexión:
Hemos obtenido acceso como www-data.
Sanitización de shell (TTY)
Escalate user vault

Explorando el sistema, accedemos al directorio /opt:
Respuesta:
El archivo .vault_pass.txt resulta interesante, ya que pertenece al grupo vault. Al leerlo observamos múltiples posibles contraseñas.
Dado que el puerto 22 (SSH) está abierto, decidimos realizar un ataque de fuerza bruta controlado contra el usuario vault.
Transferimos el archivo a nuestra máquina atacante y ejecutamos:
Resouesta:
Hemos identificado credenciales válidas.
SSH (vault)
Una vez identificadas las credenciales válidas del usuario vault, procedemos a conectarnos al sistema mediante SSH:
Metemos como contraseña Yk8$pZ5@cN4!...
Verificamos que la autenticación ha sido exitosa y que efectivamente tenemos una sesión interactiva como el usuario vault.
Con esto confirmamos el acceso al sistema con privilegios de usuario estándar. A continuación, procedemos a leer la flag correspondiente al usuario.
flag.txt
La flag confirma que la explotación previa se basó en una inyección de comandos del sistema operativo, combinada con técnicas de evasión de filtros (WAF) y bypass de listas negras mediante manipulación de operadores, espacios y comandos.
Escalate Privileges

Una vez comprometido el usuario vault, el siguiente objetivo es escalar privilegios a root.
Para ello, realizamos una enumeración de binarios con el bit SUID activo, ya que estos se ejecutan con los privilegios del propietario (normalmente root).
Resultado:
Entre los binarios listados, destaca especialmente:
Observamos que:
Pertenece al usuario
rootTiene el bit SUID activo (
-rwsr-xr--)Es ejecutable por el grupo
vaultNuestro usuario actual pertenece a dicho grupo
Esto lo convierte en un claro vector potencial de escalada.
Procedemos a ejecutarlo para analizar su comportamiento:
Respuesta:
Al ejecutarlo, obtenemos directamente una shell con privilegios de root.
Esto indica que internamente el binario está invocando una shell (por ejemplo, /bin/bash) sin sanitización ni control adecuado, heredando los privilegios efectivos del propietario debido al bit SUID.
Dado que el binario pertenece a root y se ejecuta con su UID efectivo, cualquier shell lanzada desde él se ejecutará también como root.
Last updated