HTB - Analytics
https://app.hackthebox.com/machines/Analytics
ΒΏTe fue ΓΊtil?
https://app.hackthebox.com/machines/Analytics
ΒΏTe fue ΓΊtil?
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.
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
.
Durante nuestra investigaciΓ³n en lΓnea, encontramos un exploit.sh desarrollado por g1vi en su repositorio de GitHub ().