pfSense CE 2.9.0-DEVELOPMENT - Hoch - Remote - RCE - OpenVPN-Assistent CRLF
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · pfsense-openvpn-wizard-crlf
Klasse: RCE Reichweite: Remote
pfSense CE 2.9.0-DEVELOPMENT (9363ac5) - pfsense.org
Der OpenVPN-Wizard kopiert Default Domain / NetBIOS scope nach dns_domain / netbios_scope ohne is_domain()-Prüfung, anschließend schreibt openvpn_add_dhcpopts() sie in eine Server-config.ovpn, die bereits script-security 3 enthält. Ein Anführungszeichen plus LF schließt die Zeile push "dhcp-option ..." und fügt Server-Direktiven einschließlich up hinzu. Die Berechtigung ist Wizard Subsystem, nicht OpenVPN advanced. Schwester von SA-26_07, die nur vpn_openvpn_server.php nannte.
| ID | noch keine CVE |
| Klasse | RCE |
| Reichweite | Remote (authentifiziertes WebGUI) |
| CWE | CWE-74 / CWE-78 |
| CVSS | High: 8.8 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
| Produkt | pfSense CE |
| Betroffen | 2.9.0-DEVELOPMENT (9363ac5b8651a1c7a333180425ce7719070f95f9) OpenVPN-Wizard |
| Auth | WebGUI-Sitzung mit page-pfsensewizardsubsystem |
| Lizenz | GNU Affero GPL v3.0 |
| Lab | nur 127.0.0.1 |
Ich habe den öffentlichen Master 9363ac5 gepinnt. Das Lab ist die gepinnte Wizard-Zuweisung plus openvpn_add_dhcpopts, dann OpenVPN 2.6.14 auf tun0. Loopback 127.0.0.1:18820. Falls 2.9.0-RELEASE dem Helper entkommen ist, ist dies dieselbe SA wie SA-26_07.
| Methode | Sink | Berechtigung |
|---|---|---|
Den OpenVPN Remote Access Wizard abschließen; Default Domain (oder NetBIOS scope) auf einen Wert setzen, der die push-Zeile schließt und up hinzufügt | openvpn_add_dhcpopts in die Server-config.ovpn (openvpn.inc:697-738) mit script-security 3 (:905) | Integrität (im Lab bewiesen): OpenVPN 2.6.14 führte dieses up auf tun0 aus und schrieb den Witness (up-exec=yes). Die Kontrolle example.com blieb ein einzelner DOMAIN-Push. |
| Dieselben Host-Befehle | OpenVPN up als Daemon-Benutzer (root auf pfSense) | Recon (abgeleitet): Host-Dateisystem, config.xml, Schlüssel. |
| Kaputte OpenVPN-Konfiguration oder Host-Befehle | OpenVPN-Server | Verfügbarkeit (abgeleitet): OpenVPN- / Firewall-Störung. |
Im Lab bewiesen vs. abgeleitet: Wizard-Zuweisung, dhcpopts up, script-security 3, control-clean und tun0 up-exec sind im Lab bewiesen. Dateisystem-Recon wird aus dem up-Prozess abgeleitet. Dasselbe Poison in einem CCD-Blob wurde nicht ausgeführt (ccd-up-ignored=yes).
Erfordert: WebGUI-Sitzung mit page-pfsensewizardsubsystem. CSRF-Token. Erfordert nicht page-openvpn-server oder page-openvpn-server-advanced.
| Angriffsfläche | Lab |
|---|---|
Kontroll-Domain example.com | ein DOMAIN-Push, control-clean=yes |
CCD up (OpenVPN-2.6-Subset) | ccd-up-ignored=yes |
| Unauth / CSRF ohne Token | geschlossen |
OpenVPN custom_options | vorgesehene erweiterte Berechtigung |
| Diagnostics: Command | bleibt geschlossen, sofern nicht ebenfalls gewährt |
cd lab
./run.sh
Loopback 127.0.0.1:18820. Compose-Projekt pfsense-openvpn-wizard-crlf. Image-Tag pfsense-openvpn-wizard-crlf:2.9.0-dev. Witness PFSENSE-OPENVPN-WIZARD-CRLF-WITNESS. Letzte Zeile:
SUCCESS PFSENSE-OPENVPN-WIZARD-CRLF wizard-assign=yes dhcpopts-up=yes script-security-3=yes control-clean=yes up-exec=yes PFSENSE-OPENVPN-WIZARD-CRLF-WITNESS
is_domain() (oder CR/LF/Anführungszeichen entfernen) auf Wizard defaultdomain / nbtscope anwenden, bevor daraus dns_domain / netbios_scope wird, so wie es IPsec mobile bereits tut. Innerhalb von openvpn_add_dhcpopts() bereinigen, damit jeder Aufrufer abgedeckt ist, einschließlich des Wizards.
9363ac5b8651a1c7a333180425ce7719070f95f9openvpn_wizard.incopenvpn.inc openvpn_add_dhcpoptsfd301381 (nicht in diesem öffentlichen Tree)