Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
skipfish — Webanwendungssicherheitsscanner erstellt von lcamtuf für Google - Inoffizieller Spiegel | Kitploit
Tools/GitHubGitHub/spinkham/skipfish
AufklärungSchwachstellenscannerWeb-SchwachstellenscannerDynamische Analyse (Sandboxing)Webanwendungs-ExploitationInformationsbeschaffungWebsicherheitFuzzingPenetrationstestsCrawler
GitHubspinkham/skipfish
872166vor 3 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →

skipfish

Webanwendungssicherheitsscanner erstellt von lcamtuf für Google - Inoffizieller Spiegel

Repository anzeigenWebseite
Teilen

=========================================== skipfish - Webanwendungssicherheits-Scanner

http://code.google.com/p/skipfish/

  • Geschrieben und gewartet von:

    Michal Zalewski [email protected] Niels Heinen [email protected] Sebastian Roschke [email protected]

  • Urheberrecht 2009 - 2012 Google Inc, alle Rechte vorbehalten.

  • Veröffentlicht unter den Bedingungen der Apache License, Version 2.0.


  1. Was ist skipfish?

Skipfish ist ein aktives Werkzeug zur Sicherheitserkundung von Webanwendungen. Es erstellt eine interaktive Sitemap für die Zielseite, indem es einen rekursiven Crawl und wörterbuchbasierte Sondierungen durchführt. Die resultierende Karte wird dann mit den Ergebnissen einer Reihe von aktiven (aber hoffentlich nicht störenden) Sicherheitsprüfungen annotiert. Der vom Tool erstellte endgültige Bericht soll als Grundlage für professionelle Sicherheitsbewertungen von Webanwendungen dienen.


  1. Warum sollte ich mich mit diesem speziellen Tool befassen?

Eine Reihe von kommerziellen und Open-Source-Tools mit ähnlicher Funktionalität sind leicht verfügbar (z.B. Nikto, Nessus); bleiben Sie bei dem, das am besten zu Ihnen passt. Dennoch versucht skipfish, einige der häufigsten Probleme im Zusammenhang mit Web-Sicherheitsscannern zu adressieren. Zu den spezifischen Vorteilen gehören:

  • Hohe Leistung: 500+ Anfragen pro Sekunde gegen reaktionsschnelle Internet-Ziele, 2000+ Anfragen pro Sekunde in LAN-/MAN-Netzwerken und 7000+ Anfragen gegen lokale Instanzen wurden beobachtet, bei einem sehr bescheidenen CPU-, Netzwerk- und Speicherbedarf. Dies ist zurückzuführen auf:

    • Multiplexing-Einzelthread, vollständig asynchrone Netzwerk-I/O und Datenverarbeitungsmodell, das Ineffizienzen bei der Speicherverwaltung, Terminierung und IPC in manchen Multithread-Clients eliminiert.

    • Erweiterte HTTP/1.1-Funktionen wie Bereichsanfragen, Inhaltskompression und Keep-Alive-Verbindungen, sowie erzwungene Begrenzung der Antwortgröße, um den Netzwerk-Overhead in Schach zu halten.

    • Intelligentes Antwort-Caching und erweiterte Heuristiken zum Serververhalten werden verwendet, um unnötigen Datenverkehr zu minimieren.

    • Leistungsorientierte, reine C-Implementierung, einschließlich eines benutzerdefinierten HTTP-Stacks.

  • Benutzerfreundlichkeit: skipfish ist hochgradig anpassungsfähig und zuverlässig. Der Scanner bietet:

    • Heuristische Erkennung obskurer pfad- und abfragebasierter Parameterverarbeitungsschemata.

    • Graziöse Handhabung von Multi-Framework-Seiten, bei denen bestimmte Pfade völlig unterschiedlichen Semantiken folgen oder unterschiedlichen Filterregeln unterliegen.

    • Automatische Wörterlistenerstellung basierend auf der Analyse des Seiteninhalts.

    • Probabilistische Scan-Funktionen, um periodische, zeitgebundene Bewertungen beliebig komplexer Websites zu ermöglichen.

    • Gut entworfene Sicherheitsprüfungen: Das Tool soll genaue und aussagekräftige Ergebnisse liefern:

      • Handgefertigte Wörterbücher bieten eine hervorragende Abdeckung und ermöglichen gründliche $keyword.$extension-Tests in einem angemessenen Zeitrahmen.

      • Dreistufige differentielle Sonden werden gegenüber Signaturprüfungen zur Erkennung von Schwachstellen bevorzugt.

      • Ratproxy-artige Logik wird verwendet, um subtile Sicherheitsprobleme zu erkennen: Cross-Site-Request-Forgery, Cross-Site-Script-Inclusion, Mixed Content, Probleme mit MIME- und Zeichensatzkonflikten, falsche Caching-Anweisungen usw.

      • Mitgelieferte Sicherheitsprüfungen sind darauf ausgelegt, knifflige Szenarien zu handhaben: gespeichertes XSS (Pfad, Parameter, Header), blinde SQL- oder XML-Injection oder blinde Shell-Injection.

      • Snort-ähnliche Inhaltsignaturen, die Serverfehler, Informationslecks oder potenziell gefährliche Webanwendungen hervorheben.

      • Die Nachbearbeitung von Berichten reduziert drastisch das Rauschen, das durch verbleibende Fehlalarme oder Server-Tricks verursacht wird, indem sich wiederholende Muster identifiziert werden.

Dennoch ist skipfish kein Allheilmittel und kann für bestimmte Zwecke ungeeignet sein. Beispielsweise erfüllt es die meisten der im WASC Web Application Security Scanner Evaluation Criteria beschriebenen Anforderungen nicht (einige bewusst, einige aus Notwendigkeit); und anders als die meisten anderen Projekte dieser Art enthält es keine umfangreiche Datenbank bekannter Schwachstellen für Bannerprüfungen.


  1. Höchst interessant! Welche spezifischen Tests sind implementiert?

Eine grobe Liste der vom Tool angebotenen Sicherheitsprüfungen ist unten aufgeführt.

  • Hochrisiko-Schwachstellen (potenziell zu Systemkompromittierung führend):

    • Serverseitige Query-Injection (einschließlich blinder Vektoren, numerischer Parameter).
    • Explizite SQL-ähnliche Syntax in GET- oder POST-Parametern.
    • Serverseitige Shell-Befehlsinjektion (einschließlich blinder Vektoren).
    • Serverseitige XML-/XPath-Injection (einschließlich blinder Vektoren).
    • Format-String-Schwachstellen.
    • Integer-Überlauf-Schwachstellen.
    • Standorte, die HTTP PUT akzeptieren.
  • Mittleres Risiko (potenziell zu Datenkompromittierung führend):

    • Gespeicherte und reflektierte XSS-Vektoren im Dokumentenkörper (minimale JS-XSS-Unterstützung).
    • Gespeicherte und reflektierte XSS-Vektoren über HTTP-Weiterleitungen.
    • Gespeicherte und reflektierte XSS-Vektoren durch HTTP-Header-Splitting.
    • Directory Traversal / LFI / RFI (einschließlich eingeschränkter Vektoren).
    • Diverse Datei-POIs (serverseitige Quellen, Konfigurationen usw.).
    • Vom Angreifer bereitgestellte Script- und CSS-Inklusionsvektoren (gespeichert und reflektiert).
    • Externe nicht vertrauenswürdige Script- und CSS-Inklusionsvektoren.
    • Mixed-Content-Probleme bei Script- und CSS-Ressourcen (optional).
    • Passwortformulare, die von oder zu Nicht-SSL-Seiten übermitteln (optional).
    • Falsche oder fehlende MIME-Typen bei darstellbaren Inhalten.
    • Generische MIME-Typen bei darstellbaren Inhalten.
    • Falsche oder fehlende Zeichensätze bei darstellbaren Inhalten.
    • Konfligierende MIME-/Zeichensatzinformationen bei darstellbaren Inhalten.
    • Schlechte Caching-Anweisungen bei Antworten, die Cookies setzen.
  • Geringes Risiko (begrenzte Auswirkungen oder geringe Spezifität):

    • Umgehungsvektoren für Directory Listings.
    • Weiterleitung zu vom Angreifer bereitgestellten URLs (gespeichert und reflektiert).
    • Vom Angreifer bereitgestellte eingebettete Inhalte (gespeichert und reflektiert).
    • Externe nicht vertrauenswürdige eingebettete Inhalte.
    • Mixed Content bei nicht scriptfähigen Subressourcen (optional).
    • HTTPS -> HTTP-Übermittlung von HTML-Formularen (optional).
    • HTTP-Anmeldeinformationen in URLs.
    • Abgelaufene oder noch nicht gültige SSL-Zertifikate.
    • HTML-Formulare ohne XSRF-Schutz.
    • Selbstsignierte SSL-Zertifikate.
    • Hostnamen-Konflikte bei SSL-Zertifikaten.
    • Schlechte Caching-Anweisungen bei weniger sensiblen Inhalten.
  • Interne Warnungen:

Neben einer Liste identifizierter Probleme bietet skipfish auch zusammenfassende Übersichten über gefundene Dokumenttypen und Problemtypen; sowie eine interaktive Sitemap, bei der durch Brute-Force entdeckte Knoten auf eine besondere Weise gekennzeichnet sind.

HINWEIS: Als bewusste Designentscheidung wird skipfish nicht redundant über hochgradig unspezifische Probleme klagen, einschließlich, aber nicht beschränkt auf:

  • Nicht-httponly oder nicht-secure Cookies,
  • Nicht-HTTPS oder autocomplete-aktivierte Formulare,
  • Auf einer Seite erkannte HTML-Kommentare,
  • Offenlegung von Dateisystempfaden in Fehlermeldungen,
  • Offenlegung der Server- oder Framework-Version,
  • Server, die TRACE- oder OPTIONS-Anfragen unterstützen,
  • Bloße Präsenz bestimmter Technologien wie WebDAV.

Die meisten dieser Aspekte lassen sich bei Bedarf leicht in einem Bericht überprüfen - zum Beispiel werden alle HTML-Formulare separat aufgelistet, ebenso wie neue Cookies oder interessante HTTP-Header - und es wird erwartet, dass der Prüfer auf der Grundlage dieser Daten gegebenenfalls bestimmte Designempfehlungen aussprechen kann. Dennoch werden diese Vorkommnisse nicht als spezifischer Sicherheitsfehler hervorgehoben.


  1. In Ordnung, ich möchte es ausprobieren. Was muss ich wissen?

Zuallererst: Bitte seien Sie nicht böse. Verwenden Sie skipfish nur gegen Dienste, die Sie besitzen oder für die Sie eine Testgenehmigung haben.

Beachten Sie, dass alle Arten von Sicherheitstests störend sein können. Obwohl der Scanner nicht darauf ausgelegt ist, böswillige Angriffe durchzuführen, kann er versehentlich den Betrieb der Website beeinträchtigen. Sie müssen das Risiko akzeptieren und entsprechend planen. Führen Sie den Scanner nach Möglichkeit gegen Testinstanzen aus, und seien Sie darauf vorbereitet, mit den Konsequenzen umzugehen, wenn etwas schief geht.

Beachten Sie auch, dass das Tool für den Einsatz durch Sicherheitsexperten gedacht ist und experimentellen Charakter hat. Es kann Fehlalarme liefern oder offensichtliche Sicherheitsprobleme übersehen - und selbst wenn es perfekt funktioniert, ist es einfach keine Point-and-Click-Anwendung. Nehmen Sie seine Ausgabe nicht für bare Münze.

Das Ausführen des Tools gegen vom Anbieter bereitgestellte Demoseiten ist kein guter Weg, um es zu bewerten, da sie Schwachstellen in der Regel sehr unvollkommen annähern; wir haben keine Anstrengungen unternommen, um diese Fälle zu berücksichtigen.

Schließlich ist der Scanner einfach nicht für den Umgang mit fehlerhaften und sich schlecht benehmenden HTTP-Servern ausgelegt - und bietet dort keine Garantien für sicheres (oder vernünftiges) Verhalten.


  1. Wie führt man den Scanner aus?

Um es zu kompilieren, entpacken Sie einfach das Archiv und versuchen Sie es mit make. Wahrscheinlich müssen Sie zuerst libidn installieren.

Als nächstes müssen Sie die Anweisungen in doc/dictionaries.txt lesen, um die richtige Wörterbuchdatei auszuwählen und korrekt zu konfigurieren. Dieser Schritt hat einen großen Einfluss auf die Qualität der Scanergebnisse später, also überspringen Sie ihn nicht.

Sobald Sie das Wörterbuch ausgewählt haben, können Sie -S verwenden, um dieses Wörterbuch zu laden, und -W, um eine anfangs leere Datei für neu gelernte seiten-spezifische Schlüsselwörter anzugeben (was bei zukünftigen Bewertungen nützlich sein wird):

$ touch new_dict.wl $ ./skipfish -o output_dir -S existing_dictionary.wl -W new_dict.wl
http://www.example.com/some/starting/path.txt

Sie können -W- verwenden, wenn Sie automatisch gelernte Schlüsselwörter nirgendwo speichern möchten.

Beachten Sie, dass Sie bei Bedarf mehr als eine Start-URL angeben können; alle werden gecrawlt. Es ist auch möglich, URLs aus einer Datei zu lesen, indem Sie die folgende Syntax verwenden:

$ ./skipfish [...other options...] @../path/to/url_list.txt

Das Tool zeigt während des Scans einige hilfreiche Statistiken an. Sie können auch durch Drücken der Eingabetaste zu einer Liste der laufenden HTTP-Anfragen wechseln.

Im obigen Beispiel wird skipfish die gesamte www.example.com scannen (einschließlich Dienste auf anderen Ports, falls von der Hauptseite verlinkt), und einen Bericht nach output_dir/index.html schreiben. Sie können diesen Bericht dann mit Ihrem bevorzugten Browser anzeigen (JavaScript muss aktiviert sein; und aufgrund neuerer Sicherheitsverbesserungen bei file:/// in bestimmten Browsern müssen Sie möglicherweise auf Ergebnisse über HTTP zugreifen). Die Datei index.html ist statisch; die eigentlichen Ergebnisse werden als Hierarchie von JSON-Dateien gespeichert, die sich bei Bedarf für die maschinelle Verarbeitung oder verschiedene Präsentations-Frontends eignen. Darüber hinaus wird eine Liste aller entdeckten URLs in einer einzigen Datei, pivots.txt, zur einfachen Nachbearbeitung gespeichert.

Ein einfaches Begleitskript, sfscandiff, kann verwendet werden, um ein Delta für zwei Scans zu berechnen, die gegen dasselbe Ziel mit denselben Flags ausgeführt wurden. Der neuere Bericht wird nicht-destruktiv annotiert, indem allen neuen oder geänderten Knoten ein roter Hintergrund hinzugefügt wird; und allen neuen oder geänderten gefundenen Problemen ein blauer Hintergrund.

Einige Websites erfordern möglicherweise eine Authentifizierung, für die unsere Unterstützung in doc/authentication.txt beschrieben ist. In den meisten Fällen werden Sie die Formularauthentifizierungsmethode verwenden wollen, die in der Lage ist, defekte Sitzungen zu erkennen, um sich erneut zu authentifizieren.

Sobald Sie authentifiziert sind, können bestimmte URLs auf der Website Ihre Sitzung abmelden; Sie können dem auf zwei Arten entgegenwirken: durch Verwendung der Option -N, die den Scanner veranlasst, Versuche zum Setzen oder Löschen von Cookies abzulehnen; oder mit dem Parameter -X, der verhindert, dass passende URLs abgerufen werden:

$ ./skipfish -X /logout/logout.aspx ...other parameters...

Die Option -X ist auch nützlich, um Ihre Scans zu beschleunigen, indem Sie /icons/, /doc/, /manuals/ und andere übliche, alltägliche Orte dieser Art ausschließen. Im Allgemeinen können Sie -X und -I (nur Spider-URLs, die einem Teilstring entsprechen) verwenden, um den Umfang eines Scans nach Belieben einzuschränken - einschließlich der Einschränkung auf ein bestimmtes Protokoll und einen bestimmten Port:

$ ./skipfish -I http://example.com:1234/ ...other parameters...

Eine verwandte Funktion, -K, ermöglicht es Ihnen, Parameternamen anzugeben, die nicht gefuzzt werden sollen (nützlich für Anwendungen, die Sitzungs-IDs in die URL setzen, um Rauschen zu minimieren).

Eine weitere nützliche Bereichsoption ist -D - sie ermöglicht es Ihnen, zusätzliche Hosts oder Domänen anzugeben, die für den Test als im Geltungsbereich betrachtet werden. Standardmäßig werden alle in den Befehlszeilen-URLs erscheinenden Hosts zur Liste hinzugefügt - aber Sie können -D verwenden, um diese Regeln zu erweitern, zum Beispiel:

$ ./skipfish -D test2.example.com -o output-dir http://test1.example.com/

...oder für einen Domänen-Wildcard-Match verwenden Sie:

$ ./skipfish -D .example.com -o output-dir http://test1.example.com/

In einigen Fällen möchten Sie eine Drittanbieter-Domäne nicht tatsächlich crawlen, aber Sie vertrauen dem Eigentümer dieser Domäne genug, um sich keine Sorgen über domänenübergreifende Inhaltseinbindung von diesem Ort zu machen. Um Warnungen zu unterdrücken, können Sie die Option -B verwenden, zum Beispiel:

$ ./skipfish -B .google-analytics.com -B .googleapis.com ...other parameters...

Standardmäßig sendet skipfish minimalistische HTTP-Header, um die Menge der über die Leitung ausgetauschten Daten zu reduzieren; einige Websites überprüfen jedoch User-Agent-Strings oder die Header-Reihenfolge, um nicht unterstützte Clients abzulehnen. In einem solchen Fall können Sie -b ie, -b ffox oder -b phone verwenden, um einen der beiden gängigen Browser (oder das iPhone) nachzuahmen.

Wenn es um die Anpassung Ihrer HTTP-Anfragen geht, können Sie auch die Option -H verwenden, um zusätzliche, nicht standardmäßige Header einzufügen; oder -F, um ein benutzerdefiniertes Mapping zwischen einem Host und einer IP zu definieren (unter Umgehung des Resolvers). Die letztere Funktion ist besonders nützlich für noch nicht gestartete oder Legacy-Dienste.

Einige Websites können zu groß sein, um in einem angemessenen Zeitrahmen gescannt zu werden. Wenn die Site gut definierte Tarpits aufweist - zum Beispiel 100.000 nahezu identische Benutzerprofile als Teil eines sozialen Netzwerks - können diese spezifischen Orte mit -X oder -S ausgeschlossen werden. In anderen Fällen müssen Sie möglicherweise auf andere Einstellungen zurückgreifen: -d begrenzt die Crawl-Tiefe auf eine bestimmte Anzahl von Unterverzeichnissen; -c begrenzt die Anzahl der Kinder pro Verzeichnis; -x begrenzt die Gesamtzahl der Nachkommen pro Crawl-Baumzweig; und -r begrenzt die Gesamtzahl der in einem Scan zu sendenden Anfragen.

Eine interessante Option steht für wiederholte Bewertungen zur Verfügung: -p. Durch die Angabe eines Prozentsatzes zwischen 1 und 100% ist es möglich, den Crawler anzuweisen, weniger als 100% aller Links zu folgen und weniger als 100% aller Wörterbucheinträge zu versuchen. Dies - natürlich - schränkt die Vollständigkeit eines Scans ein, aber im Gegensatz zu den meisten anderen Einstellungen geschieht dies auf eine ausgewogene, nicht-deterministische Weise. Es ist äußerst nützlich, wenn Sie zeitgebundene, aber regelmäßige Bewertungen Ihrer Infrastruktur einrichten. Eine weitere verwandte Option ist -q, die den initialen Zufallsseed für den Crawler auf einen bestimmten Wert setzt. Dies kann verwendet werden, um einen vorherigen Scan exakt zu reproduzieren und Ergebnisse zu vergleichen. Zufälligkeit wird am stärksten im Modus -p genutzt, aber auch für einige andere Scan-Management-Entscheidungen an anderer Stelle.

Einige besonders komplexe (oder fehlerhafte) Dienste können eine sehr hohe Anzahl identischer oder nahezu identischer Seiten umfassen. Obwohl diese Vorkommnisse standardmäßig im Bericht ausgegraut werden, verbrauchen sie dennoch etwas Bildschirmfläche und brauchen eine Weile, um auf JavaScript-Ebene verarbeitet zu werden. In solchen extremen Fällen können Sie die Option -Q verwenden, um die Meldung von doppelten Knoten vollständig zu unterdrücken, bevor der Bericht geschrieben wird. Dies kann zu einem weniger umfassenden Verständnis der Seitenorganisation führen, hat aber keine Auswirkung auf die Testabdeckung.

Bei bestimmten schnellen Bewertungen haben Sie möglicherweise auch kein Interesse daran, der gewünschten Funktionalität der Website besondere Aufmerksamkeit zu schenken - in der Hoffnung, nur nicht verlinkte Geheimnisse zu erkunden. In einem solchen Fall können Sie -P angeben, um das gesamte HTML-Parsing zu unterbinden. Dies schränkt die Abdeckung ein und nimmt dem Scanner die Fähigkeit, neue Schlüsselwörter durch das Betrachten des HTML-Codes zu lernen, beschleunigt den Test jedoch drastisch. Eine weitere ähnlich einschränkende Option, die das Risiko persistenter Effekte eines Scans reduziert, ist -O, die alle Formular-Parsing- und -Übermittlungsschritte unterbindet.

Einige Websites, die sensible Benutzerdaten verarbeiten, legen Wert auf SSL - und darauf, es richtig zu machen. Skipfish kann Ihnen optional dabei helfen, problematische Mixed-Content- oder Passwortübermittlungsszenarien zu identifizieren - verwenden Sie die Option -M, um dies zu aktivieren. Der Scanner wird sich über Situationen wie http://-Skripte, die auf https://-Seiten geladen werden, beschweren - wird aber risikoarme Szenarien wie Bilder ignorieren.

Ebenso können bestimmte penible Websites Wert auf Fälle legen, in denen das Caching auf HTTP/1.1-Ebene eingeschränkt ist, aber keine explizite HTTP/1.0-Caching-Direktive gegeben wird; die Angabe von -E in der Befehlszeile führt dazu, dass skipfish alle solchen Fälle sorgfältig protokolliert.

In manchen Fällen möchten Sie die Anfragen pro Sekunde begrenzen, um die Last auf dem Zielserver zu begrenzen (oder möglicherweise DoS-Schutz zu umgehen). Das Flag -l kann verwendet werden, um dieses Limit zu setzen, und der angegebene Wert ist die maximale Anzahl von Anfragen pro Sekunde, die skipfish ausführen soll.

Scans sollten normalerweise nicht Wochen dauern. In vielen Fällen möchten Sie wahrscheinlich die Scandauer begrenzen, damit sie in ein bestimmtes Zeitfenster passt. Dies kann mit dem Flag -k erfolgen, das die Angabe von Stunden, Minuten und Sekunden im Format H:M:S ermöglicht. Die Verwendung dieses Flags kann die Scanabdeckung beeinträchtigen, wenn das Scan-Timeout eintritt, bevor alle Seiten getestet wurden.

Schließlich kann der Prüfer bei einigen Bewertungen, die eigenständige Websites ohne umfangreiche Benutzerinhalte betreffen, Wert auf alle gesehenen externen E-Mails oder HTTP-Links legen, auch wenn sie keine unmittelbaren Sicherheitsauswirkungen haben. Verwenden Sie die Option -U, um diese protokollieren zu lassen.

Das Wörterbuchmanagement ist ein spezielles Thema und wird - wie bereits erwähnt - in doc/dictionaries.txt ausführlicher behandelt. Bitte lesen Sie diese Datei, bevor Sie fortfahren. Einige der relevanten Optionen sind -S und -W (bereits behandelt), -L zum Unterdrücken des automatischen Lernens, -G zur Begrenzung der Größe des Schlüsselwort-Rateglases, -R zum Verwerfen alter Wörterbucheinträge und -Y zur Unterdrückung teuren $keyword.$extension-Fuzzings.

Skipfish verfügt auch über einen Mechanismus zur automatischen Formularvervollständigung, um die Scanabdeckung zu maximieren. Die Werte sollten nicht bösartig sein, da sie nicht dazu gedacht sind, Sicherheitsprüfungen durchzuführen - sondern eher, um die Eingabevalidierungslogik zu umgehen. Sie können zusätzliche Regeln definieren oder vorhandene mit der Option -T überschreiben (-T form_field_name=field_value, z.B. -T login=test123 -T password=test321 - beachten Sie jedoch, dass -C und -A eine viel bessere Methode zum Einloggen sind).Es gibt auch eine Reihe von leistungsbezogenen Optionen. Verwenden Sie -g, um die maximale Anzahl von Verbindungen global für alle Ziele festzulegen (es ist sinnvoll, diese unter etwa 50 zu halten, um den TCP/IP-Stack Ihres Systems oder der nahegelegenen NAT/Firewall-Geräte nicht zu überlasten); und -m, um das Limit pro IP festzulegen (experimentieren Sie ein wenig: 2-4 ist normalerweise gut für localhost, 4-8 für lokale Netzwerke, 10-20 für externe Ziele, 30+ für wirklich langsame oder nicht-keep-alive-Hosts). Sie können auch -w verwenden, um das I/O-Timeout einzustellen (d.h. skipfish wartet nur so lange auf einen einzelnen Lese- oder Schreibvorgang), und -t, um das gesamte Request-Timeout festzulegen, um wirklich langsamen oder wirklich schnellen Seiten Rechnung zu tragen.

Schließlich steuert -f die maximale Anzahl aufeinanderfolgender HTTP-Fehler, die Sie sehen möchten, bevor der Scan abgebrochen wird; und -s legt die maximale Länge einer abzurufenden und zu parsenden Antwort fest (längere Antworten werden abgeschnitten).

Beim Scannen großer, multimedia-reicher Websites möchten Sie möglicherweise auch -e angeben. Dies verhindert, dass binäre Dokumente für Berichtszwecke im Speicher behalten werden, und gibt eine Menge RAM frei.

Weitere Ratenbegrenzung ist über Drittanbieter-Benutzermodus-Tools wie trickle oder Kernel-Level-Traffic-Shaping verfügbar.

Ach ja, und Echtzeit-Scan-Statistiken können mit -u unterdrückt werden.


  1. Aber im Ernst, wie führt man es aus?

Ein standardmäßiger, authentifizierter Scan einer gut gestalteten und in sich geschlossenen Website (warnt vor allen externen Links, E-Mails, gemischten Inhalten und Problemen mit Caching-Headern), einschließlich sanfter Brute-Force:

$ touch new_dict.wl $ ./skipfish -MEU -S dictionaries/minimal.wl -W new_dict.wl
-C "AuthCookie=value" -X /logout.aspx -o output_dir
http://www.example.com/

Fünf-Verbindungs-Crawl, aber keine Brute-Force; vorgeben, MSIE zu sein und den Inhalt von example.com vertrauen:

$ ./skipfish -m 5 -L -W- -o output_dir -b ie -B example.com
http://www.example.com/

Nur schwere Brute-Force (keine HTML-Link-Extraktion), beschränkt auf ein einzelnes Verzeichnis und Timeout nach 5 Sekunden:

$ touch new_dict.wl $ ./skipfish -S dictionaries/complete.wl -W new_dict.wl
-P -I http://www.example.com/dir1/ -o output_dir -t 5 -I
http://www.example.com/dir1/

Für eine kurze Liste aller Befehlszeilenoptionen versuchen Sie ./skipfish -h.


  1. Wie interpretiert und behandelt man die gemeldeten Probleme?

Die meisten von skipfish gemeldeten Probleme sollten selbsterklärend sein, vorausgesetzt Sie haben ein gutes Verständnis der Grundlagen der Websicherheit. Wenn Sie eine schnelle Auffrischung zu einigen der komplizierteren Themen wie MIME-Sniffing benötigen, gefällt Ihnen vielleicht unser umfassendes Browser Security Handbook als Ausgangspunkt:

http://code.google.com/p/browsersec/

Wenn Sie dennoch Hilfe benötigen, gibt es mehrere Organisationen, die beträchtliche Mühe darauf verwenden, viele der häufigsten Websicherheitsbedrohungen zu dokumentieren und zu erklären und die Öffentlichkeit zu beraten, wie man sie behandelt. Ich empfehle Ihnen, die von OWASP und dem Web Application Security Consortium veröffentlichten Materialien zu konsultieren, unter anderem:

  • http://www.owasp.org/index.php/Category:Principle
  • http://www.owasp.org/index.php/Category:OWASP_Guide_Project
  • http://www.webappsec.org/projects/articles/

Obwohl ich gerne Probleme mit dem Scanner selbst diagnostiziere, kann ich leider keine Hilfe bei den inneren Abläufen von Drittanbieter-Webanwendungen anbieten.


  1. Bekannte Einschränkungen / Wunschliste für Funktionen

Nachfolgend finden Sie eine Liste von Funktionen, die derzeit in skipfish fehlen. Wenn Sie das Tool verbessern möchten, indem Sie in einem dieser Bereiche Code beitragen, lassen Sie es mich bitte wissen:

  • Buffer-Overflow-Prüfungen: Nach sorgfältiger Überlegung vermute ich, dass es keine zuverlässige Möglichkeit gibt, Buffer Overflows remote zu testen. Ähnlich wie die tatsächliche Fehlerbedingung, nach der wir suchen, können auch ordnungsgemäße Puffergrößenprüfungen zu nicht abgefangenen Ausnahmen, 500-Nachrichten usw. führen. Ich würde mich jedoch freuen, eines Besseren belehrt zu werden.

  • Vollständige JavaScript-XSS-Erkennung: Es sind einige rudimentäre Prüfungen im Code vorhanden, aber es gibt keine eingebaute Skript-Engine zur Auswertung von Ausdrücken und DOM-Zugriffen.

  • Zeichenverbrauch/Injektionsfehler bei variabler Längenkodierung: Diese Probleme scheinen zu diesem Zeitpunkt auf Browser-Ebene weitgehend behoben zu sein, daher hatten sie zum Zeitpunkt dieses Schreibens eine viel geringere Priorität.

  • Sicherheitsprüfungen und Link-Extraktion für Drittanbieter-, plugin-basierte Inhalte (Flash, Java, PDF, etc.).

  • Passwort-Brute-Force und numerische Dateinamen-Brute-Force-Sonden.

  • Suchmaschinenintegration (vhosts, Startpfade).

  • VIEWSTATE-Dekodierung.

  • NTLM- und Digest-Authentifizierung.

  • Spezifischere PHP-Tests (Eval-Injection, RFI).

  • Proxy-Unterstützung: Eine experimentelle HTTP-Proxy-Unterstützung ist über eine #define-Direktive in config.h verfügbar. Das Hinzufügen von Unterstützung für HTTPS-Proxy ist komplizierter und noch in Arbeit.

  • Scan-Fortsetzungsoption, bessere Laufzeitinformationen.

  • Unterstützung für eigenständige Installation (make install).

  • Planungs- und Verwaltungs-Web-UI.


  1. Oy! Etwas ist furchtbar schiefgelaufen!

Es gibt keinen so guten Webcrawler, dass nicht eines Tages ein Webframework ihn in Brand setzen würde. Wenn Sie auf ein scheinbar schlechtes Verhalten stoßen (z.B. ein Scan, der ewig dauert und zu viele Anfragen generiert, völlig ungültige Knoten in der Scanausgabe oder direkte Abstürze), überprüfen Sie bitte zunächst unsere Seite mit bekannten Problemen:

http://code.google.com/p/skipfish/wiki/KnownIssues

Wenn Sie dort keine zufriedenstellende Antwort finden, kompilieren Sie den Scanner neu mit:

$ make clean debug

...und führen Sie ihn wie folgt erneut aus:

$ ./skipfish [...previous options...] 2>logfile.txt

Sie können dann logfile.txt überprüfen, um eine Vorstellung davon zu bekommen, was schiefgelaufen ist; wenn es wie ein Scannerproblem aussieht, entfernen Sie bitte alle sensiblen Informationen aus der Logdatei und senden Sie sie an den Autor.

Wenn der Scanner abgestürzt ist, kompilieren Sie ihn bitte wie oben angegeben neu und geben Sie dann Folgendes ein:

$ ulimit -c unlimited $ ./skipfish [...previous options...] 2>logfile.txt $ gdb --batch -ex back ./skipfish core

...und senden Sie dem Autor unbedingt auch die Ausgabe des letzten Befehls.


  1. Danksagungen und Feedback

Skipfish wird ermöglicht durch die Beiträge und das wertvolle Feedback des Information Security Engineering Teams von Google.

Wenn Sie Fehlerberichte, Fragen, Vorschläge oder Bedenken bezüglich der Anwendung haben, kann der Hauptautor unter [email protected] erreicht werden.

Tool herunterladen
  • Fehlgeschlagene Ressourcenabrufversuche.
  • Überschrittene Crawl-Grenzwerte.
  • Fehlgeschlagene 404-Verhaltensprüfungen.
  • IPS-Filterung erkannt.
  • Unerwartete Antwortvariationen.
  • Scheinbar falsch klassifizierte Crawl-Knoten.
  • Unspezifische Informationseinträge:

    • Allgemeine SSL-Zertifikatsinformationen.
    • Signifikant ändernde HTTP-Cookies.
    • Ändernde Server-, Via- oder X-...-Header.
    • Neue 404-Signaturen.
    • Ressourcen, auf die nicht zugegriffen werden kann.
    • Ressourcen, die HTTP-Authentifizierung erfordern.
    • Kaputte Links.
    • Serverfehler.
    • Alle nicht anderweitig klassifizierten externen Links (optional).
    • Alle externen E-Mails (optional).
    • Alle externen URL-Weiterleitungen (optional).
    • Links zu unbekannten Protokollen.
    • Formularfelder, die nicht automatisch ausgefüllt werden konnten.
    • Passworteingabeformulare (für externes Brute-Force).
    • Datei-Upload-Formulare.
    • Andere HTML-Formulare (nicht anderweitig klassifiziert).
    • Numerische Dateinamen (für externes Brute-Force).
    • Vom Benutzer bereitgestellte Links, die anderweitig auf einer Seite gerendert werden.
    • Falscher oder fehlender MIME-Typ bei weniger bedeutendem Inhalt.
    • Generischer MIME-Typ bei weniger bedeutendem Inhalt.
    • Falscher oder fehlender Zeichensatz bei weniger bedeutendem Inhalt.
    • Konfligierende MIME-/Zeichensatzinformationen bei weniger bedeutendem Inhalt.
    • OGNL-ähnliche Parameterübergabekonventionen.