
pfSense CE 2.9.0-DEVELOPMENT - Alta - Remota - Privilegio residual - asistente uid 0
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · pfsense-wizard-uid0
Clase: Privilegio residual Alcance: Remoto
pfSense CE 2.9.0-DEVELOPMENT (9363ac5) - pfsense.org
wizard.php?xml=setup_wizard.xml paso 7 getUserEntryByUID(0) más local_user_set_password(). El privilegio MATCH wizard.php* no tiene warn-root. xml= lleva prefijo realpath bajo /usr/local/www/wizards.
| ID | aún sin CVE |
| Clase | Privilegio residual |
| Alcance | Remoto (WebGUI autenticada salvo que se indique lo contrario) |
| CWE | CWE-269 |
| CVSS | Alto: 8.8 CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
| Producto | pfSense CE |
| Afectado | 2.9.0-DEVELOPMENT (9363ac5b8651a1c7a333180425ce7719070f95f9) |
| Auth | Sesión WebGUI con page-pfsensewizardsubsystem |
| Licencia | GNU Affero GPL v3.0 |
| Lab | solo 127.0.0.1 |
Fijé el master público 9363ac5. El lab es un gadget PHP del sink fijado, HTTP en loopback sobre 127.0.0.1:19020.
Write-up de la serie: https://abraxaslabs.tech/research/pfsense-ce-leftovers
| Método | Sink | Privilegio |
|---|---|---|
| POST wizard.php?xml=setup_wizard.xml paso 7 | getUserEntryByUID(0) local_user_set_password | Integridad: Probado en lab: el paso 7 reescribió el hash bcrypt del uid 0. LFI de xml= cerrado (../etc/passwd y ruta absoluta rechazados). |
| mismo residual | mismo sink | Recon: Inferido: el mismo wizard reescribe WAN/LAN/DHCP/hostname. |
| mismo residual | mismo sink | Disponibilidad: Inferido: dejar al operador fuera de la LAN. |
Requiere: page-pfsensewizardsubsystem. CSRF-magic en POST salvo que se indique lo contrario. WebGUI PHP-FPM es root.
Requiere: page-pfsensewizardsubsystem. CSRF-magic en POST salvo que se indique lo contrario. WebGUI PHP-FPM es root. CSRF-magic en POST salvo que se indique lo contrario. WebGUI PHP-FPM es root.
Prefijo realpath de xml= LFI. page-system-usermanager es warn-root para la misma clase.
No hay Diagnostics: Command a menos que esa página también esté concedida.
cd lab
./run.sh
Loopback 127.0.0.1:19020. Proyecto Compose pfsense-wizard-uid0. Testigo PFSENSE-WIZARD-UID0-WITNESS. Solo loopback: 127.0.0.1:19020. Proyecto Compose pfsense-wizard-uid0. Testigo PFSENSE-WIZARD-UID0-WITNESS. Gadget PHP de las líneas fijadas. El stack se desmonta tras la ejecución.
Última línea:
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
Marcar wizard.php como standard-warning-root, o eliminar la contraseña de uid 0 del asistente de configuración tras el primer arranque.
9363ac5b8651a1c7a333180425ce7719070f95f9