Wapiti – selbstständige Überprüfung einer Website auf Schwachstellen

Wapiti – selbstständige Überprüfung einer Website auf Schwachstellen
In der Vergangenheit Artikel Wir haben darüber geredet Nemesida WAF Kostenlos – ein kostenloses Tool zum Schutz von Websites und APIs vor Hackerangriffen. In diesem Fall haben wir uns entschieden, einen beliebten Schwachstellenscanner zu testen Wapiti.

Das Scannen einer Website auf Schwachstellen ist eine notwendige Maßnahme, die es Ihnen in Verbindung mit der Analyse des Quellcodes ermöglicht, den Grad ihrer Sicherheit gegen Bedrohungen durch Kompromittierung einzuschätzen. Sie können eine Webressource mit speziellen Tools scannen.

Nikto, W3af (geschrieben in Python 2.7, das nicht mehr unterstützt wird) oder Arachni (seit Februar nicht mehr unterstützt) sind die beliebtesten Lösungen, die im kostenlosen Segment vorgestellt werden. Natürlich gibt es noch andere, zum Beispiel Wapiti, auf die wir uns konzentrieren wollten.

Wapiti arbeitet mit den folgenden Arten von Schwachstellen:

  • Dateierweiterung (lokal und remote, fopen, readfile);
  • Injektionen (PHP/JSP/ASP/SQL-Injektion und XPath-Injektion);
  • XSS (Cross Site Scripting) (reflektiv und persistent);
  • Erkennung und Ausführung von Befehlen (eval(), system(), passru());
  • CRLF-Injektionen (HTTP-Antwortaufteilung, Sitzungsfixierung);
  • XXE-Einbettung (externe XML-Entität);
  • SSRF (Server Side Request Forgery);
  • Verwendung bekannter potenziell gefährlicher Dateien (dank der Nikto-Datenbank);
  • schwache .htaccess-Konfigurationen, die umgangen werden können;
  • das Vorhandensein von Sicherungsdateien, die vertrauliche Informationen preisgeben (Offenlegung des Quellcodes);
  • Neurose;
  • offene Weiterleitungen;
  • Nicht standardmäßige HTTP-Methoden, die aufgelöst werden können (PUT).

Features:

  • HTTP-, HTTPS- und SOCKS5-Proxy-Unterstützung;
  • Authentifizierung mit mehreren Methoden: Basic, Digest, Kerberos oder NTLM;
  • die Möglichkeit, den Scanbereich (Domäne, Ordner, Seite, URL) einzuschränken;
  • automatisches Entfernen eines der Parameter in der URL;
  • mehrere Vorkehrungen gegen endlose Scan-Schleifen (Beispiel: ifor, Grenzwerte für einen Parameter);
  • Möglichkeit, Priorität für die Untersuchung von URLs festzulegen (auch wenn diese sich nicht im Scanbereich befinden);
  • Möglichkeit, einige URLs von Scans und Angriffen auszuschließen (z. B. URL-Abmeldung);
  • Cookies importieren (holen Sie sie mit dem Tool wapiti-getcookie);
  • Möglichkeit, die SSL-Zertifikatsüberprüfung zu aktivieren/deaktivieren;
  • die Möglichkeit, URLs aus JavaScript zu extrahieren (ein sehr einfacher JS-Interpreter);
  • Interaktion mit HTML5;
  • mehrere Optionen zum Verwalten des Crawler-Verhaltens und der Einschränkungen;
  • Festlegen der maximalen Zeit für den Scanvorgang;
  • Hinzufügen einiger benutzerdefinierter HTTP-Header oder Einrichten eines benutzerdefinierten Benutzeragenten.

Zusätzliche Funktionen:

  • Erstellen von Schwachstellenberichten in verschiedenen Formaten (HTML, XML, JSON, TXT);
  • Anhalten und Fortsetzen eines Scans oder Angriffs (Sitzungsmechanismus unter Verwendung von SQLite3-Datenbanken);
  • Hintergrundbeleuchtung im Terminal, um Schwachstellen hervorzuheben;
  • verschiedene Protokollierungsstufen;
  • Eine schnelle und einfache Möglichkeit, Angriffsmodule zu aktivieren/deaktivieren.

Einstellung

Die aktuelle Version von Wapiti kann auf zwei Arten installiert werden:

  • Laden Sie die Quelle vom Beamten herunter Standort und führen Sie das Installationsskript aus, nachdem Sie zuvor Python3 installiert haben;
  • Verwenden Sie den Befehl pip3 install wapiti3.

Danach ist Wapiti einsatzbereit.

Arbeiten mit dem Tool

Um die Arbeit von Wapiti zu demonstrieren, verwenden wir einen speziell vorbereiteten Stand sites.vulns.pentestit.ru (interne Ressource), der verschiedene Schwachstellen (Injection, XSS, LFI/RFI) und andere Mängel von Webanwendungen enthält.

Die Informationen dienen ausschließlich Informationszwecken. Brechen Sie nicht das Gesetz!

Grundlegender Befehl zum Starten des Scanners:

# wapiti -u <target> <options>

Gleichzeitig gibt es recht detaillierte Hilfestellungen zu einer Vielzahl von Startmöglichkeiten, zum Beispiel:

--Umfang - Anwendungsgebiet
Wenn Sie den Bereichsparameter zusammen mit der Crawling-URL angeben, können Sie den Crawling-Bereich der Site anpassen, indem Sie sowohl eine einzelne Seite als auch alle Seiten angeben, die auf der Site gefunden werden können.

-s и -x – Optionen zum Hinzufügen oder Entfernen bestimmter URLs. Diese Optionen sind nützlich, wenn Sie während des Crawling-Vorgangs eine bestimmte URL hinzufügen oder entfernen müssen.

--überspringen — Der mit diesem Schlüssel angegebene Parameter wird gescannt, aber nicht angegriffen. Nützlich, wenn gefährliche Parameter vorhanden sind, die beim Scannen am besten ausgeschlossen werden sollten.

--verify-ssl — Zertifikatsüberprüfung aktivieren oder deaktivieren.
Der Wapiti-Scanner ist modular aufgebaut. Um jedoch bestimmte Module zu starten, einschließlich derjenigen, die automatisch verbunden werden, während der Scanner läuft, müssen Sie den Schalter -m verwenden und die benötigten Module durch Kommas getrennt auflisten. Wenn der Schlüssel nicht verwendet wird, funktionieren standardmäßig alle Module. In der einfachsten Version sieht es so aus:

# wapiti -u http://sites.vulns.pentestit.ru/ -m sql,xss,xxe

Dieses Anwendungsbeispiel bedeutet, dass wir beim Scannen des Ziels nur die Module SQL, XSS und XXE verwenden. Darüber hinaus können Sie die Funktionsweise von Modulen je nach gewünschter Methode filtern. Zum Beispiel -m „xss: get, blindsql: post, xxe: post“. In diesem Fall das Modul xss gilt für Anfragen, die mit der GET-Methode und dem Modul gesendet werden blibdsql — auf POST-Anfragen usw. Übrigens: Wenn ein in der Liste enthaltenes Modul beim Scannen nicht benötigt wurde oder sehr lange dauert, können Sie durch Drücken der Tastenkombination Strg+C die Verwendung des aktuellen Moduls überspringen, indem Sie das entsprechende Element im interaktiven Menü auswählen.

Wapiti unterstützt die Weiterleitung von Anfragen über einen Proxy mithilfe eines Schlüssels -p und Authentifizierung auf der Zielseite über den Parameter -a. Sie können auch den Authentifizierungstyp angeben: Basic, Digest, Kerberos и NTLM. Die letzten beiden erfordern möglicherweise die Installation zusätzlicher Module. Darüber hinaus können Sie beliebige Header in Anfragen einfügen (auch beliebige). User-Agent) und vieles mehr.

Um die Authentifizierung zu verwenden, können Sie das Tool verwenden wapiti-getcookie. Mit seiner Hilfe formen wir Plätzchen, das Wapiti beim Scannen verwendet. Formation Plätzchen fertig mit dem Befehl:

# wapiti-getcookie -u http://sites.vulns.pentestit.ru/login.php -c cookie.json

Beim interaktiven Arbeiten beantworten wir Fragen und geben die notwendigen Informationen wie Login, Passwort etc. an:

Wapiti – selbstständige Überprüfung einer Website auf Schwachstellen

Die Ausgabe ist eine Datei im JSON-Format. Eine andere Möglichkeit besteht darin, alle erforderlichen Informationen über den Parameter hinzuzufügen -d:

# wapiti-getcookie - http://sites.vulns.pentestit.ru/login.php -c cookie.json -d "username=admin&password=admin&enter=submit"

Das Ergebnis wird ähnlich sein:

Wapiti – selbstständige Überprüfung einer Website auf Schwachstellen

Bei der Betrachtung der Hauptfunktionalität des Scanners lautete die letzte Anfrage zum Testen der Webanwendung in unserem Fall:

# wapiti --level 1 -u http://sites.vulns.pentestit.ru/ -f html -o /tmp/vulns.html -m all --color -с cookie.json --scope folder --flush-session -A 'Pentestit Scans' -p http://proxy.office.pentestit.ru:3128

wobei unter anderem:

-f и -o — Format und Pfad zum Speichern des Berichts;

-m — Der Anschluss aller Module wird nicht empfohlen, weil wirkt sich auf die Testzeit und die Berichtsgröße aus;

--Farbe — Gefundene Schwachstellen je nach ihrer Kritikalität gemäß Wapiti selbst hervorheben;

-c - Verwenden einer Datei mit Plätzchen, generiert mit wapiti-getcookie;

--Umfang – Auswahl eines Angriffsziels. Auswahl einer Option Flyer Jede URL wird gecrawlt und angegriffen, beginnend mit der Basis-URL. Die Basis-URL muss einen Schrägstrich haben (kein Dateiname);

--flush-session — ermöglicht wiederholtes Scannen, bei dem frühere Ergebnisse nicht berücksichtigt werden;

-A - eigen User-Agent;

-p — Proxy-Server-Adresse, falls erforderlich.

Ein wenig über den Bericht

Das Scan-Ergebnis wird in Form eines detaillierten Berichts über alle gefundenen Schwachstellen im HTML-Seitenformat übersichtlich und leicht lesbar dargestellt. Der Bericht enthält die Kategorien und die Anzahl der gefundenen Schwachstellen sowie deren Beschreibungen, Anforderungen und Befehle curl und Tipps, wie man sie schließt. Um die Navigation zu erleichtern, wird den Kategorienamen ein Link hinzugefügt, über den Sie per Mausklick dorthin gelangen können:

Wapiti – selbstständige Überprüfung einer Website auf Schwachstellen

Ein wesentlicher Nachteil des Berichts ist das Fehlen einer Webanwendungskarte als solche, ohne die nicht klar ist, ob alle Adressen und Parameter analysiert wurden. Es besteht auch die Möglichkeit falsch positiver Ergebnisse. In unserem Fall enthält der Bericht „Sicherungsdateien“ und „potenziell gefährliche Dateien“. Ihre Anzahl entspricht nicht der Realität, da auf dem Server keine derartigen Dateien vorhanden waren:

Wapiti – selbstständige Überprüfung einer Website auf Schwachstellen

Möglicherweise werden fehlerhaft funktionierende Module im Laufe der Zeit repariert. Ein weiterer Nachteil des Berichts ist die fehlende Einfärbung der gefundenen Schwachstellen (abhängig von ihrer Kritikalität) oder zumindest deren Einteilung in Kategorien. Die einzige Möglichkeit, die Kritikalität der gefundenen Schwachstelle indirekt zu verstehen, ist die Verwendung des Parameters --Farbe Beim Scannen werden die gefundenen Schwachstellen dann in verschiedenen Farben eingefärbt:

Wapiti – selbstständige Überprüfung einer Website auf Schwachstellen

Aber der Bericht selbst liefert keine solche Einfärbung.

Sicherheitslücken

SQLi

Der Scanner kam mit der SQLi-Suche teilweise zurecht. Bei der Suche nach SQL-Schwachstellen auf Seiten, auf denen keine Authentifizierung erforderlich ist, treten keine Probleme auf:

Wapiti – selbstständige Überprüfung einer Website auf Schwachstellen

Es war nicht möglich, eine Schwachstelle auf Seiten zu finden, auf die nur nach Authentifizierung zugegriffen werden konnte, auch nicht mit valid Plätzchen, da ihre Sitzung höchstwahrscheinlich nach erfolgreicher Authentifizierung „abgemeldet“ wird und Plätzchen wird ungültig. Wenn die Deautorisierungsfunktion als separates Skript implementiert würde, das für die Verarbeitung dieses Vorgangs zuständig ist, wäre es möglich, sie über den Parameter -x vollständig auszuschließen und dadurch ihre Auslösung zu verhindern. Andernfalls ist ein Ausschluss der Verarbeitung nicht möglich. Dies ist kein Problem bei einem bestimmten Modul, sondern beim gesamten Tool. Aufgrund dieser Nuance war es jedoch nicht möglich, mehrere Injektionen in einem geschlossenen Ressourcenbereich zu erkennen.

XSS

Der Scanner hat die gestellte Aufgabe perfekt gemeistert und alle vorbereiteten Schwachstellen gefunden:

Wapiti – selbstständige Überprüfung einer Website auf Schwachstellen

LFI / RFI

Der Scanner hat alle zugrunde liegenden Schwachstellen gefunden:

Wapiti – selbstständige Überprüfung einer Website auf Schwachstellen

Im Allgemeinen zeigt Wapiti als kostenloses Tool trotz Fehlalarmen und fehlender Schwachstellen recht gute Leistungsergebnisse. Auf jeden Fall ist anzuerkennen, dass der Scanner sehr leistungsstark, flexibel und multifunktional ist und vor allem kostenlos ist, sodass er das Recht hat, Administratoren und Entwicklern dabei zu helfen, grundlegende Informationen über den Sicherheitsstatus einer Website zu erhalten Anwendung.

Bleiben Sie gesund und geschützt!

Source: habr.com

Kommentar hinzufügen