VariaType
Executive summary — VariaType is a Medium Linux box with a typography theme. Fuzzing the main site reveals a reference to
/tools/variable-font-generatorand an internal subdomain (portal.variatype.htb) that exposes its .git, leaking source code and agitbotcredential that turns out to be an application user, not a system one (a red herring). The foothold is CVE-2025-66034 in fontTools: the portal's variable-font generator processes a malicious.designspacealongside the master fonts, writes a PHP webshell, and gives us a reverse shell aswww-data. The pivot to the real userstevereuses the same pattern with a ZIP whose internal filename contains a command injection disguised as a.ttffont. The final escalation abuses asudoentry over a Python installer that writes a downloaded URL to a path derived from that same URL without sanitising it — with URL-encoded path traversal we overwrite root'sauthorized_keys.
| Platform | Hack The Box |
| Operating system | Linux |
| Difficulty | Medium |
| Status | Retired |
| Target IP | 10.129.12.19 |
Attack map
[80] variatype.htb -- ffuf finds /services and a reference to /tools/variable-font-generator
+-> vhost fuzzing -> internal subdomain portal.variatype.htb
|
[portal.variatype.htb] exposed .git
+-> git-dumper -> source code + "gitbot" credential (app user, NOT a system one)
|
[/tools/variable-font-generator/process] -- fontTools
+-> CVE-2025-66034: malicious .designspace + master fonts
+-> writes shell.php in public/files/ -> reverse shell as www-data (4444)
|
[www-data] ZIP with a command injection in the internal file NAME
+-> $(echo <b64>|base64 -d|bash).ttf -> runs when reprocessed in public/files/
+-> pivot to steve (5555, user.txt)
|
[steve] sudo -l -- NOPASSWD: python3 /opt/font-tools/install_validator.py <URL>
+-> setuptools.package_index.PackageIndex.download() writes to a URL-derived path
+-> URL-encoded path traversal (%2froot%2f.ssh%2fauthorized_keys)
|
[ROOT] our own SSH key injected into root authorized_keys -> ssh root
1. Reconnaissance
We add local domain resolution and start with a standard port/service scan:
echo "10.129.12.19 variatype.htb portal.variatype.htb" | sudo tee -a /etc/hosts
nmap -sC -sV variatype.htb
Port 80 exposes VariaType's main application. There's no other relevant service — the whole chain runs over HTTP.
Resumen ejecutivo — VariaType es un Medium de Linux con temática tipográfica. Fuzzeando la web principal aparece una referencia a
/tools/variable-font-generatory un subdominio interno (portal.variatype.htb) que expone su .git, filtrando código fuente y una credencialgitbotque resulta ser un usuario de la aplicación, no del sistema (pista falsa). El foothold es CVE-2025-66034 en fontTools: el generador de variable fonts del portal procesa un.designspacemalicioso junto a las fuentes maestras, escribe una webshell PHP y nos da una reverse shell comowww-data. El pivote al usuario realstevereutiliza el mismo patrón con un ZIP cuyo nombre de fichero interno contiene una inyección de comandos disfrazada de fuente.ttf. La escalada final abusa de unsudosobre un instalador Python que escribe una URL descargada en una ruta derivada de esa misma URL sin sanear — con path traversal URL-encoded sobrescribimos elauthorized_keysde root.
| Plataforma | Hack The Box |
| Sistema operativo | Linux |
| Dificultad | Medium |
| Estado | Retired |
| IP objetivo | 10.129.12.19 |
Mapa del ataque
[80] variatype.htb -- ffuf descubre /services y referencia a /tools/variable-font-generator
+-> fuzzing de vhosts -> subdominio interno portal.variatype.htb
|
[portal.variatype.htb] .git expuesto
+-> git-dumper -> codigo fuente + credencial "gitbot" (usuario de app, NO del sistema)
|
[/tools/variable-font-generator/process] -- fontTools
+-> CVE-2025-66034: .designspace + fuentes maestras maliciosas
+-> escribe shell.php en public/files/ -> reverse shell como www-data (4444)
|
[www-data] ZIP con inyeccion de comandos en el NOMBRE del fichero interno
+-> $(echo <b64>|base64 -d|bash).ttf -> se ejecuta al reprocesarse en public/files/
+-> pivote a steve (5555, user.txt)
|
[steve] sudo -l -- NOPASSWD: python3 /opt/font-tools/install_validator.py <URL>
+-> setuptools.package_index.PackageIndex.download() escribe en ruta derivada de la URL
+-> path traversal URL-encoded (%2froot%2f.ssh%2fauthorized_keys)
|
[ROOT] clave SSH propia inyectada en authorized_keys de root -> ssh root
1. Reconocimiento
Añadimos la resolución local del dominio y arrancamos con un escaneo de puertos y servicios estándar:
echo "10.129.12.19 variatype.htb portal.variatype.htb" | sudo tee -a /etc/hosts
nmap -sC -sV variatype.htb
El puerto 80 expone la aplicación principal de VariaType. No hay más servicios relevantes: todo el recorrido pasa por HTTP.
This content is Root Access only. Everything else on the site — the free tier, the whole public library — stays open.
See Root Access plansNo account? Create one free then upgrade from your console.
Este contenido es solo para Root Access. Todo lo demás del sitio — el nivel gratuito, toda la biblioteca pública — sigue abierto.
Ver planes de Root Access¿Sin cuenta? Crea una gratis y luego mejora desde tu consola.