
pfSense CE 2.9.0-DEVELOPMENT - Élevé - À distance - Reliquat de privilèges - assistant uid 0
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · pfsense-wizard-uid0
Classe : Privilège résiduel Portée : Distante
pfSense CE 2.9.0-DEVELOPMENT (9363ac5) - pfsense.org
wizard.php?xml=setup_wizard.xml étape 7 getUserEntryByUID(0) plus local_user_set_password(). Le privilège MATCH wizard.php* n'a pas de warn-root. xml= est préfixé par realpath sous /usr/local/www/wizards.
| ID | pas encore de CVE |
| Classe | Privilège résiduel |
| Portée | Distante (WebGUI authentifié sauf indication contraire) |
| CWE | CWE-269 |
| CVSS | Élevé : 8.8 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
| Produit | pfSense CE |
| Affecté | 2.9.0-DEVELOPMENT (9363ac5b8651a1c7a333180425ce7719070f95f9) |
| Auth | Session WebGUI avec page-pfsensewizardsubsystem |
| Licence | GNU Affero GPL v3.0 |
| Lab | 127.0.0.1 uniquement |
J'ai épinglé le master public 9363ac5. Le lab est un gadget PHP du sink épinglé, HTTP en loopback sur 127.0.0.1:19020.
Article de la série : https://abraxaslabs.tech/research/pfsense-ce-leftovers
| Méthode | Sink | Privilège |
|---|---|---|
| POST wizard.php?xml=setup_wizard.xml étape 7 | getUserEntryByUID(0) local_user_set_password | Intégrité : Prouvé en lab : l'étape 7 a réécrit le hash bcrypt de l'uid 0. LFI via xml= fermée (../etc/passwd et chemin absolu rejetés). |
| même résidu | même sink | Reconnaissance : Déduit : le même wizard réécrit WAN/LAN/DHCP/hostname. |
| même résidu | même sink | Disponibilité : Déduit : verrouiller l'opérateur hors du LAN. |
Nécessite : page-pfsensewizardsubsystem. CSRF-magic sur POST sauf indication contraire. Le WebGUI PHP-FPM est root.
Nécessite : page-pfsensewizardsubsystem. CSRF-magic sur POST sauf indication contraire. Le WebGUI PHP-FPM est root. CSRF-magic sur POST sauf indication contraire. Le WebGUI PHP-FPM est root.
Préfixe realpath de xml= LFI. page-system-usermanager est warn-root pour la même classe.
Pas de Diagnostics : Command sauf si cette page est également accordée.
cd lab
./run.sh
Loopback 127.0.0.1:19020. Projet Compose pfsense-wizard-uid0. Témoin PFSENSE-WIZARD-UID0-WITNESS. Loopback uniquement : 127.0.0.1:19020. Projet Compose pfsense-wizard-uid0. Témoin PFSENSE-WIZARD-UID0-WITNESS. Gadget PHP des lignes épinglées. La stack est démontée après l'exécution.
Dernière ligne :
SUCCESS PFSENSE-WIZARD-UID0 lfi-closed=yes control-no-hash-change=yes trigger-uid0-hash-change=yes wizard-no-warn-root=yes usermanager-warn-root=yes PFSENSE-WIZARD-UID0-WITNESS
Marquer wizard.php standard-warning-root, ou supprimer le mot de passe de l'uid 0 du wizard de configuration après le premier démarrage.
9363ac5b8651a1c7a333180425ce7719070f95f9