Trickster
Trickster es una máquina Linux de dificultad media que presenta una aplicación PrestaShop vulnerable a CVE-2024-34716. La explotación de esta vulnerabilidad otorga acceso al servidor remoto como usuario www-data. Una enumeración más detallada revela archivos de configuración de PrestaShop que contienen credenciales de base de datos, lo que nos permite volcar y descifrar hashes de contraseña para obtener la contraseña del usuario james. Luego podemos ingresar al servidor mediante SSH como james. También está presente un contenedor Docker que ejecuta ChangeDetection.io, vulnerable a CVE-2024-32651, que puede explotarse para obtener un shell raíz dentro del contenedor. Dentro del contenedor, los archivos de respaldo de ChangeDetection.io revelan la contraseña del usuario adam, que permite el acceso SSH como adam. Finalmente, la escalada de privilegios a root se logra explotando CVE-2023-47268 en la herramienta PrusaSlicer.

Reconnaissance
Realizaremos un reconocimiento con Nmap para ver los puertos que están expuestos en la máquina Trickster. Este resultado lo almacenaremos en un archivo llamado allPorts.
A través de la herramienta de extractPorts, la utilizaremos para extraer los puertos del archivo que nos generó el primer escaneo a través de Nmap. Esta herramienta nos copiará en la clipboard los puertos encontrados.
Lanzaremos scripts de reconocimiento sobre los puertos encontrados y lo exportaremos en formato oN y oX para posteriormente trabajar con ellos. Verificamos que al parecer se trata de una máquina Ubuntu que dispone de una página de Apachey el servicio de SSH.
Procederemos a transformar el archivo generado targetedXML para transformar el XML en un archivo HTML para posteriormente montar un servidor web y visualizarlo.
Accederemos a http://localhost y verificaremos el resultado en un formato más cómodo para su análisis.

Añadiremos en nuestro archivo /etc/hosts la siguiente entrada.
Web Enumeration
Accederemos a http://trickster.htb, haciendo hovering sobre los enlaces, visualizamos que hay uno de ellos que nos lleva a un subdominio de la página llamado show.trickster.htb.

Añadiremos esta nueva entrada en nuestro archivo /etc/hosts.
Accederemos a http://shop.trickster.htb y nos encontramos con la siguiente página web, de una tienda de ropa.

Realizarmeos una enumeración del sitio web a través de la herramienta de dirsearch. En el resultado obtenido, nos encontramos que al parecer está una carpeta de /.git/ expuesta.
Downloading Git Folder disclosure (GitHack)
Accederemos a http://shop.trickster.htb/.git/ para verificar si disponemos del acceso correctamente.

Accediendo a un directorio de Logs, nos encontramos con el siguiente archivo el cual mencionan que se realizó un Update del panel de Administración.

A través de la herramienta de GitHack, nos descargaremos el contenido de la carpeta /.git/ en nuestro equipo local. En el resultado obtenido, obtenemos el nombre de un directorio que empieza por admin.
Si probamos de acceder a http://shop.trickster.htb/admin634ewutrx1jgitlooaj, nos encontramos con el siguiente panel de inicio de sesión. También se nos indica la versión de PrestaShop.

Initial Foothold
PrestaShop Exploitation - XSS to RCE (CVE-2024-34716)
Realizando una búsqueda por internet de las vulnerabilidades de esta versión de PrestaShop nos encontramos con el siguiente repositorio en el cual se aprovecha del CVE original que era un XSS para convertirlo en un RCE y obtener acceso al equipo.
Nos descargaremos el repositorio de GitHub del exploit e instalaremos los requisitos.
Lanzaremos el exploit sobre la URL vulnerable de PrestaShop, le indicaremos un correo falso, nuestra dirección IP y el admin-path que encontramos anteriormente.
Al ejecutar el ataque, logramos obtener acceso al equipo como usuario www-data.
Revisando los diferentes archivos de configuración, nos encontramos con las credenciales de acceso a la base de datos que utiliza PrestaShop.
Initial Access
Enumerating Database
Probaremos de autenticarnos al MySQL con las credenciales obtenidas, al acceder sin problemas logamos visualizar las bases de datos existentes y las tablas.
Revisaremos el contenido de la tabla ps_employee, enla cual aparecen las contraseñas en formato hash.
Cracking Hashes
Analizaremos el tipo de hash del cual se trata, y a través de hashcat procederemos a intentar crackear el hash. Obtenemos la contraseña del usuario james en texto plano.
Accessing SSH with password cracked
Trataremos de acceder mediante SSH con las credenciales obtenidas del usuariojames. Verificamos que logramos obtener el acceso y visualizar la flag de user.txt.
Lateral Movement
Revisaremos si disponemos de algún puerto interno inusual. En este caso, vemos un puerto 41187, que analizamos y no logramos obtener ningún tipo de información interesante.
Revisando las tarjetas de red del equipo, nos fijamos que tiene una tarjeta de red para Docker.
Discovering new hosts and ports (fscan)
A través de la herramienta de fscan, trataremos de descubrir nuevos hosts de una red y sus puertos expuestos, similar a Nmap pero sirve más para un escaneo inicial rápido y efectivo. No hace falta que sea instalado a diferencia de Nmap.
Nos descargaremos el binario de fscan, levantaremos un servidor web para compartir el binario.
Desde el equipo víctima, nos descargaremos el binario en el equipo y le daremos permisos de ejecución.
Realizaremos un escaneo de los hosts activos de la red de Docker, en este caso, logramos encontrar un nuevo equipo en la dirección 172.17.0.2.
Trataremos de enumerar los puertos abiertos del nuevo equipo encontrado, logramos encontrar el puerto 5000.
SSH Port Forwarding
Realizaremos SSH Port Forwarding para disponer de acceso al puerto interno desde nuestro equipo local.
Accederemos desde nuestro navegador a http://127.0.0.1:8500 y nos lleva a una página de ChangeDetection. Ingresaremos las credenciales que disponemos actualmente del usuario james. Además, nos aparece la versión de la herramienta.

ChangeDetection Exploitation manually - Remote Code Execution [RCE] (CVE-2024-32651)
Realizando una búsqueda en Internet, nos encontramos con el siguiente CVE-2024-32651.
changetection.io es un servicio de detección de cambios de páginas web, seguimiento de sitios web, monitor de reabastecimiento y notificación de código abierto. Hay una inyección de plantilla del lado del servidor (SSTI) en Jinja2 que permite la ejecución remota de comandos en el host del servidor. Los atacantes pueden ejecutar cualquier comando del sistema sin ninguna restricción y podrían usar un shell inverso. El impacto es crítico ya que el atacante puede apoderarse completamente de la máquina servidor. Esto se puede reducir si la detección de cambios está detrás de una página de inicio de sesión, pero la aplicación no lo requiere (no es de forma predeterminada ni obligatorio).
Proceso de explotación:
Configuración inicial:
Levantamos un servidor web en nuestro equipo atacante, con un archivo
index.htmlbásico como contenido inicial.Añadimos nuestro sitio web al panel de ChangeDetection.io para que sea monitoreado por la herramienta.
Aprovechamiento de la vulnerabilidad:
Modificamos el contenido de
index.htmlen nuestro servidor para disparar la detección de cambios.Inyectamos un payload malicioso en la sección de notificaciones de la herramienta, diseñado para establecer una Reverse Shell.
Ganar acceso al servidor:
Al activarse la notificación (cuando se detectan los cambios en la página), el servidor ejecutará nuestro payload, permitiéndonos obtener acceso remoto al sistema.
Esta vulnerabilidad destaca por su gravedad, ya que permite a un atacante tomar control completo de la máquina, comprometiendo toda la infraestructura.
PoC manual
Añadiremos nuestra página web en la herramienta.

Una vez añadida, deberemos configurar las opciones dándole a la opción de Edit.

Especificaremos que realice el chequeo de los cambios de versión de nuestra página web en 30 segundos por ejemplo.

En la sección de Notifications, estableceremos las siguientes opciones para que haga una llamada a nuestra página web y el paylaod de la Reverse Shell. Guardaremos los cambios realizados.

Desde nuestro equipo, dispondremos de un archivo index.html, levantaremos un servidor web.
Nos pondremos en escucha por el puerto especificado en el payload. Realizaremos un par de modificaciones en el archivo de nuestra página hasta que la herramienta de ChangeDetection nos lo detecte.
Una vez nos lo detecte, enviará la notificación con el payload y obtendremos acceso al equipo, que en este caso, se trata del equipo de la red de Docker.
ChangeDetection Exploitation automatic - Remote Code Execution [RCE] (CVE-2024-32651)
Otra de las maneras más sencillas, para realizar la explotación de esta vulnerabilidad, es través del siguiente repositorio. Los otros repositorios que nos encontramos no nos funcionaban correctamente debido a la autenticación al panel de la herramienta, en este nuevo script si nos permite asignar las credenciales de acceso.
Realizaremos la explotación, le indicaremos la URL donde está la herramienta montada, nuestra dirección IP, el puerto donde estará en escucha y la contraseña del acceso al panel de ChangeDetection. Verificamos que a través de este sencillo script, logramos obtener acceso al equipo víctima.
Privilege Escalation
Docker Breakout
Nos encontramos dentro del contenedor de Docker, el cual queremos encontrar alguna vulnerabilidad, configuración para convertirnos en usuario root.
Revisando el directorio raíz /, nos encontramos con un directorio llamado datastore.
Mirando dentro del directorio, hay un directorio llamado Backups que parece ser bastante intersante revisarlo.
Dentro de esta carpeta, nos encontramos con dos archivos comprmidos de un backup de la herramienta.
Desde nuestro equipo atacante, nos pondremos en escucha para recibir el .zip y analizarlo cómodamente.
Desde la máquina víctima, no disponemos de nc para transferir el archivo. Por lo tanto, realizamos un cat del archvo y el output lo enviamos a nuestro equipo a través de /dev/tcp.
Verificamos que logramos obtener el archivo en nuestro equipo local, descomprimiremos el archivo recibido.
Al revisar el contenido del archivo descomprmido, dentro del directorio creado, nos encontramos con un archivo con extensión.br. Este tipo de archivos, lo podemos descomprimir con la herramienta de brotli.
Al descomprmir este archivo, nos genera el archivo .txt que al visualizarlo nos encontramos con las credenciales del usuario adam.
Abusing sudoers privilege (prusaslicer)
Probaremos de acceder con el usuario adam y las credenciales encontradas, logramos el acceso.
Al verificar si el usuario disponía de algún permiso de sudoers. Nos encontramos que puede ejcutar como sudo el binario /opt/PrusaSlicer/prusaslicer.
Revisando maneras de aprovecharnos de este permiso de sudoers, nos encontramos con el siguiente repositorio el cual descargaremos en nuestro equipo local.
Editaremos el archivo exploit.sh para establecer nuestra dirección IP de atacante y el puerto desde donde estaremos en escucha. Levantaremos un servidor web para transferir estos archivos al equipo víctima.
Desde el equipo víctima, nos descargaremos los archivos exploit.sh y evil.3mf.
Desde una terminal de nuestro equipo, nos pondremos en escucha por el puerto especificado en el payload para recibir la Reverse Shell.
Realizaremos la explotación para abusar de este permiso de sudoers del binario.
Revisamos que hemos logrado obtener acceso al equipo como usuario root, ya que es quien lo ha ejecutado al disponer de permisos de sudo sobre el binario indicado que ha sido aprovechado para ejecutar la Reverse Shell. Logramos visualizar la flag de root.txt.
Última actualización
¿Te fue útil?