← All write-ups
January 8, 2024HIGHFULL DISCLOSURE

GRR : TRACE + XSS reflété chaînés vers open redirect

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

  1. 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ête TRACE et lire des en-têtes qu’un fetch/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

    Requête TRACE acceptée : les en-têtes du client sont réfléchis dans la réponse. TRACE accepté (302, pas de 405) : l’en-tête injecté est renvoyé dans le corps de la réponse.

  2. 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><!--
  3. XSS → open redirect: un handler onerror/onload redirige 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

CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N = 8.7 (High).

Remédiation

CWE-79 · CWE-601 · CWE-352 · CWE-693.