root@thehacksparrow:~/writeups$ SYSTEM ONLINE
root@sparrow:~/writeups$ cat variatype.md
// writeups

VariaType

14 Mar 2026 · 12 min read · root access
VariaType - maquina de Hack The Box

Executive summary — VariaType is a Medium Linux box with a typography theme. Fuzzing the main site reveals a reference to /tools/variable-font-generator and an internal subdomain (portal.variatype.htb) that exposes its .git, leaking source code and a gitbot credential 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 .designspace alongside the master fonts, writes a PHP webshell, and gives us a reverse shell as www-data. The pivot to the real user steve reuses the same pattern with a ZIP whose internal filename contains a command injection disguised as a .ttf font. The final escalation abuses a sudo entry 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's authorized_keys.

PlatformHack The Box
Operating systemLinux
DifficultyMedium
StatusRetired
Target IP10.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.

🔒 Clearance required

This content is Root Access only. Everything else on the site — the free tier, the whole public library — stays open.

See Root Access plans

No account? Create one free then upgrade from your console.