
pfSense CE 2.9.0-DEVELOPMENT - Moyenne - À distance - XSS - XSS stocké via le nom de fichier CP
abraxaslabs.tech · github.com/abraxas · @abraxas_null · [email protected] · pfsense-cp-filename-xss
Classe : XSS Portée : Distante
pfSense CE 2.9.0-DEVELOPMENT (9363ac5) - pfsense.org
Le nom de fichier est interpolé dans / CSS url(...) sur le HTML de connexion par défaut sans encodage. L'origine du portail n'est pas l'origine de l'interface graphique. SA-26_05 est le widget de l'interface graphique.
| ID | pas encore de CVE |
| Classe | XSS |
| Portée | Distante (WebGUI authentifiée sauf indication contraire) |
| CWE | CWE-79 |
| CVSS | Moyenne : 6.1 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 plant with page-services-captiveportal-filemanager; victim is an unauth portal client |
| 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:19110.
Article de la série : https://abraxaslabs.tech/research/pfsense-ce-leftovers
| Méthode | Sink | Privilège |
|---|---|---|
| POST du nom dans le gestionnaire de fichiers, puis GET non authentifié du HTML de connexion du portail | get_default_captive_portal_html img src={$logo_src} | Intégrité : Déduit : un script sur la page de connexion du portail peut lire auth_user / auth_pass sur cette page. |
| même reliquat | même sink | Reconnaissance : Prouvé en labo : onerror= brut plus témoin dans le HTML du portail non authentifié. La liste de l'interface graphique encodait le même nom avec htmlspecialchars. |
| même reliquat | même sink | Disponibilité : Aucune démontrée. |
Nécessite : plant with page-services-captiveportal-filemanager; victim is an unauth portal client. CSRF-magic sur POST sauf indication contraire. Le PHP-FPM de la WebGUI est root.
Nécessite : plant with page-services-captiveportal-filemanager; victim is an unauth portal client. CSRF-magic sur POST sauf indication contraire. Le PHP-FPM de la WebGUI est root. CSRF-magic sur POST sauf indication contraire. Le PHP-FPM de la WebGUI est root.
Cookies de l'interface graphique. Encodage de la liste du gestionnaire de fichiers. Widget SA-26_05.
Pas de Diagnostics : Command sauf si cette page est également accordée.
cd lab
./run.sh
Boucle locale 127.0.0.1:19110. Projet Compose pfsense-cp-filename-xss. Témoin PFSENSE-CP-FILENAME-XSS-WITNESS. Boucle locale uniquement : 127.0.0.1:19110. Projet Compose pfsense-cp-filename-xss. Témoin PFSENSE-CP-FILENAME-XSS-WITNESS. Gadget PHP des lignes épinglées. La pile est démontée après l'exécution.
Dernière ligne :
SUCCESS PFSENSE-CP-FILENAME-XSS control-inert=yes trigger-raw=yes witness-unescaped=yes gui-cookie-theft=no PFSENSE-CP-FILENAME-XSS-WITNESS
Appliquer htmlspecialchars au nom de fichier dans le HTML du portail. Restreindre le jeu de caractères des téléversements.
9363ac5b8651a1c7a333180425ce7719070f95f9