Einleitung
In diesem Lab lernen Sie, wie Sie Gobuster effektiv für die DNS-Subdomain-Enumeration nutzen, mit besonderem Fokus auf die Handhabung von Wildcard-DNS-Einträgen. Wildcard-DNS-Einträge können bei Subdomain-Scans oft zu einer großen Anzahl von False Positives führen, was die Identifizierung legitimer Subdomains erschwert. Gobuster bietet ein --wildcard-Flag, das hilft, diese Antworten herauszufiltern und somit sauberere und genauere Ergebnisse zu erzielen. Sie werden eine Domain mit einem Wildcard-Eintrag identifizieren, die Auswirkungen eines Standard-Scans beobachten und dann das --wildcard-Flag verwenden, um den Unterschied zu sehen.
Identifizieren einer Domain mit einem Wildcard-DNS-Eintrag
In diesem Schritt identifizieren Sie eine Domain, die einen Wildcard-DNS-Eintrag verwendet. Ein Wildcard-DNS-Eintrag (*.example.com) bedeutet, dass jede Subdomain, die keinen spezifischen DNS-Eintrag hat, zu einer vordefinierten IP-Adresse aufgelöst wird. Dies kann bei der Subdomain-Enumeration zu Problemen führen, da viele nicht existierende Subdomains aufzulösen scheinen, was zu False Positives führt.
Wir verwenden dig, um eine nicht existierende Subdomain für unsere Ziel-Domain wildcard.labex.io abzufragen und deren Wildcard-Verhalten zu bestätigen.
Zuerst überprüfen wir den Inhalt unserer Zieldomain-Datei:
cat ~/project/target_domain.txt
Sie sollten wildcard.labex.io als Ausgabe sehen.
Nun fragen wir eine nicht existierende Subdomain, z. B. nonexistent.wildcard.labex.io, mit dig ab. Wenn diese zu einer IP-Adresse aufgelöst wird, deutet dies auf einen vorhandenen Wildcard-Eintrag hin.
dig nonexistent.wildcard.labex.io
Beobachten Sie den ANSWER SECTION in der Ausgabe. Wenn Sie eine IP-Adresse für nonexistent.wildcard.labex.io sehen, bestätigt dies die Anwesenheit eines Wildcard-DNS-Eintrags.
; <<>> DiG 9.18.1-1ubuntu1.7-Ubuntu <<>> nonexistent.wildcard.labex.io
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12345
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;nonexistent.wildcard.labex.io. IN A
;; ANSWER SECTION:
nonexistent.wildcard.labex.io. 300 IN A 192.0.2.123 ## Example IP, will vary
;; Query time: 0 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Mon Jan 01 12:00:00 UTC 2023
;; MSG SIZE rcvd: 78
Die Anwesenheit eines ANSWER SECTION für eine eindeutig nicht existierende Subdomain bestätigt, dass wildcard.labex.io einen Wildcard-DNS-Eintrag hat.
Ausführen eines Standard-DNS-Scans und Beobachten von False Positives
In diesem Schritt führen Sie einen Standard-DNS-Subdomain-Enumerations-Scan auf wildcard.labex.io mit Gobuster ohne Wildcard-Filterung durch. Dies demonstriert, wie Wildcard-DNS-Einträge zu zahlreichen False Positives führen können, was es schwierig macht, zwischen legitimen Subdomains und solchen, die durch das Wildcard aufgelöst werden, zu unterscheiden.
Wir verwenden den Befehl gobuster dns mit dem Flag -d für die Domain und dem Flag -w für unsere Wortliste.
gobuster dns -d wildcard.labex.io -w ~/project/wordlist.txt
Beobachten Sie die Ausgabe. Sie werden wahrscheinlich feststellen, dass fast jeder Eintrag aus Ihrer Wortliste zu einer IP-Adresse aufgelöst wird, auch wenn es sich nicht um eine "echte" Subdomain handelt. Dies liegt daran, dass der Wildcard-DNS-Eintrag alle diese Abfragen abfängt und auflöst.
Gobuster v3.6
by OJ <oj@zerokopter.com>
[+] Url: wildcard.labex.io
[+] Threads: 10
[+] Wordlist: /home/labex/project/wordlist.txt
[+] Timeout: 10s
[+] User Agent: gobuster/3.6
2023/01/01 12:00:00 Starting gobuster
Found: test.wildcard.labex.io (192.0.2.123)
Found: dev.wildcard.labex.io (192.0.2.123)
Found: www.wildcard.labex.io (192.0.2.123)
Found: mail.wildcard.labex.io (192.0.2.123)
Found: blog.wildcard.labex.io (192.0.2.123)
Found: admin.wildcard.labex.io (192.0.2.123)
Found: api.wildcard.labex.io (192.0.2.123)
Found: cdn.wildcard.labex.io (192.0.2.123)
Found: ftp.wildcard.labex.io (192.0.2.123)
Found: vpn.wildcard.labex.io (192.0.2.123)
2023/01/01 12:00:05 Finished
Wie Sie sehen können, wurden alle Einträge aus der Wortliste "gefunden", was aufgrund des Wildcard-DNS-Eintrags irreführend ist. Dies verdeutlicht das Problem der False Positives bei der Subdomain-Enumeration.
Erneutes Ausführen des Scans mit dem Flag --wildcard
In diesem Schritt führen Sie den Gobuster DNS-Scan erneut aus, diesmal jedoch mit dem Flag --wildcard. Dieses Flag weist Gobuster an, eine anfängliche Prüfung auf Wildcard-DNS-Einträge durchzuführen und anschließend alle nachfolgenden Ergebnisse herauszufiltern, die auf dieselbe IP-Adresse wie das Wildcard aufgelöst werden. Dies reduziert False Positives erheblich und liefert eine wesentlich sauberere Ausgabe.
Führen Sie den Gobuster-Befehl erneut aus und fügen Sie das Flag --wildcard hinzu:
gobuster dns -d wildcard.labex.io -w ~/project/wordlist.txt --wildcard
Achten Sie genau auf die Ausgabe. Sie sollten feststellen, dass Gobuster zuerst die Wildcard-IP identifiziert und dann fortfährt, übereinstimmende Ergebnisse herauszufiltern.
Gobuster v3.6
by OJ <oj@zerokopter.com>
[+] Url: wildcard.labex.io
[+] Threads: 10
[+] Wordlist: /home/labex/project/wordlist.txt
[+] Timeout: 10s
[+] User Agent: gobuster/3.6
[+] Wildcard DNS detected. Filtering responses for 192.0.2.123 ## Example IP
2023/01/01 12:00:00 Starting gobuster
2023/01/01 12:00:05 Finished
Beachten Sie die Zeile [+] Wildcard DNS detected. Filtering responses for 192.0.2.123. Dies zeigt an, dass Gobuster die Wildcard-IP erfolgreich identifiziert hat und nun aktiv Ergebnisse herausfiltert, die darauf aufgelöst werden. In diesem speziellen Beispiel, da alle Subdomains auf die Wildcard-IP aufgelöst werden, sehen Sie möglicherweise keine "Found"-Einträge, was das korrekte Verhalten für eine Domain mit einer vollständigen Wildcard-Konfiguration und keinen legitimen Subdomains in Ihrer Wortliste ist.
Beobachten, wie Gobuster Wildcard-Antworten herausfiltert
In diesem Schritt werden wir genauer untersuchen, wie das --wildcard-Flag von Gobuster funktioniert, indem wir sein Verhalten in einem leicht modifizierten Szenario beobachten. Während unser vorheriges Beispiel eine vollständige Filterung zeigte, ist es wichtig, den Mechanismus zu verstehen. Gobuster fragt zuerst eine zufällige, nicht existierende Subdomain ab (z. B. randomstring.yourdomain.com). Wenn diese Abfrage zu einer IP-Adresse aufgelöst wird, betrachtet Gobuster diese IP-Adresse als die Wildcard-IP. Jede nachfolgende Subdomain, die während der Enumeration gefunden wird und zu derselben Wildcard-IP aufgelöst wird, wird herausgefiltert. Nur Subdomains, die zu einer anderen IP-Adresse aufgelöst werden, werden gemeldet.
Um dies zu veranschaulichen, stellen wir uns vor, unsere Domain wildcard.labex.io hätte auch eine legitime Subdomain www.wildcard.labex.io, die auf eine andere IP-Adresse zeigt. In diesem Fall würde Gobuster immer noch alle anderen Wildcard-Einträge herausfiltern, aber www.wildcard.labex.io melden.
Für die Zwecke dieses Labs, da wildcard.labex.io so konfiguriert ist, dass alle Subdomains auf dieselbe Wildcard-IP aufgelöst werden, ist die Ausgabe aus dem vorherigen Schritt (bei der keine Subdomains "gefunden" wurden) das erwartete und korrekte Verhalten, das eine effektive Filterung demonstriert.
Lassen Sie uns den Befehl erneut ausführen und uns auf die anfängliche Ausgabelinie konzentrieren, die die Wildcard-Erkennung bestätigt:
gobuster dns -d wildcard.labex.io -w ~/project/wordlist.txt --wildcard
Die wichtigste Zeile, die Sie beobachten sollten, ist: [+] Wildcard DNS detected. Filtering responses for <IP_ADDRESS>. Dies bestätigt, dass Gobuster die Wildcard-IP identifiziert hat und sie aktiv zur Filterung von Ergebnissen verwendet.
Gobuster v3.6
by OJ <oj@zerokopter.com>
[+] Url: wildcard.labex.io
[+] Threads: 10
[+] Wordlist: /home/labex/project/wordlist.txt
[+] Timeout: 10s
[+] User Agent: gobuster/3.6
[+] Wildcard DNS detected. Filtering responses for 192.0.2.123 ## Example IP
2023/01/01 12:00:00 Starting gobuster
2023/01/01 12:00:05 Finished
Dieser Schritt verstärkt das Verständnis, dass das --wildcard-Flag von Gobuster entscheidend für die Erzielung genauer Ergebnisse bei der Subdomain-Enumeration auf Domains mit Wildcard-DNS-Einträgen ist.
Analyse der saubereren, genaueren Ergebnisse
In diesem letzten Schritt analysieren Sie den Unterschied zwischen den Ergebnissen des Standard-Gobuster-Scans und des Scans mit dem --wildcard-Flag. Ziel ist es, zu erkennen, wie das --wildcard-Flag durch die Eliminierung von False Positives sauberere und genauere Ergebnisse liefert.
Erinnern Sie sich an die Ausgabe aus Schritt 2 (ohne --wildcard):
Jeder Eintrag aus der Wortliste wurde als "Found" gemeldet, obwohl sie nur aufgrund des Wildcard-DNS-Eintrags aufgelöst wurden. Diese Ausgabe ist unübersichtlich und macht es unmöglich, tatsächlich existierende Subdomains zu identifizieren.
Erinnern Sie sich an die Ausgabe aus Schritt 3 und 4 (mit --wildcard):
Gobuster gab explizit an [+] Wildcard DNS detected. Filtering responses for <IP_ADDRESS>. In unserem spezifischen Fall wurden keine "Found"-Einträge gemeldet, da alle Subdomains auf die Wildcard-IP aufgelöst werden. Dies ist das korrekte und genaue Ergebnis und zeigt an, dass keine der Subdomains in unserer Wortliste legitim ist und zu einer eindeutigen IP-Adresse aufgelöst wird.
Wenn es legitime Subdomains gäbe (z. B. www.wildcard.labex.io, die auf eine andere IP als das Wildcard aufgelöst wird), wären diese bei Verwendung des --wildcard-Flags in der Ausgabe aufgeführt worden. Dies zeigt die Leistungsfähigkeit des Flags bei der Unterscheidung zwischen echten Subdomains und Wildcard-Einträgen.
Das --wildcard-Flag ist unerlässlich für eine effiziente und genaue Subdomain-Enumeration, insbesondere bei der Arbeit mit großen Wortlisten und Domains, die Wildcard-DNS-Einträge ausgiebig nutzen. Es spart Zeit, indem es den Bedarf an manueller Filterung von False Positives reduziert und sicherstellt, dass Ihre Enumerationsbemühungen auf tatsächlich relevante Subdomains konzentriert sind.
Sie haben erfolgreich gelernt, wie Sie Wildcard-DNS-Einträge identifizieren und das --wildcard-Flag von Gobuster verwenden, um genaue Ergebnisse bei der Subdomain-Enumeration zu erzielen.
Zusammenfassung
In diesem Lab haben Sie praktische Erfahrungen im Umgang mit Wildcard-DNS-Einträgen während der Subdomain-Enumeration mit Gobuster gesammelt. Sie haben gelernt, Domains mit Wildcard-Einträgen zu identifizieren, beobachtet, wie Standard-Scans zu False Positives führen, und vor allem die Verwendung des --wildcard-Flags gemeistert, um diese irreführenden Ergebnisse herauszufiltern. Diese Fähigkeit ist entscheidend für jeden, der Reconnaissance oder Penetrationstests durchführt, da sie die Genauigkeit und Effizienz Ihres Prozesses zur Entdeckung von Subdomains sicherstellt. Durch die Anwendung des --wildcard-Flags können Sie sich auf legitime Subdomains konzentrieren und wertvolle Zeit und Ressourcen sparen.
