
Un scanner d'hôtes virtuels qui effectue des recherches inverses, peut être utilisé avec des outils de pivot, détecte les scénarios 'catch-all', contourne les wildcards, les alias et les pages par défaut dynamiques.
Un scanner d'hôtes virtuels pouvant être utilisé avec des outils de pivotement, pour détecter les scénarios de type « catch-all », les alias et les pages par défaut dynamiques. Présenté pour la première fois à SecTalks BNE en septembre 2017 (diaporama).
Il s’agit d’une version améliorée du VHostScan original de Codingo avec des améliorations supplémentaires, une base de code modernisée et des listes de mots étendues pour une meilleure découverte des hôtes virtuels.
Puis exécutez l'application `docker run --rm -it vhostscan -t´
VHostScan nécessite Python 3.8 ou supérieur. Installez-le à l'aide de :
$ pip install VHostScan
Ou installez-le depuis les sources :
$ git clone https://github.com/codingo/VHostScan.git
$ cd VHostScan
$ pip install .
Pour le développement :
$ pip install -e .
Les dépendances seront alors installées et VHostScan sera ajouté à votre chemin.
| Argument | Description |
|---|---|
| -h, --help | Affiche le message d'aide et quitte |
| -t TARGET_HOSTS | Définit l'hôte cible. |
| -b BASE_HOST | Définit l'hôte à utiliser lors de la substitution dans la liste de mots (par défaut TARGET). |
| -w WORDLISTS | Définit la ou les listes de mots à utiliser. Vous pouvez spécifier plusieurs listes séparées par des virgules (ex. -w "./wordlists/simple.txt, ./wordlists/hackthebox.txt") (par défaut ./wordlists/virtual-host-scanning.txt). Listes disponibles : simple.txt, hackthebox.txt, common-vhosts.txt, pentest-focused.txt, cloud-modern.txt, virtual-host-scanning.txt. |
| -p PORT | Définit le port à utiliser (par défaut 80). |
| -r REAL_PORT | Le port réel du serveur web à utiliser dans les en-têtes lorsqu'il n'est pas 80 (voir RFC2616 14.23), utile lors d'un pivot via SSH/NC etc. (par défaut PORT). |
| --ignore-http-codes IGNORE_HTTP_CODES | Liste séparée par des virgules des codes HTTP à ignorer lors des scans d'hôtes virtuels (par défaut 404). |
| --ignore-content-length IGNORE_CONTENT_LENGTH | Ignore les longueurs de contenu d'un montant spécifié. |
| --prefix PREFIX | Ajoute un préfixe à chaque élément de la liste de mots, par exemple dev-<word>, test-<word> etc. |
| --suffix SUFFIX | Ajoute un suffixe à chaque élément de la liste de mots, par exemple <word>dev, <word>dev |
| --first-hit | Renvoie le premier résultat réussi. À utiliser uniquement dans les scénarios où vous êtes sûr qu'aucun catch-all n'est configuré (comme un CTF). |
| --unique-depth UNIQUE_DEPTH | Affiche les correspondances probables du contenu de la page trouvé x fois (par défaut 1). |
| --ssl | Si défini, les connexions seront effectuées en HTTPS au lieu de HTTP. |
| --fuzzy-logic | Si défini, toutes les réponses de contenu unique sont comparées et un ratio de similarité est donné pour chaque paire. Cela permet d'isoler les vhosts dans des situations où une page par défaut n'est pas statique (comme afficher l'heure). |
| --no-lookups | Désactive les recherches inversées (identifie de nouvelles cibles et les ajoute à la liste de mots, activé par défaut). |
| --rate-limit | Temps en secondes à attendre entre chaque scan (par défaut 0). |
| --random-agent | Si défini, chaque scan utilisera un user-agent aléatoire provenant d'une liste prédéfinie. |
| --user-agent | Spécifie un user-agent à utiliser pour les scans. |
| --waf | Si défini, des en-têtes simples de contournement WAF seront envoyés. |
| -oN OUTPUT_NORMAL | Sortie normale imprimée dans un fichier lorsque l'option -oN est spécifiée avec un argument de nom de fichier. |
| -oG OUTPUT_GREPABLE | Sortie greppable imprimée dans un fichier lorsque l'option -oG est spécifiée avec un argument de nom de fichier. |
| -oJ OUTPUT_JSON | Sortie JSON imprimée dans un fichier lorsque l'option -oJ est spécifiée avec un argument de nom de fichier. |
| -v VERBOSE | Augmente la sortie de l'outil pour afficher la progression |
Notez que plusieurs de ces exemples font référence à 10.10.10.29. Cette IP correspond à BANK.HTB, une machine cible retirée de HackTheBox (https://www.hackthebox.eu/).
L'exemple le plus simple exécute la liste de mots par défaut contre example.com en utilisant le port 80 par défaut :
$ VHostScan -t example.com
Si votre connexion nécessite SSL, vous pouvez utiliser :
$ VHostScan -t example.com --ssl

Supposons que vous ayez une redirection de port SSH écoutant sur le port 4444 et redirigeant le trafic vers le port 80 de la machine de développement d'example.com. Vous pouvez utiliser la commande suivante pour que VHostScan se connecte via votre tunnel SSH sur localhost:4444 tout en formatant les en-têtes de requête comme si la connexion se faisait directement sur le port 80 :
$ VHostScan -t localhost -b example.com -p 4444 -r 80
VHostScan prend en charge le pipe depuis d'autres applications et traitera les informations qui lui sont transmises comme des données de liste de mots, par exemple :
$ cat bank.htb | VHostScan -t 10.10.10.29
