Wapiti – Web-Schwachstellenscanner
Wapiti ist ein in Python geschriebener Web-Schwachstellenscanner.
http://wapiti-scanner.github.io/
Anforderungen
Um korrekt zu funktionieren, benötigt Wapiti Python 3.10 oder 3.11
Alle Python-Modulabhängigkeiten werden automatisch installiert, wenn Sie das Skript setup.py oder pip install wapiti3 verwenden
Weitere Informationen zur Installation finden Sie unter INSTALL.md.
Das Ausführen von Wapiti unter Windows kann durch die Verwendung von WSL erfolgen.
Wie es funktioniert
Wapiti fungiert als „Black-Box“-Schwachstellenscanner, das heißt, es untersucht nicht den Quellcode von Webanwendungen, sondern funktioniert wie ein Fuzzer, der die Seiten der bereitgestellten Webanwendung scannt, Links und Formulare extrahiert und die Skripte angreift. Senden von Nutzdaten und Suchen nach Fehlermeldungen, speziellen Zeichenfolgen oder abnormalem Verhalten.
Allgemeine Merkmale
- Erstellt Schwachstellenberichte in verschiedenen Formaten (HTML, XML, JSON, TXT, CSV).
- Kann einen Scan oder einen Angriff anhalten und fortsetzen (Sitzungsmechanismus unter Verwendung von SQLite3-Datenbanken).
- Kann Ihnen im Terminal Farben geben, um Schwachstellen hervorzuheben.
- Verschiedene Ausführlichkeitsstufen.
- Schnelle und einfache Möglichkeit, Angriffsmodule zu aktivieren/deaktivieren.
- Das Hinzufügen einer Nutzlast kann so einfach sein wie das Hinzufügen einer Zeile zu einer Textdatei.
- Konfigurierbare Anzahl gleichzeitiger Aufgaben zur Ausführung von HTTP-Anfragen.
Browsing-Funktionen
- Unterstützt HTTP-, HTTPS- und SOCKS5-Proxys.
- HTTP-Authentifizierung auf dem Ziel (Basic, Digest, NTLM)
- Authentifizierung durch Ausfüllen von Anmeldeformularen.
- Möglichkeit, den Umfang des Scans einzuschränken (Domäne, Ordner, Seite, URL).
- Automatisches Entfernen eines oder mehrerer Parameter in URLs.
- Mehrere Schutzmaßnahmen gegen Scan-Endlosschleifen (z. B. Wertebegrenzung für einen Parameter).
- Möglichkeit, die ersten zu durchsuchenden URLs festzulegen (auch wenn diese nicht im Gültigkeitsbereich liegen).
- Kann einige URLs vom Scan und von Angriffen ausschließen (z. B. Abmelde-URL).
- Importieren Sie Cookies aus Ihrem Chrome- oder Firefox-Browser oder verwenden Sie das Tool wapiti-getcookie.
- Kann die Überprüfung von SSL-Zertifikaten aktivieren/deaktivieren.
- Extrahieren Sie URLs aus Flash-SWF-Dateien.
- Versuchen Sie, URLs aus Javascript (sehr einfacher JS-Interpreter) zu extrahieren.
- HTML5-fähig (verstehen Sie aktuelle HTML-Tags).
- Mehrere Optionen zur Steuerung des Crawler-Verhaltens und der Limits.
- Einige Parameternamen werden während des Angriffs übersprungen.
- Festlegen einer maximalen Zeit für den Scanvorgang.
- Hinzufügen einiger benutzerdefinierter HTTP-Header oder Festlegen eines benutzerdefinierten Benutzeragenten.
- Verwenden eines kopflosen Firefox-Browsers zum Crawlen
- Laden Ihres eigenen Python-Codes für komplizierte Authentifizierungsfälle (siehe Option --form-script)
- Hinzufügen einer benutzerdefinierten URL oder eines benutzerdefinierten Pfads zum Aktualisieren der Wappalyzer-Datenbank
- Scannen Sie REST-APIs mit einer OpenAPI-Datei (Swagger).
Unterstützte Angriffe
- SQL-Injections (fehlerbasiert, booleanbasiert, zeitbasiert) und XPath-Injections
- LDAP-Injektionen (fehlerbasiert und booleanbasiert)
- Cross Site Scripting (XSS) reflektiert und dauerhaft
- Erkennung der Offenlegung von Dateien (lokal und remote include, require, fopen, readfile...)
- Erkennung der Befehlsausführung (eval(), system(), passtru()...)
- XXE-Injektion (Xml eXternal Entity).
- CRLF-Injektion
- Suche nach potenziell gefährlichen Dateien auf dem Server (dank der Nikto-Datenbank)
- Umgehung schwacher htaccess-Konfigurationen
- Suchen Sie nach Kopien (Backups) von Skripten auf dem Server
- Muschelschock
- Ordner- und Dateiaufzählung (wie DirBuster)
- Serverseitige Anforderungsfälschung (durch Nutzung einer externen Wapiti-Website)
- Öffnen Sie Weiterleitungen
- Erkennung ungewöhnlicher HTTP-Methoden (wie PUT)
- Grundlegender CSP-Evaluator
- Brute-Force-Anmeldeformular (unter Verwendung einer Wörterbuchliste)
- Überprüfung der HTTP-Sicherheitsheader
- Überprüfung der Cookie-Sicherheitsflags (Secure- und httponly-Flags)
- Grundlegende Erkennung von Cross Site Request Forgery (CSRF).
- Das Fingerprinting von Webanwendungen mithilfe der Wappalyzer-Datenbank liefert zugehörige CVE-Informationen
- Aufzählung von CMS-Modulen für Wordpress, Drupal, Joomla, SPIP usw
- Erkennung von Subdomain-Übernahmen
- Erkennung von Log4Shell (CVE-2021-44228).
- Spring4Shell-Erkennung (CVE-2020-5398).
- Überprüfen Sie https-Weiterleitungen
- Suchen Sie nach Schwachstellen beim Hochladen von Dateien
- Erkennung von Netzwerkgeräten
- Fügen Sie Nutzlasten auch in den JSON-Körper ein
Wapiti unterstützt sowohl GET- als auch POST-HTTP-Methoden für Angriffe. Es unterstützt auch Multipart und kann Nutzlasten in Dateinamen einfügen (Upload). Zeigt eine Warnung an, wenn eine Anomalie gefunden wird (z. B. 500 Fehler und Zeitüberschreitungen). Macht den Unterschied zwischen permanenten und reflektierten XSS-Schwachstellen.
Modulnamen
Die oben genannten Angriffe sind mit den folgenden Modulnamen verbunden:
- Backup (Kopien von Skripten und Archiven auf dem Webserver durchsuchen)
- brute_login_form (Brute-Force-Anmeldeformular mithilfe einer Wörterbuchliste)
- Buster (DirBuster-ähnliches Modul)
- cms (Scannen, um CMS und deren Versionen zu erkennen)
- cookieflags (Überprüft Secure- und HttpOnly-Flags)
- crlf (CR-LF-Injection in HTTP-Header)
- csp (Mangel an CSP oder schwache CSP-Konfiguration erkennen)
- csrf (Erkennt Formulare, die nicht gegen CSRF geschützt sind oder schwache Anti-CSRF-Token verwenden)
- exec (Codeausführung oder Befehlsinjektion)
- Datei (Pfaddurchquerung, Dateieinbindung usw.)
- htaccess (Falsch konfigurierte htaccess-Einschränkungen)
- htp (Identifizieren Sie die in der HashThePlanet-Datenbank verwendeten Webtechnologien)
- http_header (HTTP-Sicherheitsheader prüfen)
- https_redirect (Überprüfen Sie https-Weiterleitungen)
- ldap (Fehlerbasierte und boolesche LDAP-Injection-Erkennung)
- log4shell (Erkennt Websites, die für CVE-2021-44228 anfällig sind)
- Methoden (Suchen Sie nach ungewöhnlichen verfügbaren HTTP-Methoden wie PUT)
- network_device (Suchen Sie nach gemeinsamen Dateien, um Netzwerkgeräte zu erkennen)
- nikto (Suchen Sie nach bekannten Schwachstellen, indem Sie die Existenz der URL testen und die Antworten überprüfen)
- permanentxss (Scannen Sie das gesamte Ziel nach der Ausführung des xss-Moduls erneut und suchen Sie nach zuvor beschädigten Nutzdaten.)
- weiterleiten (Weiterleitungen öffnen)
- Shellshock (Test-Shellshock-Angriff, siehe Wikipedia)
- spring4shell (Erkennt Websites, die für CVE-2020-5398 anfällig sind)
- sql (Fehlerbasierte und boolesche SQL-Injection-Erkennung)
- ssl (Bewertung der Sicherheit der SSL/TLS-Zertifikatkonfiguration, erfordert SSLscan)
- ssrf (Server Side Request Forgery)
- Übernahme (Subdomain-Übernahme)
- timesql (SQL-Injection-Schwachstellen mit zeitbasierter Methodik erkannt)
- upload (Sicherheitslücken beim Hochladen von Dateien)
- wapp (Kein Angriffsmodul, ruft Webtechnologien mit auf dem Ziel verwendeten Versionen und Kategorien ab, findet entsprechende CVEs)
- wp_enum (Plugins und Themes auf einer Wordpress-Website aufzählen)
- xss (XSS-Injektionsmodul)
- xxe (Angriff auf eine externe XML-Entität)
Modulnamen können mit der Option „-m“ oder „--module“ als durch Kommas getrennte Liste angegeben werden.
So erzielen Sie die besten Ergebnisse
Um weitere Schwachstellen zu finden (da einige Angriffe fehlerbasiert sind), können Sie Ihre Webserverkonfigurationen ändern.
Beispielsweise können Sie in Ihrer PHP-Konfiguration folgende Werte festlegen:
safe_mode = Aus
display_errors = Ein (empfohlen)
magic_quotes_gpc = Aus
Allow_url_fopen = Ein
mysql.trace_mode = Ein
Wo Sie Hilfe bekommen
Geben Sie in der Eingabeaufforderung einfach den folgenden Befehl ein, um die grundlegende Verwendung zu erhalten:
wapiti -h
Weitere Informationen zu den einzelnen Optionen finden Sie auch in der Manpage (wapiti.1 oder wapiti.1.html).
Wir haben auch ein offizielles Wiki, das umfassender ist: https://github.com/wapiti-scanner/wapiti/wiki
Wenn Sie eine weitere Frage haben, schauen Sie zunächst in den FAQ nach
Wenn Sie einen Fehler finden, füllen Sie ein Problem aus: https://github.com/wapiti-scanner/wapiti/issues
So helfen Sie dem Wapiti-Projekt
Du kannst :
- Unterstützen Sie das Projekt mit einer Spende ( http://sf.net/donate/index.php?group_id=168625 )
- Angriffsmodule erstellen oder verbessern
- Erstellen oder verbessern Sie Berichtsgeneratoren und Vorlagen
- Senden Sie Bugfixes, Patches...
- Schreiben Sie einige GUIs
- Erstellen Sie ein Tool zum Konvertieren von PCAP-Dateien in Wapiti-SQLite3-Sitzungsdateien
- Sprechen Sie über Wapiti in Ihrer Nähe
Lizenzierung
Wapiti wird unter der GNU General Public License Version 2 (GPL) veröffentlicht. Der Quellcode ist auf Github verfügbar.
Erstellt von Nicolas SURRIBAS.
Sponsoren
Cyberwatch https://cyberwatch.fr/
Sicherheit für alle https://securityforeveryone.com/
Haftungsausschluss
Wapiti ist eine Cybersicherheitssoftware. Es führt Sicherheitsbewertungen für ein bereitgestelltes Ziel durch, was zu Fehlfunktionen und Abstürzen auf dem Ziel sowie zu potenziellem Datenverlust führen kann.
Die Verwendung von Wapiti zum Angriff auf ein Ziel ohne vorherige Zustimmung seines Besitzers ist illegal. Es liegt in der Verantwortung des Endbenutzers, alle geltenden örtlichen Gesetze einzuhalten.
Entwickler und am Wapiti-Projekt beteiligte Personen übernehmen keine Haftung und sind nicht verantwortlich für Missbrauch oder Schäden, die durch dieses Programm verursacht werden.