Découverte de vhosts/sous-domaines par vhost-fuzzing (ffuf) avec baselines robustes, détection anti-wildcard contrôlée, gestion des redirects 3xx (curl -L + ffuf -r), parsing fiable via JSON (jq),

Présentation

mon-subdomains — Découverte de vhosts pour CTF / pentest

Ce script automatise la recherche de vhosts (Host: FUZZ.domaine) en interrogeant l’IP cible et en extrayant les hôtes valides (ex. api.domaine.htb, admin.domaine.htb).

Fonctionnement (résumé fidèle au code) :

  • Résout l’IP de la cible (getent, puis fallback dig).
  • Pré-check canonique HTB : validation TCP rapide sur 80/443 (sans ICMP).
  • Scan Nmap interne (-Pn -sV -p-) pour détecter les ports HTTP/HTTPS exposés.
  • Pour chaque port web :
    • Calcule 3 baselines (code/size/words) avec un Host aléatoire.
    • Si baseline 3xx stable : baselines après redirection (curl -L) + fuzzing avec ffuf -r.
    • Si wildcard probable : fuzzing sauté pour éviter les faux positifs.
    • Sinon : ffuf avec filtres -fs/-fw (et -ac si baseline instable), sortie JSON puis parsing jq.
  • Agrège les vhosts uniques et écrit un bloc remplacé à chaque run dans : scans_subdomains/scan_vhosts.txt

Wordlists :

  • Master par défaut : /usr/share/wordlists/htb-dns-vh-5000.txt
  • Modes : fast (1000), medium (2000), large (5000)
  • –custom FILE : utilise une wordlist personnalisée.
  • Si la master est absente : installe/régénère via ton script make-htb-wordlist.

Options utiles :

  • –save-hosts / –dry-run-hosts : ajout contrôlé des vhosts trouvés dans /etc/hosts.
  • –debug : affiche la commande ffuf et conserve les fichiers temporaires /tmp.

Usage

Usage:
mon-subdomains <domaine.htb> [mode] [options]

Modes :
-f, --fast      1000 premières lignes de la master
-m, --medium    2000 premières lignes
-l, --large     5000 (entière)
--custom FILE   Wordlist personnalisée (ignore la master)

Options :
--master FILE     Chemin de la master 5000 (défaut: /usr/share/wordlists/htb-dns-vh-5000.txt)
-t N              Threads ffuf (défaut: 50)
--timeout S       Timeout curl (défaut: 8)
--strict          Codes restreints utiles (équiv. à --codes 200,401,403)
--codes LIST      Liste pour ffuf -mc (ex: "200,401,403"; prend le dessus sur --strict)
--save-hosts      Ajoute les vhosts trouvés dans /etc/hosts (backup, sans doublon)
--dry-run-hosts   Simule l’ajout dans /etc/hosts (n’écrit rien)
--debug           Affiche la commande ffuf et garde la sortie brute (fichiers /tmp)
-V, --version     Afficher la version et quitter
-h, --help        Aide

Téléchargements

La version courante du script mon-subdomains est 2.0.0