
pfSense CE 2.9.0-DEVELOPMENT - Moyenne - À distance - XSS - Nom d'utilisateur LDAP dans head.inc
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · pfsense-auth-username-xss
Classe : XSS Portée : Distante
pfSense CE 2.9.0-DEVELOPMENT (9363ac5) - pfsense.org
Le titre de déconnexion de head.inc interpole $_SESSION['Username'] brut. Le Form_StaticText de passwordmg est également brut. Le jeu de caractères local rejette le déclencheur ; les noms LDAP l'évitent.
| ID | pas encore de CVE |
| Classe | XSS |
| Portée | Distante (WebGUI authentifié sauf indication contraire) |
| CWE | CWE-79 |
| CVSS | Moyen : 5.4 CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N |
| Produit | pfSense CE |
| Affecté | 2.9.0-DEVELOPMENT (9363ac5b8651a1c7a333180425ce7719070f95f9) |
| Auth | Session WebGUI avec LDAP/RADIUS WebGUI session |
| Licence | GNU Affero GPL v3.0 |
| Labo | 127.0.0.1 uniquement |
J'ai épinglé le master public 9363ac5. Le labo est un gadget PHP du sink épinglé, HTTP en boucle locale sur 127.0.0.1:19170.
Article de la série : https://abraxaslabs.tech/research/pfsense-ce-leftovers
| Méthode | Sink | Privilège |
|---|---|---|
| Connexion LDAP avec un nom d'utilisateur cassant les guillemets | head.inc logout title="Logout ({$_SESSION['Username']}@$system_url)" | Intégrité : Prouvé en labo : cassure de guillemets brute dans le HTML de déconnexion et StaticText. |
| même reliquat | même sink | Reconnaissance : Prouvé en labo : le nom d'utilisateur de session est reflété sur chaque page authentifiée qui inclut head.inc. |
| même reliquat | même sink | Disponibilité : Aucune démontrée. |
Nécessite : LDAP/RADIUS WebGUI session. CSRF-magic sur POST sauf indication contraire. WebGUI PHP-FPM est root.
Nécessite : LDAP/RADIUS WebGUI session. CSRF-magic sur POST sauf indication contraire. WebGUI PHP-FPM est root. CSRF-magic sur POST sauf indication contraire. WebGUI PHP-FPM est root.
Jeu de caractères local [^a-zA-Z0-9.-_]. htmlspecialchars($system_url). Non authentifié : N/A.
Pas de Diagnostics : Command sauf si cette page est également accordée.
cd lab
./run.sh
Boucle locale 127.0.0.1:19170. Projet Compose pfsense-auth-username-xss. Témoin PFSENSE-AUTH-USERNAME-XSS-WITNESS. Boucle locale uniquement : 127.0.0.1:19170. Projet Compose pfsense-auth-username-xss. Témoin PFSENSE-AUTH-USERNAME-XSS-WITNESS. Gadget PHP des lignes épinglées. La pile est démontée après l'exécution.
Dernière ligne :
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
Appliquer htmlspecialchars au nom d'utilisateur de session dans head.inc et passwordmg.
9363ac5b8651a1c7a333180425ce7719070f95f9