
Ein Virtual-Host-Scanner, der Reverse-Lookups durchführt, mit Pivot-Tools verwendet werden kann, Catch-All-Szenarien erkennt, Wildcards, Aliase und dynamische Standardseiten umgeht.
Ein virtueller Host-Scanner, der mit Pivot-Tools verwendet werden kann, Catch-All-Szenarien, Aliase und dynamische Standardseiten erkennt. Erstmals vorgestellt auf SecTalks BNE im September 2017 (Slidedeck).
Dies ist eine verbesserte Version des ursprünglichen VHostScan von Codingo mit zusätzlichen Verbesserungen, modernisierter Codebasis und erweiterten Wortlisten für eine bessere virtuelle Host-Erkennung.
Anschließend die Anwendung ausführen `docker run --rm -it vhostscan -t´
VHostScan benötigt Python 3.8 oder höher. Installation mit:
$ pip install VHostScan
Oder Installation aus dem Quellcode:
$ git clone https://github.com/codingo/VHostScan.git
$ cd VHostScan
$ pip install .
Für die Entwicklung:
$ pip install -e .
Die Abhängigkeiten werden dann installiert und VHostScan wird zu Ihrem Pfad hinzugefügt.
| Argument | Beschreibung |
|---|---|
| -h, --help | Hilfemeldung anzeigen und beenden |
| -t TARGET_HOSTS | Zielhost festlegen. |
| -b BASE_HOST | Host festlegen, der bei der Substitution in der Wortliste verwendet wird (Standard: TARGET). |
| -w WORDLISTS | Die zu verwendende(n) Wortliste(n) festlegen. Sie können mehrere Wortlisten in kommagetrenntem Format angeben (z.B. -w "./wordlists/simple.txt, ./wordlists/hackthebox.txt" (Standard: ./wordlists/virtual-host-scanning.txt). Verfügbare Wortlisten: simple.txt, hackthebox.txt, common-vhosts.txt, pentest-focused.txt, cloud-modern.txt, virtual-host-scanning.txt. |
| -p PORT | Den zu verwendenden Port festlegen (Standard: 80). |
| -r REAL_PORT | Der tatsächliche Port des Webservers, der in Headern verwendet werden soll, wenn nicht 80 (siehe RFC2616 14.23), nützlich beim Pivotieren durch ssh/nc usw. (Standard: PORT). |
| --ignore-http-codes IGNORE_HTTP_CODES | Kommagetrennte Liste von HTTP-Codes, die bei Virtual-Host-Scans ignoriert werden sollen (Standard: 404). |
| --ignore-content-length IGNORE_CONTENT_LENGTH | Content-Length einer bestimmten Größe ignorieren. |
| --prefix PREFIX | Ein Präfix zu jedem Element in der Wortliste hinzufügen, z.B. dev-<word>, test-<word> usw. |
| --suffix SUFFIX | Ein Suffix zu jedem Element in der Wortliste hinzufügen, z.B. <word>dev, <word>dev |
| --first-hit | Erstes erfolgreiches Ergebnis zurückgeben. Nur in Szenarien verwenden, in denen sicher ist, dass kein Catch-All konfiguriert ist (z.B. bei einem CTF). |
| --unique-depth UNIQUE_DEPTH | Wahrscheinliche Übereinstimmungen von Seiteninhalten anzeigen, die x-mal gefunden werden (Standard: 1). |
| --ssl | Wenn gesetzt, werden Verbindungen über HTTPS statt HTTP hergestellt. |
| --fuzzy-logic | Wenn gesetzt, werden alle eindeutigen Inhaltsantworten verglichen und ein Ähnlichkeitsverhältnis für jedes Paar angegeben. Dies hilft, VHosts in Situationen zu isolieren, in denen eine Standardseite nicht statisch ist (z.B. wenn die Uhrzeit darauf angezeigt wird). |
| --no-lookups | Reverse-Lookups deaktivieren (identifiziert neue Ziele und hängt sie an die Wortliste an, standardmäßig aktiviert). |
| --rate-limit | Zeit in Sekunden, die zwischen jedem Scan verzögert werden soll (Standard: 0). |
| --random-agent | Wenn gesetzt, verwendet jeder Scan einen zufälligen User-Agent aus einer vordefinierten Liste. |
| --user-agent | Einen User-Agent für Scans angeben. |
| --waf | Wenn gesetzt, werden einfache WAF-Bypass-Header gesendet. |
| -oN OUTPUT_NORMAL | Normale Ausgabe in eine Datei, wenn die Option -oN mit einem Dateinamen angegeben wird. |
| -oG OUTPUT_GREPABLE | Grep-fähige Ausgabe in eine Datei, wenn -oG mit einem Dateinamen angegeben wird. |
| -oJ OUTPUT_JSON | JSON-Ausgabe in eine Datei, wenn die Option -oJ mit einem Dateinamen angegeben wird. |
| -v VERBOSE | Erhöht die Ausgabe des Tools, um den Fortschritt anzuzeigen |
Beachten Sie, dass einige dieser Beispiele auf 10.10.10.29 verweisen. Diese IP bezieht sich auf BANK.HTB, eine ausgemusterte Zielmaschine von HackTheBox (https://www.hackthebox.eu/).
Das einfachste Beispiel führt die Standard-Wortliste gegen example.com unter Verwendung des Standardports 80 aus:
$ VHostScan -t example.com
Wenn Ihre Verbindung SSL erfordert, können Sie Folgendes verwenden:
$ VHostScan -t example.com --ssl

Angenommen, Sie haben eine SSH-Portweiterleitung, die auf Port 4444 lauscht und Datenverkehr an Port 80 auf dem Entwicklungsrechner von example.com weiterleitet. Sie könnten Folgendes verwenden, um VHostScan über Ihren SSH-Tunnel via localhost:4444 zu verbinden, aber die Header-Anfragen so zu formatieren, dass sie einer direkten Verbindung zu Port 80 entsprechen:
$ VHostScan -t localhost -b example.com -p 4444 -r 80
VHostScan unterstützt Piping von anderen Anwendungen und behandelt an VHostScan übergebene Informationen als Wortlistendaten, zum Beispiel:
$ cat bank.htb | VHostScan -t 10.10.10.29
