
Acerca de Trickster
Trickster es una máquina Linux de dificultad media que incluye una aplicación PrestaShop vulnerable a CVE-2024-34716. La explotación de esta vulnerabilidad otorga acceso al servidor remoto como usuario www-data. La enumeración posterior revela archivos de configuración de PrestaShop que contienen credenciales de base de datos, lo que nos permite volcar y descifrar hashes de contraseñas para obtener la contraseña del usuario james. A continuación, podemos SSH en el servidor como james. Un contenedor Docker ejecutando ChangeDetection.io también está presente, vulnerable a CVE-2024-32651, que puede ser explotado para obtener un shell de root dentro del contenedor. Dentro del contenedor, los archivos de copia de seguridad de ChangeDetection.io revelan la contraseña del usuario adam, lo que permite el acceso SSH como adam. Finalmente, la escalada de privilegios a root se consigue explotando CVE-2023-47268 en la herramienta PrusaSlicer.
Matriz de la máquina
*Características de explotación de la máquina.

*Tiene una sola actualización hasta la fecha.

Comienzo enumerando los puertos, servicios y versiones.
rustscan -a 10.10.11.34 -- -sCV -oN scan.txt

1) version del SSH OpenSSH 8.9p1 Ubuntu 3ubuntu0.10.
2) Apache httpd 2.4.52.
3) Los metodos que podriamos utilizar por medio de curl, burpsuite y automatizar por medio de bash y python.
4) Nombre de dominio.
Adjunto la dirección IP al nombre de dominio para facilitar un manejo más eficiente en la web. Esto nos permite acceder a recursos que podrían no estar disponibles al utilizar solo la dirección IP.
echo '10.10.11.34 trickster.htb' | sudo tee -a /etc/hosts
Encuentro un subdominio en la página principal, enumero directorios encuentrando un repositorio /.git.

sudo sed -i 's/10.10.11.34 trickster.htb/10.10.11.34 trickster.htb shop.trickster.htb/' /etc/hosts
Obtengo el repositorio usando la herramienta git-dumper.

Encuentro un usuario adam.

Encuentro la version de PrestaShop 8.1.5.

Encontre varios exploit respecto a PrestaShop.
https://security.snyk.io/vuln/SNYK-PHP-PRESTASHOPPRESTASHOP-6846214

Las versiones afectadas son vulnerables a Cross-site Scripting (XSS) a través del formulario de contacto de front-office. Un atacante puede ejecutar secuencias de comandos arbitrarias en el contexto de la sesión del administrador al cargar un archivo malicioso, que luego se ejecuta cuando un administrador ve el archivo adjunto en el back-office.

Encuentro este sitio que especifica el PoC para obtener RCE por medio del XSS.
El exploit funciona por medio de un archivo imagen que contiene una carga útil HTML para ejecutar código JavaScript, por medio del directorio /contact-us, el admin al ver la imagen ejecuta el exploit obteniendo RCE sobre el servicio obteniendo una shell.

XSS.

Este exploit dentro de la explicación anterior, se enfoca en obtener el token CSRF y la cookie.

RCE.

Luego busca la ubicación de la webshell que contiene la revshell en exploit.html.

Se espera que la página cargue y llame a la función importTheme, la cual obtiene el token de autenticación del administrador y el token CSRF (Cross-Site Request Forgery) necesarios para facilitar la importación del tema malicioso ps_next_8_tema_malicioso.zip.

Vemos que la revshell es en php.

Me guio por este PoC.
https://github.com/aelmokhtar/CVE-2024-34716

Ejecuto el exploit y obtengo una shell del servidor, estabilizándola, enumero usuario actual, grupos que pertenece, información del sistema, usuarios conectados al sistema y liste directorios presentes y ocultos.

Enumero usuarios del sistema.

Enumero puertos abiertos.

Este archivo contiene algunos de los ajustes importantes, como los detalles de conexión a la base de datos y el mecanismo de almacenamiento en caché.

Encuentro credenciales para el servicio mysql.

Logro conectarme al servicio mysql, obteniendo 2 bases de datos una estándar y la otra interesante prestashop.

Visualizo las tablas de prestashop.

Seleccionó las columnas firstname, lastname, email, passwd, active.

Obtengo 2 hashes.

Identificó el tipo de hash.

Logro crakear la contraseña de James.

Logro acceder a la cuenta de james.

Gano flag user.

Enumero los puertos abiertos.

Encuentro un contenedor corriendo con privilegios de root y un script que hace referencia hacia /datastore.

Visualizo la interfaz del docker0

Observo la red el host del docker 172.17.0.1 y el contenedor corriendo en 172.17.0.2

Encuentro en el docker el puerto 5000 abierto.

En el puerto 5000 corre un servicio con un login, me lo paso por ssh

El sitio esta corriendo con changedetection.io, con la versión 0.45.20

Utilizo la contraseña de james para acceder.

Encuentro este CVE-2024-32651 conrespecto a la versión de changedetection.io 0.45.20.
Una inyección de plantillas del lado del servidor SSTI en changedetection.io causada por el uso de funciones inseguras de Jinja2 permite la ejecución remota de comandos en el host del servidor.

https://github.com/dgtlmoon/changedetection.io/security/advisories/GHSA-4r7v-whpg-8rx3
Envió la petición a mi entorno local.

Obtengo traza del servicio que corre en el docker con permiso de root.

En este punto me doy cuenta que se envía junto con el body, anteriormente tenía como predeterminado del CVE-2024-32651.

Esta vez estoy en escucha por medio de netcat, teniendo en texto claro la respuesta del body desde el docker, logro obtener RCE.

Vuelvo a enviar la petición pero esta vez con una revshell en bash.

Obtengo una shell del docker, estabilizo la terminal generando una nueva sesión en bash y configuro TERM.

Encuentro una base de datos en la raíz del docker.

Me lo paso comprimido con tar y codificado con base64 a mi entorno local.


Encuentro dos archivos zip.

Encuentro este archivo de configuración, parameters.php de la aplicación, encuentro las credenciales del usuario adam.

Tengo permiso para ejecutar prusaslicer sin contraseña con privilegios de root.

Trato de ejecutar prusaslicer, pero me da error, así que me pasó el archivo TRIKSTER.3mf a local.

Guiándome por este artículo de médium, para obtener ejecución arbitraria, modificando desde export mode.
(https://medium.com/@kimelmicah/prusaslicer-exploit-cve-2023-47268-5792f9e11357)

En la seccion Post-Processing script,, modifico esta sección llamando una bash de root interactiva.

Subo a trickster el archivo TRICKSTER2.3mf y lo ejecutó obteniendo una terminal de root, y ganando flag root.

You must be logged in to post a comment.