Virtual Hosts Discovery

Einführung

Virtual Hosting ist eine Technik, die es ermöglicht, mehrere Websites oder Anwendungen auf einem einzigen Server zu betreiben. Webserver wie Apache, Nginx oder IIS nutzen Virtual Hosts, um verschiedene Domains, Subdomains oder Websites auf derselben IP-Adresse zu unterscheiden. Dies geschieht durch den HTTP Host Header, den jeder HTTP-Request enthält. Virtual Hosts können auf verschiedenen Domains oder Subdomains basieren und ermöglichen eine genaue Steuerung, wie der Server Anfragen bearbeitet.

Verständnis von Virtual Hosts und Subdomains

  • Subdomains: Subdomains sind Erweiterungen eines Hauptdomain-Namens (z.B. blog.example.com als Subdomain von example.com). Sie besitzen in der Regel eigene DNS-Einträge, die auf dieselbe oder eine andere IP-Adresse wie die Hauptdomain verweisen können.

  • Virtual Hosts (VHosts): Virtual Hosts sind serverseitige Konfigurationen, die es ermöglichen, mehrere Websites auf einem Server zu betreiben. Sie können sowohl mit Top-Level-Domains (z.B. example.com) als auch mit Subdomains (z.B. dev.example.com) assoziiert sein. Virtual Hosts bieten eine präzise Kontrolle über die Verarbeitung von HTTP-Anfragen.

Ein wichtiger Aspekt bei der Analyse von VHosts ist, dass einige Subdomains nicht öffentlich bekannt sind und keine DNS-Einträge besitzen. Diese können durch spezifische Konfigurationen oder das Bearbeiten der hosts-Datei lokal zugänglich gemacht werden.

Funktionsweise: Wie ein Webserver Virtual Hosts verwendet

  1. Anfrage an den Webserver: Ein Browser sendet eine HTTP-Anfrage, wenn eine Domain in die Adresszeile eingegeben wird.

  2. Host Header-Analyse: Der Browser fügt die Domain im Host-Header hinzu, um den Webserver über die angefragte Website zu informieren.

  3. Auswahl des Virtual Hosts: Der Webserver analysiert den Host-Header und vergleicht ihn mit seinen Konfigurationen, um den passenden Virtual Host zu finden.

  4. Antwort an den Browser: Nachdem der richtige Virtual Host gefunden wurde, liefert der Webserver die zugehörigen Ressourcen zurück.

Arten von Virtual Hosting

  1. Name-Based Virtual Hosting:

    • Nutzt den HTTP Host Header, um zwischen Websites zu unterscheiden.

    • Sehr verbreitet, kosteneffizient und leicht einzurichten.

    • Probleme können bei SSL/TLS auftreten, da der Host Header nicht verschlüsselt ist.

  2. IP-Based Virtual Hosting:

    • Jede Website erhält eine eigene IP-Adresse.

    • Bietet bessere Isolation, da es nicht vom Host Header abhängt.

    • Höhere Kosten, da mehrere IP-Adressen benötigt werden.

  3. Port-Based Virtual Hosting:

    • Websites werden über verschiedene Ports auf derselben IP-Adresse gehostet.

    • Benutzer müssen den spezifischen Port in der URL angeben, was weniger benutzerfreundlich ist.

Gefährliche Einstellungen bei Virtual Hosts

  • Fehlende SSL/TLS-Konfiguration: Name-Based Hosting ohne HTTPS kann unsicher sein, da die Kommunikation im Klartext erfolgt.

  • Nicht verifizierte SSL/TLS-Zertifikate: Zertifikate müssen mit den verwendeten Domains/Subdomains übereinstimmen, sonst sind Man-in-the-Middle-Angriffe möglich.

  • Wildcard DNS-Einträge: Eine zu großzügige Verwendung von Wildcard-Einträgen (*.example.com) kann dazu führen, dass nicht autorisierte Subdomains zugänglich werden.

Grundlegende Virtual Host Commands

Apache Virtual Host Beispiel:

# Beispiel für Name-Based Virtual Hosts in Apache
<VirtualHost *:80>
    ServerName www.example1.com
    DocumentRoot /var/www/example1
</VirtualHost>

<VirtualHost *:80>
    ServerName www.example2.org
    DocumentRoot /var/www/example2
</VirtualHost>
  • ServerName: Gibt die Domain/Subdomain an, die dieser VHost bedienen soll.

  • DocumentRoot: Der Pfad zum Verzeichnis, das die Website-Dateien enthält.

Schritt-für-Schritt: Pentesting von Virtual Hosts

1. Enumeration

  • Ziel ist es, alle möglichen Virtual Hosts zu identifizieren.

  • DNS-Lookups und Reverse DNS Lookups geben erste Hinweise auf existierende Domains/Subdomains.

  • Manuelle Analyse der HTTP-Header auf verdächtige oder ungenutzte Subdomains.

2. VHost Fuzzing

  • Tools wie Gobuster, Feroxbuster und ffuf sind hilfreich, um Virtual Hosts zu entdecken, die nicht öffentlich bekannt sind.

  • Beispiel mit Gobuster:

    $ gobuster vhost -u http://<target_IP_address> -w <wordlist_file> --append-domain --domain <Domain>
  • Erklärung der Parameter:

    • -u: Ziel-URL (ersetzt <target_IP_address> mit der IP des Servers).

    • -w: Pfad zur Wordlist, die mögliche VHost-Namen enthält.

    • --append-domain: Hängt die Basisdomain an jedes Wort in der Wordlist an.

  • Weitere nützliche Parameter:

    • -t: Erhöht die Anzahl der Threads für schnelleres Scannen.

    • -k: Ignoriert SSL/TLS-Zertifikatsfehler.

    • -o: Speichert die Ausgabe in einer Datei.

Beispielausgabe von Gobuster:

$ gobuster vhost  -u http://83.136.255.36:55159 -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-110000.txt --append-domain --domain inlanefreight.htb 
===============================================================
Gobuster v3.6
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:             http://83.136.255.36:55159
[+] Method:          GET
[+] Threads:         40
[+] Wordlist:        /usr/share/seclists/Discovery/DNS/subdomains-top1million-110000.txt
[+] User Agent:      gobuster/3.6
[+] Timeout:         10s
[+] Append Domain:   true
===============================================================
Starting gobuster in VHOST enumeration mode
===============================================================
Found: forum.inlanefreight.htb Status: 200 [Size: 100]
Found: admin.inlanefreight.htb Status: 200 [Size: 100]
Found: support.inlanefreight.htb Status: 200 [Size: 104]
Found: blog.inlanefreight.htb Status: 200 [Size: 98]
Found: vm5.inlanefreight.htb Status: 200 [Size: 96]
Found: browse.inlanefreight.htb Status: 200 [Size: 102]
Found: web17611.inlanefreight.htb Status: 200 [Size: 106]
Progress: 114441 / 114442 (100.00%)
===============================================================
Finished
===============================================================
  • Analyse der Ergebnisse: Jede gefundene Subdomain sollte überprüft werden, ob sie öffentlich zugänglich ist und welche Informationen sie preisgibt.

Ergänzende Tools

  1. Gobuster: Vielseitig einsetzbar für VHost und Verzeichnis-Bruteforcing.

  2. Feroxbuster: Rust-basiertes Tool, bekannt für Geschwindigkeit und Flexibilität.

  3. ffuf: Schnell und anpassbar für verschiedene Fuzzing-Aufgaben, inklusive VHost-Erkennung.

Weitere Techniken:

  • Manuelle Bearbeitung der Hosts-Datei: Zum Testen interner Domains.

  • SSL/TLS-Zertifikate analysieren: Informationen über Domains/Subdomains sammeln.

  • DNS-Zonen-Transfers (wenn möglich): Um vollständige Einblicke in vorhandene Domains und Subdomains zu erhalten.

Diese Schritte und Techniken helfen, potenziell versteckte oder schlecht konfigurierte Virtual Hosts zu entdecken und Schwachstellen in der Webserverkonfiguration aufzudecken.

Last updated