HTB - Analytics
https://app.hackthebox.com/machines/Analytics
https://app.hackthebox.com/machines/Analytics
Nombre de la Máquina: Analytics
IP de la Máquina: 10.10.11.233
Sistema Operativo: Linux
Dificultad: Easy
Fecha de Publicación: 07 oct 2023
Primero, establecemos el objetivo utilizando el comando settarget
con la dirección IP de la máquina objetivo:
Realizamos un ping a la máquina objetivo para verificar la conectividad y obtener información sobre la ruta utilizando la opción -R
para incluir la ruta de retorno:
Luego, realizamos un escaneo de puertos utilizando Nmap para identificar los puertos abiertos en la máquina objetivo. Utilizamos las opciones -p-
para escanear todos los puertos, --open
para mostrar solo los puertos abiertos, -sS
para un escaneo de tipo TCP SYN, --min-rate 5000
para establecer la velocidad mínima de paquetes y -vvv
para un nivel de verbosidad alto. Además, utilizamos -n
para desactivar la resolución de DNS, -Pn
para no realizar el escaneo de ping, y -oG allPorts
para guardar la salida en un archivo con formato Greppable:
Posteriormente, realizamos un escaneo más detallado de los puertos identificados utilizando la opción -sCV
para detección de versiones y scripts de enumeración de servicios. Específicamente, indicamos los puertos a escanear con -p __PORTS__
(reemplazando __PORTS__
con los puertos identificados en el paso anterior) y guardamos la salida en un archivo de texto con el nombre targeted
:
Para añadir la entrada "10.10.11.233 analytical.htb" al archivo /etc/hosts
, puedes usar el siguiente comando en la terminal:
Este comando añade la dirección IP 10.10.11.233
asociada al nombre de host analytical.htb
al archivo /etc/hosts
de tu sistema.
Para realizar un descubrimiento de directorios en un sitio web utilizando Gobuster, puedes utilizar el siguiente comando:
Este comando utiliza Gobuster para realizar un escaneo de directorios en el sitio web http://analytical.htb/
. Utiliza el archivo de palabras /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt
como lista de palabras clave para la búsqueda. La opción -t 50
indica que se deben utilizar 50 threads simultáneos para acelerar el proceso.
TIP: Instalación de SecLists con apt-get
Para instalar SecLists en sistemas basados en Debian (como Ubuntu) utilizando apt-get
, puedes seguir estos pasos:
Actualiza la lista de paquetes disponibles:
Instala SecLists:
Con estos pasos, SecLists se instalará en tu sistema y podrás acceder a la lista de palabras clave en el directorio /usr/share/seclists/
.
Para realizar un descubrimiento de subdominios utilizando Gobuster, puedes utilizar el siguiente comando:
Este comando utiliza Gobuster en modo DNS para buscar subdominios en el dominio analytical.htb
. Utiliza el archivo de palabras /usr/share/seclists/Discovery/DNS/subdomains-top1million-20000.txt
como lista de posibles subdominios. La opción -t 20
indica que se deben utilizar 20 threads simultáneos para acelerar el proceso.
Navegando en la página de analytical.htb
, notamos que al intentar acceder al login, este redirecciona a data.analytical.htb
Antes de poder acceder a data.analytical.htb
, es necesario agregar la siguiente entrada al archivo de hosts de nuestro sistema:
Esta acción nos permite redirigir el tráfico hacia data.analytical.htb
correctamente.
Durante la fase de reconocimiento, descubrimos que Metabase tiene una vulnerabilidad conocida, #CVE-2023-38646. Decidimos verificar si data.analytical.htb
es vulnerable a esta CVE realizando pruebas específicas para confirmarlo.
Tras identificar que data.analytical.htb
podría ser vulnerable al #CVE-2023-38646, profundizamos en nuestro análisis y descubrimos que el principal problema reside en la exposición indebida del setup token a través de /api/session/properties
. Este token, que idealmente no debería estar accesible sin autenticación, es crítico para la configuración inicial de Metabase y, por lo tanto, su exposición representa una grave vulnerabilidad de seguridad.
Extracción del Setup Token
Realizamos una petición GET a /api/session/properties
para extraer el setup token, encontrando que, efectivamente, el token está disponible:
La respuesta incluye el setup token, que no debería estar expuesto. En este caso, el token se parece a 249fa03d-fd94-4d5b-b94f-b4ebf3df681f
.
Explotación de la Vulnerabilidad
Con el setup token en nuestras manos, procedemos a explotar la vulnerabilidad realizando una petición GET a /api/setup/validate
con el siguiente cuerpo JSON:
Esta consulta utiliza el setup token para realizar una configuración maliciosa que aprovecha la vulnerabilidad, en este caso, intentando ejecutar un comando que podría, por ejemplo, realizar una petición a un servidor controlado por el atacante. En este caso inyectamos un CURL.
Después de confirmar que la inyección de comandos mediante curl
fue exitosa, avanzamos un paso más en nuestra prueba de concepto, ejecutando un reverse shell. Para ello, optamos por codificar el comando del reverse shell en base 64, lo que nos permite evadir potenciales mecanismos de filtrado de entrada y asegurar la correcta ejecución del comando en el servidor objetivo.
Codificación del Comando en Base 64
Primero, generamos la cadena en base 64 del comando del reverse shell. Por ejemplo, para un shell Bash, el comando podría ser algo así como:
Lo codificamos en base 64 utilizando una herramienta de línea de comandos. Por ejemplo, en Linux, podrías usar:
Esto generará una cadena codificada que se verá algo como esto (el resultado real variará):
Con la cadena en base 64 lista, modificamos nuestra petición a /api/setup/validate
para ejecutar el reverse shell codificado. El comando ejecutado sería una decodificación y ejecución del string en base 64, algo así como:
Durante la exploración del sistema, ejecutamos el comando ls -la
y encontramos un archivo llamado .dockerenv
. Este archivo es una señal clara de que nos encontramos dentro de un contenedor Docker.
Usamos los tips de
Al revisar las variables de entorno del contenedor Docker utilizando el comando env
, logramos extraer las credenciales de acceso. Descubrimos que el usuario es Metalytics
y la contraseña es An4lytics_ds20223#
.
Utilizamos las credenciales de usuario que obtuvimos previamente para intentar conectarnos por SSH al sistema objetivo. Para ello, ejecutamos el siguiente comando desde nuestra máquina local:
Para obtener información sobre el sistema operativo del servidor analytical.htb
, ejecutamos el siguiente comando en la conexión por SSH:
Además hacemos ls -la
para encontrar la primera flag user.txt
Además de consultar el archivo /etc/os-release
, ejecutamos el comando uname -a
para obtener información adicional sobre el sistema operativo y el kernel del servidor analytical.htb
. Este comando nos proporciona detalles específicos sobre la versión del kernel, la arquitectura del sistema y otra información relevante que nos ayuda a comprender mejor el entorno objetivo.
Durante nuestra investigación en línea, encontramos un exploit.sh desarrollado por g1vi en su repositorio de GitHub (https://github.com/g1vi/CVE-2023-2640-CVE-2023-32629/tree/main).
Yo decidí acceder al repositorio y copiar el contenido del exploit y analizarlo con la IA, luego de esto procedí a descargarlo desde SSH:
Después de subir el exploit.sh a la máquina objetivo, le otorgamos permisos de ejecución utilizando el comando chmod +x
y luego ejecutamos el exploit utilizando ./cve-2023-2640.sh
.