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.

PrestaShop es una plataforma gratuita de código abierto diseñada específicamente para crear y administrar comercios electrónicos. En concreto, Prestashop es un CMS (Content Management System), es decir, un sistema de gestión de contenidos web como lo son, por ejemplo, WordPress, Joomla o Magento

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.

Docker es un software de código abierto utilizado para desplegar aplicaciones dentro de contenedores virtuales. La contenerización permite que varias aplicaciones funcionen en diferentes entornos complejos. Por ejemplo, Docker permite ejecutar el sistema de gestión de contenidos WordPress en sistemas Windows, Linux y macOS sin ningún problema.

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.io es una herramienta avanzada de detección y supervisión de cambios en sitios web que te mantiene informado en tiempo real. Con esta herramienta, puedes rastrear y recibir notificaciones sobre los cambios que se producen en miles de páginas web con facilidad.

ChangeDetection Exploitation manually - Remote Code Execution [RCE] (CVE-2024-32651)

Realizando una búsqueda en Internet, nos encontramos con el siguiente CVE-2024-32651.

Proceso de explotación:

  1. Configuración inicial:

    • Levantamos un servidor web en nuestro equipo atacante, con un archivo index.html básico como contenido inicial.

    • Añadimos nuestro sitio web al panel de ChangeDetection.io para que sea monitoreado por la herramienta.

  2. Aprovechamiento de la vulnerabilidad:

    • Modificamos el contenido de index.html en 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.

  3. 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.

PrusaSlicer es el software de corte para impresoras 3D de Prusa . Básicamente, "corta" un objeto 3D en capas finas y un conjunto de instrucciones que la impresora 3D puede seguir para imprimir el modelo.

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?