Häufige Gobuster-Verbindungsfehler beheben

Beginner
Jetzt üben

Einleitung

In diesem Lab erhalten Sie praktische Erfahrung bei der Identifizierung und Behebung gängiger Verbindungsfehler, die bei der Verwendung von Gobuster, einem leistungsstarken Werkzeug für Brute-Force-Angriffe auf Verzeichnisse und Dateien, auftreten können. Das Verständnis dieser Fehler ist entscheidend für eine effektive Web-Enumeration und Penetrationstests. Sie werden verschiedene Netzwerkszenarien simulieren, das Verhalten von Gobuster beobachten und lernen, seine Fehlermeldungen zu interpretieren, um Ihre Scan-Strategie anzupassen. Dieser praxisorientierte Ansatz vermittelt Ihnen die Fähigkeiten, Gobuster-Probleme in realen Szenarien effizient zu beheben.

Simulation eines "Connection Refused"-Fehlers durch Anvisieren eines geschlossenen Ports

In diesem Schritt simulieren Sie einen "Connection Refused"-Fehler. Dieser Fehler tritt typischerweise auf, wenn Gobuster versucht, eine Verbindung zu einem Zielhost und -port herzustellen, aber kein Dienst auf diesem Port lauscht oder eine Firewall die Verbindung aktiv ablehnt. Sie werden einen nicht existierenden Port auf einer gängigen Website verwenden, um diesen Fehler auszulösen.

Öffnen Sie Ihr Terminal und führen Sie den folgenden gobuster-Befehl aus. Wir werden example.com auf einem hohen, unwahrscheinlichen Port (z. B. 65530) anvisieren, um einen "Connection Refused"-Fehler zu provozieren. Wir werden auch eine kleine Wortliste verwenden, um den Fehler schnell zu sehen.

gobuster dir -u http://example.com:65530 -w /usr/share/wordlists/dirb/common.txt -t 1 -k -q
  • -u http://example.com:65530: Gibt die Ziel-URL mit einem geschlossenen Port an.
  • -w /usr/share/wordlists/dirb/common.txt: Verwendet eine kleine, gängige Wortliste.
  • -t 1: Setzt die Anzahl der gleichzeitigen Threads auf 1, um den Fehler deutlicher zu machen.
  • -k: Überspringt die Überprüfung von SSL-Zertifikaten (hier nicht unbedingt erforderlich, aber gute Praxis für allgemeines Web-Scanning).
  • -q: Unterdrückt Banner- und Fortschrittsausgaben und konzentriert sich auf Fehler.

Sie sollten eine Ausgabe ähnlich der folgenden sehen, die auf "Connection Refused"-Fehler hinweist:

[!] Could not connect to http://example.com:65530: dial tcp XX.XX.XX.XX:65530: connect: connection refused

Diese Ausgabe zeigt deutlich, dass Gobuster keine Verbindung herstellen konnte, da diese vom Ziel aktiv abgelehnt wurde.

Simulation eines "Timeout"-Fehlers durch Anvisieren eines langsamen Servers mit niedrigem --timeout

In diesem Schritt simulieren Sie einen "Timeout"-Fehler. Ein Timeout tritt auf, wenn Gobuster versucht, eine Verbindung zu einem Server herzustellen oder Daten zu senden/empfangen, die Operation jedoch länger dauert als die angegebene Timeout-Dauer. Dies kann bei langsamen Servern, Netzwerküberlastung oder wenn ein Server absichtlich Antworten verzögert, vorkommen. Sie werden einen öffentlichen "Slow Server"-Endpunkt verwenden und einen sehr niedrigen Timeout-Wert festlegen, um diesen Fehler zu erzwingen.

Führen Sie den folgenden gobuster-Befehl aus. Wir werden http://slowwly.robertomurray.co.uk/delay/1000/url/http://www.google.com anvisieren, was eine Verzögerung von 1 Sekunde einführt, und einen Gobuster-Timeout von 500ms (0,5 Sekunden) festlegen.

gobuster dir -u http://slowwly.robertomurray.co.uk/delay/1000/url/http://www.google.com -w /usr/share/wordlists/dirb/common.txt -t 1 --timeout 500ms -k -q
  • -u http://slowwly.robertomurray.co.uk/delay/1000/url/http://www.google.com: Die URL, die eine Verzögerung einführt.
  • --timeout 500ms: Setzt den Verbindungs-Timeout auf 500 Millisekunden. Da der Server 1000 ms verzögert, führt dies zu einem Timeout.

Sie sollten eine Ausgabe ähnlich der folgenden sehen, die auf Timeout-Fehler hinweist:

[!] Could not connect to http://slowwly.robertomurray.co.uk/delay/1000/url/http://www.google.com: Get "http://slowwly.robertomurray.co.uk/delay/1000/url/http://www.google.com/admin": context deadline exceeded (Client.Timeout exceeded while awaiting headers)

Dies zeigt, dass der Verbindungsversuch von Gobuster abgelaufen ist, bevor eine Antwort empfangen werden konnte.

DNS-Fehler verstehen durch Anvisieren einer nicht existierenden Domain

In diesem Schritt werden Sie auf einen DNS-Fehler stoßen. Diese Art von Fehler tritt auf, wenn Gobuster den Hostnamen der Ziel-URL nicht in eine IP-Adresse auflösen kann. Dies geschieht typischerweise, wenn der Domainname falsch geschrieben ist, nicht existiert oder Probleme mit Ihrem DNS-Resolver vorliegen.

Führen Sie den folgenden gobuster-Befehl aus, der eine offensichtlich nicht existierende Domain wie nonexistentdomain12345.com anvisiert.

gobuster dir -u http://nonexistentdomain12345.com -w /usr/share/wordlists/dirb/common.txt -t 1 -k -q
  • -u http://nonexistentdomain12345.com: Zielt auf eine Domain ab, die nicht aufgelöst werden sollte.

Sie sollten eine Ausgabe ähnlich der folgenden sehen, die auf einen DNS-Lookup-Fehler hinweist:

[!] Could not connect to http://nonexistentdomain12345.com: dial tcp: lookup nonexistentdomain12345.com: no such host

Diese Fehlermeldung no such host zeigt deutlich an, dass der Domainname vom DNS-System nicht aufgelöst werden konnte.

Verwenden Sie das Flag --no-error, um diese Meldungen zu unterdrücken

In diesem Schritt lernen Sie, wie Sie das Flag --no-error in Gobuster verwenden. Während das Verständnis von Fehlern für die Fehlerbehebung wichtig ist, möchten Sie manchmal die ausführlichen Fehlermeldungen unterdrücken, insbesondere bei großen Scans, bei denen einige Verbindungsprobleme erwartet werden und Sie sich nur für erfolgreiche Ergebnisse interessieren. Das Flag --no-error weist Gobuster an, keine Verbindungsfehler auszugeben.

Lassen Sie uns den Befehl aus Schritt 1 erneut ausführen, aber diesmal das Flag --no-error hinzufügen.

gobuster dir -u http://example.com:65530 -w /usr/share/wordlists/dirb/common.txt -t 1 -k -q --no-error

Beachten Sie, dass Gobuster die Meldungen [!] Could not connect... nicht auf der Konsole ausgibt, obwohl die Verbindung immer noch verweigert wird. Die Ausgabe wird viel sauberer sein und möglicherweise nur erfolgreiche Ergebnisse (falls vorhanden, was bei einem geschlossenen Port unwahrscheinlich ist) oder nur die abschließende Zusammenfassung anzeigen.

## Keine Fehlermeldungen bezüglich "connection refused" werden angezeigt.

Dieses Flag ist nützlich, wenn Sie sich ausschließlich auf die erfolgreichen Ergebnisse Ihres Scans konzentrieren möchten, ohne von Verbindungsprotokollen überflutet zu werden.

Fehler interpretieren, um Scan-Parameter anzupassen

In diesem Schritt festigen Sie Ihr Verständnis dafür, wie Gobuster-Fehler zu interpretieren sind und wie Sie dieses Wissen nutzen können, um Ihre Scan-Parameter für effektivere Ergebnisse anzupassen. Die wichtigste Erkenntnis ist, dass unterschiedliche Fehler unterschiedliche Lösungen nahelegen.

  • "Connection Refused": Dies bedeutet oft, dass der Dienst auf diesem Port nicht läuft, eine Firewall blockiert oder der Host ausgefallen ist.
    • Aktion: Überprüfen Sie die Ziel-URL und den Port erneut. Wenn Sie sicher sind, dass der Dienst vorhanden sein sollte, untersuchen Sie Firewall-Regeln oder die Netzwerkkonnektivität. Möglicherweise müssen Sie zu einem anderen Port oder Ziel wechseln.
  • "Timeout": Dies deutet darauf hin, dass der Server langsam ist, die Netzwerklatenz hoch ist oder der Server absichtlich Antworten verzögert.
    • Aktion: Erhöhen Sie den Wert für --timeout (z. B. --timeout 5s). Sie könnten auch erwägen, die Anzahl der Threads (-t) zu reduzieren, um die Belastung des Ziels oder Ihres Netzwerks zu verringern.
  • "No such host" (DNS-Fehler): Der Domainname kann nicht aufgelöst werden.
    • Aktion: Überprüfen Sie Tippfehler im Domainnamen. Verifizieren Sie Ihre DNS-Einstellungen oder versuchen Sie, einen anderen DNS-Resolver zu verwenden. Wenn die Domain tatsächlich nicht existiert, haben Sie den falschen Ort anvisiert.

Betrachten Sie ein Szenario, in dem Sie ein Ziel scannen und häufig "Timeout"-Fehler auftreten. Basierend auf dem, was Sie gelernt haben, würden Sie Ihren Befehl anpassen, indem Sie das Timeout erhöhen. Wenn Ihr ursprünglicher Befehl beispielsweise lautete:

gobuster dir -u http://target.com -w /usr/share/wordlists/dirb/common.txt -t 20

Und Sie viele Timeouts sehen, würden Sie ihn wie folgt ändern:

gobuster dir -u http://target.com -w /usr/share/wordlists/dirb/common.txt -t 10 --timeout 5s

Hier haben Sie die Threads auf 10 reduziert und das Timeout auf 5 Sekunden erhöht, was wahrscheinlich die Erfolgsquote Ihrer Anfragen an einen langsamen Server verbessern würde.

Dieser iterative Prozess des Ausführens von Gobuster, des Beobachtens von Fehlern und des Anpassens von Parametern ist eine grundlegende Fähigkeit für eine effiziente Web-Enumeration.

Zusammenfassung

In diesem Lab haben Sie erfolgreich gelernt, gängige Gobuster-Verbindungsfehler zu identifizieren und zu beheben. Sie haben "Connection Refused", "Timeout" und DNS "No such host"-Fehler simuliert und die zugrunde liegenden Ursachen für jeden verstanden. Sie haben auch gelernt, wie Sie Fehlermeldungen mit dem Flag --no-error unterdrücken können, um eine sauberere Ausgabe zu erhalten. Am wichtigsten ist, dass Sie Einblicke in die Interpretation dieser Fehler gewonnen haben, um Ihre Gobuster-Scan-Parameter effektiv anzupassen, wie z. B. die Erhöhung des Timeouts oder die Überprüfung der Ziel-URL, um die Effizienz und Erfolgsquote Ihrer Web-Enumerationsbemühungen zu verbessern. Dieses praktische Wissen ist für jeden, der Web-Penetrationstests oder Bug-Bounty-Jagden durchführt, von unschätzbarem Wert.