
pfSense CE 2.9.0-DEVELOPMENT - Media - Remoto - XSS - Nombre de usuario LDAP en head.inc
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · pfsense-auth-username-xss
Clase: XSS Alcance: Remoto
pfSense CE 2.9.0-DEVELOPMENT (9363ac5) - pfsense.org
El título de cierre de sesión de head.inc interpola $_SESSION['Username'] sin procesar. El Form_StaticText de passwordmg también está sin procesar. El conjunto de caracteres local rechaza el disparador; los nombres LDAP lo omiten.
| ID | aún sin CVE |
| Clase | XSS |
| Alcance | Remoto (WebGUI autenticada salvo que se indique lo contrario) |
| CWE | CWE-79 |
| CVSS | Medio: 5.4 CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N |
| Producto | pfSense CE |
| Afectado | 2.9.0-DEVELOPMENT (9363ac5b8651a1c7a333180425ce7719070f95f9) |
| Autenticación | Sesión WebGUI con LDAP/RADIUS WebGUI session |
| Licencia | GNU Affero GPL v3.0 |
| Laboratorio | solo 127.0.0.1 |
Fijé el master público 9363ac5. El laboratorio es un gadget PHP del sink fijado, HTTP en loopback sobre 127.0.0.1:19170.
Artículo de la serie: https://abraxaslabs.tech/research/pfsense-ce-leftovers
| Método | Sink | Privilegio |
|---|---|---|
| Inicio de sesión LDAP con un nombre de usuario que rompe comillas | head.inc logout title="Logout ({$_SESSION['Username']}@$system_url)" | Integridad: Probado en laboratorio: ruptura de comillas sin procesar en el HTML de cierre de sesión y en StaticText. |
| mismo remanente | mismo sink | Reconocimiento: Probado en laboratorio: el nombre de usuario de la sesión se refleja en cada página autenticada que incluye head.inc. |
| mismo remanente | mismo sink | Disponibilidad: Ninguna mostrada. |
Requiere: LDAP/RADIUS WebGUI session. CSRF-magic en POST salvo que se indique lo contrario. WebGUI PHP-FPM es root.
Requiere: LDAP/RADIUS WebGUI session. 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.
Conjunto de caracteres local [^a-zA-Z0-9.-_]. htmlspecialchars($system_url). Sin autenticación N/A.
Sin Diagnostics: Command a menos que esa página también esté concedida.
cd lab
./run.sh
Loopback 127.0.0.1:19170. Proyecto Compose pfsense-auth-username-xss. Testigo PFSENSE-AUTH-USERNAME-XSS-WITNESS. Solo loopback: 127.0.0.1:19170. Proyecto Compose pfsense-auth-username-xss. Testigo PFSENSE-AUTH-USERNAME-XSS-WITNESS. Gadget PHP de las líneas fijadas. El stack se desmonta tras la ejecución.
Última línea:
SUCCESS PFSENSE-AUTH-USERNAME-XSS control-admin-encoded=yes trigger-quote-break=yes witness-unescaped=yes local-charset-blocks-trigger=yes PFSENSE-AUTH-USERNAME-XSS-WITNESS
Aplicar htmlspecialchars al nombre de usuario de la sesión en head.inc y passwordmg.
9363ac5b8651a1c7a333180425ce7719070f95f9