Recherche de 34zY / Hamza Terir sur GRR (framework open-source public). Divulgation complète après tentatives de contact restées sans réponse. Vulnérabilité découverte en 2022, PoC re-vérifiée et publiée en 2024.
Contexte
GRR, framework open-source, expose une interface web. Trois faiblesses s’y chaînent : Cross-Site Tracing (XST), XSS reflété, et open redirect.
Comment je l’ai trouvée
-
XST: la méthode HTTP TRACE est acceptée (pas de
405). TRACE renvoie la requête complète du client dans le corps de la réponse ; couplé à un XSS same-origin, un script peut émettre une requêteTRACEet lire des en-têtes qu’unfetch/XHR normal ne voit pas (y compris ceux masqués côté client).curl -v -X TRACE -H "X-Probe: xst-test" http://<cible>/day.php
TRACE accepté (302, pas de 405) : l’en-tête injecté est renvoyé dans le corps de la réponse. -
XSS reflété: une sortie non encodée sur un chemin/paramètre permet d’exécuter du JavaScript arbitraire dans l’origine de la cible :
/day.php/"><script>/* PoC */</script><!-- -
XSS → open redirect: un handler
onerror/onloadredirige la victime vers une page contrôlée par l’attaquant, tout en paraissant provenir du domaine de confiance.
La faille
Sortie utilisateur réfléchie sans encodage contextuel (CWE-79), méthode TRACE laissée active (CWE-693), redirection non validée (CWE-601), et absence de token CSRF (CWE-352). Enchaînés, ils permettent le vol de cookie de session puis le phishing crédible sous le domaine légitime.
Impact
- Vol du cookie de session via XST + XSS.
- Défiguration et hameçonnage (redirection vers un faux formulaire de connexion).
- Récupération de credentials par ingénierie sociale.
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N = 8.7 (High).
Remédiation
- Désactiver TRACE (
TraceEnable off). - Encoder en sortie toute entrée réfléchie (encodage HTML contextuel).
- CSP stricte (
script-src 'self'; default-src 'self'). - Tokens CSRF sur les formulaires mutant un état ;
X-Frame-Options: DENY.
CWE-79 · CWE-601 · CWE-352 · CWE-693.