Virtual Hosts

Les Virtual Hosts (ou hôtes virtuels) permettent à un serveur web (comme Apache, Nginx ou IIS) d'héberger plusieurs sites web ou applications différentes sur une même machine. Ils sont essentiels pour servir plusieurs contenus depuis une seule adresse IP.


🧠 Comprendre le Fonctionnement des Virtual Hosts

Un serveur web utilise l'en-tête HTTP Host pour déterminer quel site web servir. Cela permet à plusieurs noms de domaine ou sous-domaines de pointer vers la même adresse IP, tout en desservant des contenus différents.

🔁 Subdomains vs Virtual Hosts

  • Sous-domaines : Extensions du domaine principal (ex. blog.example.com). Ils disposent de leurs propres enregistrements DNS.

  • Virtual Hosts (VHosts) : Configurations internes du serveur web pour servir plusieurs sites différents depuis une même adresse IP.

⚠️ Il est possible d'accéder à un Virtual Host même sans enregistrement DNS en modifiant localement le fichier hosts.

Exemple de configuration Apache :

<VirtualHost *:80>
    ServerName www.example1.com
    DocumentRoot /var/www/example1
</VirtualHost>

<VirtualHost *:80>
    ServerName www.example2.org
    DocumentRoot /var/www/example2
</VirtualHost>

Chaque bloc gère un site différent selon la valeur de l'en-tête Host.


🧭 Comment le Serveur Web Choisit le Bon Site ?

  1. Le navigateur envoie une requête HTTP avec le nom de domaine dans l'en-tête Host

  2. Le serveur web consulte sa configuration de Virtual Hosts

  3. Il associe la requête à la bonne racine de fichiers (DocumentRoot)

  4. Il sert les fichiers correspondants

L'en-tête Host agit comme un interrupteur qui oriente le serveur vers le bon contenu.


🧱 Types de Virtual Hosting

Type
Description

Name-based

Le plus courant. Utilise l'en-tête Host. Un seul IP requis.

IP-based

Chaque site utilise une adresse IP différente. Idéal pour l'isolation.

Port-based

Chaque site répond sur un port différent (ex. :80, :8080). Peu usuel.


🕵️ Découverte de Virtual Hosts

Les VHosts peuvent être publics ou cachés. Leur découverte peut être cruciale pour l'analyse de surface d'attaque.

🔧 Outils utilisés :

Outil
Description

gobuster

Brute force d’hôtes virtuels via en-tête Host

feroxbuster

Fuzzer rapide écrit en Rust

ffuf

Fuzzer web flexible capable de tester les VHosts


🧪 Gobuster pour la Découverte de VHosts

Gobuster peut tester des milliers de noms en les injectant dans l'en-tête Host, et repérer ceux qui retournent une réponse différente.

Exemple :

0xH4shDumb@htb[/htb]$ gobuster vhost -u http://inlanefreight.htb:81 \
-w /usr/share/seclists/Discovery/DNS/subdomains-top1million-110000.txt \
--append-domain

Paramètres utiles :

  • -u : URL cible (avec IP ou domaine)

  • -w : Wordlist (ex : SecLists)

  • --append-domain : Ajoute le domaine principal aux mots du wordlist

  • -t : Nombre de threads (pour accélérer)

  • -k : Ignore les erreurs de certificat

  • -o : Sauvegarde la sortie dans un fichier

Exemple de sortie :

Found: forum.inlanefreight.htb:81 Status: 200 [Size: 100]

🕵️‍♂️ Attention à la détection

La brute-force des VHosts peut générer du trafic important et être détectée par des IDS/WAF. il est nécessaire d'avoir l’autorisation avant de lancer ce type de tests.


📄 Conclusion

Les Virtual Hosts sont une fonctionnalité puissante mais souvent négligée dans les phases de reconnaissance web. Leur découverte peut révéler des portails cachés, des environnements de test ou des applications sensibles. Maîtriser leur fonctionnement et leur exploration permet d’élargir significativement la surface d’analyse durant un pentest.


Brute-force vhosts on the target system. What is the full subdomain that is prefixed with "web"? Answer using the full domain, e.g. "x.inlanefreight.htb"

vHosts needed for these questions:

  • inlanefreight.htb

Our IP is :

  • 83.136.255.113:51426

Modifier le fichier /etc/hosts en y ajoutant cette ligne :

83.136.255.113 inlanefreight.htb

Une fois le fichier modifié, nous pouvons utiliser gobuster :

$ gobuster vhost -u http://inlanefreight.htb:51426  -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-110000.txt  -t 50  --append-domain

===============================================================
Starting gobuster in VHOST enumeration mode
===============================================================
Found: admin.inlanefreight.htb:51426 Status: 200 [Size: 100]
Found: blog.inlanefreight.htb:51426 Status: 200 [Size: 98]
Found: forum.inlanefreight.htb:51426 Status: 200 [Size: 100]
Found: support.inlanefreight.htb:51426 Status: 200 [Size: 104]
Found: vm5.inlanefreight.htb:51426 Status: 200 [Size: 96]
Found: browse.inlanefreight.htb:51426 Status: 200 [Size: 102]
Found: web17611.inlanefreight.htb:51426 Status: 200 [Size: 106]
===============================================================
Finished
===============================================================

Le nom du sous-domaine complet, associé au préfix "web" est : web17611.inlanefreight.htb.


Brute-force vhosts on the target system. What is the full subdomain that is prefixed with "vm"? Answer using the full domain, e.g. "x.inlanefreight.htb"

Nous pouvons, à l'aide du scan de la première question, répondre à celle-ci. Le nom du sous-domaine complet, associé au préfix "vm" est : vm5.inlanefreight.htb.


Brute-force vhosts on the target system. What is the full subdomain that is prefixed with "br"? Answer using the full domain, e.g. "x.inlanefreight.htb"

Nous pouvons, à l'aide du scan de la première question, répondre à celle-ci. Le nom du sous-domaine complet, associé au préfix "br" est : browse.inlanefreight.htb.


Brute-force vhosts on the target system. What is the full subdomain that is prefixed with "a"? Answer using the full domain, e.g. "x.inlanefreight.htb"

Nous pouvons, à l'aide du scan de la première question, répondre à celle-ci. Le nom du sous-domaine complet, associé au préfix "a" est : admin.inlanefreight.htb.


Brute-force vhosts on the target system. What is the full subdomain that is prefixed with "su"? Answer using the full domain, e.g. "x.inlanefreight.htb"

Nous pouvons, à l'aide du scan de la première question, répondre à celle-ci. Le nom du sous-domaine complet, associé au préfix "su" est : support.inlanefreight.htb.


Mis à jour