← All write-ups
January 8, 2024HIGHFULL DISCLOSURE

Dorksearch : XSS reflété vers open redirect

Recherche de 34zY / Hamza Terir sur Dorksearch (service public de recherche de Google Dorks). Divulgation complète après contact resté sans réponse.

Contexte

Dorksearch est un outil OSINT public utilisé par des chercheurs en sécurité et bug bounty hunters pour construire des Google Dorks. Cible à forte valeur : ses utilisateurs sont des professionnels de la sécurité.

Comment je l’ai trouvée

La page de résultats réfléchit l’entrée utilisateur sans encodage HTML et sans CSP. Un paramètre de recherche/rendu permet d’injecter du HTML/JS arbitraire :

</div><script>/* PoC : preuve d'exécution */</script><img src=x onerror="/* open redirect */"><!--

Le onerror d’une image invalide déclenche l’ouverture d’une fenêtre vers une page contrôlée par l’attaquant (open redirect), la page paraissant légitime.

PoC XSS sur Dorksearch : le payload s’exécute (defacement injecté) et ouvre une fenêtre vers une page externe. PoC : injection réfléchie exécutée sur Dorksearch, defacement rendu + fenêtre externe ouverte via onerror.

Validation technique sécurisée

Le contrôle peut être rejoué avec un marqueur inerte, sans script ni redirection :

curl --fail-with-body --max-time 5 \
  --get --data-urlencode 'q=PORTFOLIO_TEST_MARKER' \
  'https://AUTHORIZED_HOST/search'

La correction se vérifie en observant que le marqueur est encodé dans le HTML, pas interprété. Côté serveur, le principe minimal est l’encodage par contexte :

import html

def render_search_term(value: str) -> str:
    return html.escape(value, quote=True)

La CSP, HttpOnly/SameSite et la suppression de l’open redirect réduisent l’impact, mais ne remplacent pas l’encodage de sortie à chaque sink.

La faille

XSS reflété (CWE-79) : entrée non neutralisée injectée dans le HTML de sortie, aggravée par l’absence de Content-Security-Policy. Chaînée à un open redirect (CWE-601), elle permet vol de session puis phishing.

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.