
pfSense CE 2.9.0-DEVELOPMENT - Hoch - Remote - RCE - QinQ parent-if ifconfig
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · pfsense-qinq-parent-if
Klasse: RCE Reichweite: Remote
pfSense CE 2.9.0-DEVELOPMENT (9363ac5) - pfsense.org
Die QinQ-Bearbeitung speichert einen Parent-Interface-Namen ohne does_interface_exist-Prüfung. Die VLAN-Bearbeitung lehnt einen Parent, der kein Live-Interface ist, bereits ab. Form_Select validiert POST nicht erneut. Erstelle write_configs selbst dann, wenn interface_qinq_configure früh zurückkehrt. Das Hinzufügen/Entfernen von Membern interpoliert anschließend das gespeicherte vlanif in unescaped ifconfig. PHP exec ist /bin/sh -c. WebGUI PHP-FPM läuft als root. Die Berechtigung ist page-interfaces-qinq-edit, nicht Diagnostics: Command.
| ID | noch keine CVE |
| Klasse | RCE |
| Reichweite | Remote (authentifizierte WebGUI) |
| CWE | 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) QinQ-Bearbeitung |
| Auth | WebGUI-Sitzung mit page-interfaces-qinq-edit |
| Lizenz | GNU Affero GPL v3.0 |
| Lab | nur 127.0.0.1 |
Ich habe den öffentlichen Master 9363ac5 gepinnt. Das Lab ist ein PHP-Gadget der gepinnten vlan_interface / interface_qinq_configure / Member-exec-Zeilen, Loopback-HTTP auf 127.0.0.1:18810.
| Methode | Sink | Berechtigung |
|---|---|---|
| POST QinQ-Erstellung mit einem Parent, der kein Live-Interface ist, dann POST-Bearbeitung zum Hinzufügen eines Members | interface_qinq2_configure exec ifconfig vlan create ... (interfaces.inc:620) | Integrität (im Lab nachgewiesen): Root-Shell über /bin/sh -c. Lab: Member-Add qinq2 schrieb den Witness (member-sink=yes). |
Dasselbe gespeicherte vlanif, POST-Bearbeitung zum Entfernen eines Members | exec("/sbin/ifconfig {$parent}.{$tag} destroy") (interfaces_qinq_edit.php:212) | Integrität (im Lab nachgewiesen): dasselbe Root-exec. Destroy hat keine IF_NAMESIZE-Begrenzung. |
| Dieselbe Root-Shell | Host-Dateisystem | Recon (abgeleitet): config.xml, Schlüssel, andere Mandanten. Diese Seite gibt exec-Ausgabe nicht aus. |
Root-Shell oder defektes ifconfig | vlan-Geräte | Verfügbarkeit (abgeleitet): vlan-Geräte erstellen/zerstören; die Datenebene ist betroffen. |
Im Lab nachgewiesen vs. abgeleitet: VLAN-Ablehnung, Create-only ohne exec, IF_NAMESIZE-Block bei Länge 16 und Member-Add-qinq2-Witness sind im Lab nachgewiesen. Dateisystem-Recon und Störung der Datenebene sind aus Root-PHP-FPM abgeleitet.
Erfordert: WebGUI-Sitzung mit page-interfaces-qinq-edit. CSRF-Token. Zwei POSTs (Erstellen, dann Member-Bearbeitung). Der Standard-Admin hat die Seite. Einem eingeschränkten Benutzer kann nur diese Seite gewährt werden.
| Angriffsfläche | Lab |
|---|---|
| VLAN-Parent-Existenzprüfung | vlan-rejected=yes |
| QinQ nur-Erstellen (Parent fehlt) | speichert Konfiguration, create-no-exec=yes |
| qinq2-Namenslänge 16 | if-namesize-block=yes vor exec |
| Unauth / CSRF ohne Token | guiconfig + CSRF-Magic |
GIF/GRE-Namens-Regex, LAGG-Member does_interface_exist + escapeshellarg | andere Seiten |
| QinQ-Listen-Löschung eines nie erstellten Parents | does_interface_exist($vlanif) |
| Diagnostics: Command | bleibt geschlossen, sofern nicht ebenfalls gewährt |
Kein Diagnostics: Command. Kein Unauth. Die historische Klasse ist CVE-2023-42326 GIF/GRE, andere Seite.
cd lab
./run.sh
Loopback 127.0.0.1:18810. Compose-Projekt pfsense-qinq-parent-if. Image-Tag pfsense-qinq-parent-if:2.9.0-dev. Witness PFSENSE-QINQ-PARENT-IF-WITNESS. Letzte Zeile:
SUCCESS PFSENSE-QINQ-PARENT-IF vlan-rejected=yes create-no-exec=yes member-sink=yes if-namesize-block=yes PFSENSE-QINQ-PARENT-IF-WITNESS
QinQ-Bearbeitung: einen Parent, der kein Live-Interface ist, ablehnen, genau wie bei der VLAN-Bearbeitung. Integer-Prüfungen für Member-Tags existieren bereits; dennoch das gespeicherte vlanif vor jedem ifconfig mit escapeshellarg behandeln. Das Destroy beim Member-Löschen genauso begrenzen, wie interface_qinq2_configure IF_NAMESIZE begrenzt.
9363ac5b8651a1c7a333180425ce7719070f95f9interfaces_qinq_edit.phpinterfaces.inc interface_qinq2_configureinterfaces_vlan_edit.php