
Webanwendungssicherheitsscanner erstellt von lcamtuf für Google - Inoffizieller Spiegel
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.
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.
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.
Eine grobe Liste der vom Tool angebotenen Sicherheitsprüfungen ist unten aufgeführt.
Hochrisiko-Schwachstellen (potenziell zu Systemkompromittierung führend):
Mittleres Risiko (potenziell zu Datenkompromittierung führend):
Geringes Risiko (begrenzte Auswirkungen oder geringe Spezifität):
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:
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.
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.
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.
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.
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:
Obwohl ich gerne Probleme mit dem Scanner selbst diagnostiziere, kann ich leider keine Hilfe bei den inneren Abläufen von Drittanbieter-Webanwendungen anbieten.
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.
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.
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.
Unspezifische Informationseinträge: