==================================
Wapiti - Web-Schwachstellenscanner
.. image:: https://img.shields.io/pypi/v/wapiti3?label=PyPI&logo=PyPI&logoColor=white&color=blue
:alt: PyPI-Version
:target: https://pypi.python.org/pypi/wapiti3
.. image:: https://img.shields.io/pypi/pyversions/wapiti3
:alt: Unterstützte Python-Versionen
:target: https://github.com/wapiti-scanner/wapiti/blob/master/INSTALL.md
.. image:: https://img.shields.io/github/license/wapiti-scanner/wapiti
:alt: Lizenz: GPL-2.0
:target: https://github.com/wapiti-scanner/wapiti/blob/master/LICENSE
.. image:: https://img.shields.io/pypi/dd/wapiti3
:alt: Downloads pro Tag auf PyPI
:target: https://pypi.python.org/pypi/wapiti3
.. image:: https://codecov.io/gh/wapiti-scanner/wapiti/branch/master/graph/badge.svg?token=GFEIORAFB8
:target: https://codecov.io/gh/wapiti-scanner/wapiti
Wapiti ist ein in Python geschriebener Web-Schwachstellenscanner.
http://wapiti-scanner.github.io/
Voraussetzungen
Damit Wapiti korrekt funktioniert, wird Python 3.12, 3.13 oder 3.14 benötigt.
Alle Python-Modulabhängigkeiten werden automatisch installiert, wenn du das setup.py-Skript verwendest oder pip install wapiti3 ausführst.
Weitere Details zur Installation findest du in INSTALL.md <https://github.com/wapiti-scanner/wapiti/blob/master/INSTALL.md>__.
Wapiti kann unter Windows mithilfe von WSL <https://learn.microsoft.com/en-us/training/modules/get-started-with-windows-subsystem-for-linux/>__ ausgeführt werden.
Funktionsweise
Wapiti arbeitet als „Black-Box“-Schwachstellenscanner. Das bedeutet, es
untersucht nicht den Quellcode von Webanwendungen, sondern arbeitet wie ein
Fuzzer: Es scannt die Seiten der bereitgestellten Webanwendung, extrahiert
Links und Formulare, greift die Skripte an, sendet Payloads und sucht nach
Fehlermeldungen, speziellen Zeichenfolgen oder abnormalem Verhalten.
Allgemeine Funktionen
- Erzeugt Schwachstellenberichte in verschiedenen Formaten (HTML, XML, JSON, TXT, CSV, Markdown).
- Kann einen Scan oder einen Angriff unterbrechen und fortsetzen (Sitzungsmechanismus mit sqlite3-Datenbanken).
- Kann dir im Terminal Farben anzeigen, um Schwachstellen hervorzuheben.
- Verschiedene Ausführlichkeitsstufen.
- Schnelle und einfache Möglichkeit, Angriffsmodule zu aktivieren/deaktivieren.
- Das Hinzufügen eines Payloads kann so einfach sein wie das Hinzufügen einer Zeile zu einer Textdatei.
- Konfigurierbare Anzahl gleichzeitiger Aufgaben für HTTP-Anfragen.
Crawling-Funktionen
- Unterstützt HTTP-, HTTPS- und SOCKS5-Proxys.
- HTTP-Authentifizierung am Ziel (Basic, Digest, NTLM)
- Authentifizierung durch Ausfüllen von Anmeldeformularen.
- Möglichkeit, den Scan-Bereich einzuschränken (Domain, Ordner, Seite, URL).
- Automatisches Entfernen eines oder mehrerer Parameter aus URLs.
- Mehrere Schutzmaßnahmen gegen Endlosschleifen beim Scannen (z. B. Begrenzung der Werte für einen Parameter).
- Möglichkeit, die ersten zu untersuchenden URLs festzulegen (auch wenn sie nicht im Scan-Bereich liegen).
- Kann bestimmte URLs vom Scan und von Angriffen ausschließen (z. B. Logout-URL).
- Importiert Cookies aus deinem Chrome- oder Firefox-Browser oder mithilfe des Tools
wapiti-getcookie.
- Kann die Überprüfung von SSL-Zertifikaten aktivieren/deaktivieren.
- Versucht, URLs aus JavaScript zu extrahieren (sehr einfacher JS-Interpreter).
- HTML5-fähig (versteht neuere HTML-Tags).
- Mehrere Optionen zur Steuerung des Crawler-Verhaltens und der Grenzwerte.
- Überspringt bestimmte Parameternamen während des Angriffs.
- Festlegen einer maximalen Zeit für den Scan-Vorgang.
- Hinzufügen benutzerdefinierter HTTP-Header oder Festlegen eines benutzerdefinierten User-Agents.
- Verwendung eines headless Firefox-Browsers zum Crawlen
- Laden deines eigenen Python-Codes für komplizierte Authentifizierungsfälle (siehe Option
--form-script)
- Hinzufügen einer benutzerdefinierten URL oder eines Pfads zur Aktualisierung der Wappalyzer-Datenbank
- Scannt REST-APIs anhand einer OpenAPI-Datei (Swagger)
Unterstützte Angriffe
- SQL-Injektionen (fehlerbasiert, boolesch, zeitbasiert) und XPath-Injektionen
- LDAP-Injektionen (fehlerbasiert und boolesch)
- Reflektiertes und permanentes Cross-Site-Scripting (XSS)
- Erkennung von Datei-Offenlegung (lokale und entfernte Includes, require, fopen, readfile ...)
- Erkennung von Befehlausfü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
- Suche nach Kopien (Backups) von Skripten auf dem Server
- Shellshock
- Aufzählung von Ordnern und Dateien (ähnlich wie DirBuster)
- Server-Side Request Forgery (durch Nutzung einer externen Wapiti-Website)
- Offene Weiterleitungen (Open Redirects)
- Erkennung ungewöhnlicher HTTP-Methoden (wie PUT)
- Einfacher CSP-Evaluator
- Brute-Force-Angriff auf Anmeldeformulare (mithilfe einer Wörterbuchliste)
- Prüfung von HTTP-Sicherheitsheadern
- Prüfung der Cookie-Sicherheitsflags (Secure- und HttpOnly-Flags)
- Grundlegende Erkennung von Cross-Site Request Forgery (CSRF)
- Fingerprinting von Webanwendungen mithilfe der Wappalyzer-Datenbank; liefert zugehörige CVE-Informationen
- Aufzählung von CMS-Modulen für WordPress, Drupal, Joomla, Magento, SPIP, Typo3 usw.
- Erkennung von Subdomain-Übernahmen
- Erkennung von Log4Shell (CVE-2021-44228)
- Erkennung von Spring4Shell (CVE-2022-22965)
- Prüfung von HTTPS-Weiterleitungen
- Prüfung auf Schwachstellen beim Datei-Upload
- Erkennung von Netzwerkgeräten
- Injiziert Payloads auch in JSON-Bodies
Wapiti unterstützt für Angriffe sowohl die HTTP-Methoden GET als auch POST.
Es unterstützt außerdem Multipart und kann Payloads in Dateinamen injizieren (Upload).
Zeigt eine Warnung an, wenn eine Anomalie gefunden wird (z. B. 500-Fehler und Timeouts).
Unterscheidet zwischen permanenten und reflektierten XSS-Schwachstellen.
Modulnamen
Die zuvor genannten Angriffe sind mit den folgenden Modulnamen verknüpft:
- backup (Durchsucht den Webserver nach Kopien von Skripten und Archiven)
- brute_login_form (Brute-Force-Angriff auf Anmeldeformulare mithilfe einer Wörterbuchliste)
- buster (Modul ähnlich wie DirBuster)
- cms (Scan zur Erkennung von CMS und deren Versionen)
- cookieflags (Prüft die Secure- und HttpOnly-Flags)
- crlf (CR-LF-Injektion in HTTP-Header)
- csp (Erkennt fehlende CSP oder schwache CSP-Konfiguration)
- csrf (Erkennt Formulare, die nicht gegen CSRF geschützt sind oder schwache Anti-CSRF-Tokens verwenden)
- exec (Codeausführung oder Befehlsinjektion)
- file (Pfad-Traversal, Dateieinbindung usw.)
- htaccess (Fehlkonfigurierte htaccess-Einschränkungen)
- htp (Identifiziert Webtechnologien mithilfe der HashThePlanet-Datenbank)
- http_headers (Prüft HTTP-Sicherheitsheader)
- https_redirect (Prüft HTTPS-Weiterleitungen)
- ldap (Erkennung fehlerbasierter und boolescher LDAP-Injektionen)
- log4shell (Erkennt Websites, die anfällig für CVE-2021-44228 sind)
- methods (Sucht nach ungewöhnlichen verfügbaren HTTP-Methoden wie PUT)
- network_device (Sucht nach gängigen Dateien zur Erkennung von Netzwerkgeräten)
- nikto (Sucht nach bekannten Schwachstellen, indem die Existenz von URLs getestet und die Antworten geprüft werden)
- permanentxss (Scannt das gesamte Ziel nach Ausführung des xss-Moduls erneut und sucht nach zuvor markierten Payloads)
- printer (Erkennt Netzwerkdrucker und ruft Modell- und Firmware-Informationen ab)
- redirect (Offene Weiterleitungen)
- shellshock (Testet den Shellshock-Angriff, siehe
Wikipedia <https://en.wikipedia.org/wiki/Shellshock_%28software_bug%29>__)
- spring4shell (Erkennt Websites, die anfällig für CVE-2020-5398 sind)
- sql (Erkennung fehlerbasierter und boolescher SQL-Injektionen)
- ssl (Bewertet die Sicherheit der SSL/TLS-Zertifikatskonfiguration, erfordert
sslscan <https://github.com/rbsec/sslscan>__)
- ssrf (Server-Side Request Forgery)
- takeover (Subdomain-Übernahme)
- timesql (Mit zeitbasierter Methodik erkannte SQL-Injektionsschwachstellen)
- upload (Schwachstellen beim Datei-Upload)
- wapp (Kein Angriffsmodul, ermittelt die auf dem Ziel verwendeten Webtechnologien mit Versionen und Kategorien und findet die zugehörigen CVEs)
Modulnamen können als kommagetrennte Liste über die Option „-m“ oder „--module“ angegeben werden.
So erzielst du die besten Ergebnisse
Um mehr Schwachstellen zu finden (da einige Angriffe fehlerbasiert sind), kannst du deine Webserver-Konfigurationen anpassen.
Du kannst beispielsweise die folgenden Werte in deiner PHP-Konfiguration festlegen:
.. code-block::
safe_mode = Off
display_errors = On (recommended)
magic_quotes_gpc = Off
allow_url_fopen = On
mysql.trace_mode = On
Hilfe erhalten
Gib einfach den folgenden Befehl ein, um die grundlegende Verwendung zu sehen:
Du kannst dir auch die Manpage (wapiti.1 oder wapiti.1.html) ansehen, um weitere Details zu jeder Option zu erhalten.
Wir haben außerdem ein offizielles Wiki, das ausführlicher ist: https://github.com/wapiti-scanner/wapiti/wiki
Wenn du eine andere Frage hast, wirf zuerst einen Blick in die FAQ <https://github.com/wapiti-scanner/wapiti/blob/master/doc/FAQ.md>__
Wenn du einen Fehler findest, erstelle ein Issue: https://github.com/wapiti-scanner/wapiti/issues
Wie du das Wapiti-Projekt unterstützen kannst
Du kannst:
- Das Projekt durch eine Spende unterstützen ( http://sf.net/donate/index.php?group_id=168625 )
- Angriffsmodule erstellen oder verbessern
- Berichtsgeneratoren und -vorlagen erstellen oder verbessern
- Fehlerkorrekturen, Patches senden ...
- GUIs schreiben
- Ein Tool erstellen, das PCAP-Dateien in Wapiti-sqlite3-Sitzungsdateien konvertiert
- Erzähle anderen von Wapiti
Lizenz
Wapiti wird unter der GNU General Public License Version 2 (der GPL) veröffentlicht.
Der Quellcode ist auf Github <https://github.com/wapiti-scanner/wapiti>__ verfügbar.
Erstellt von Nicolas SURRIBAS.
Cyberwatch https://cyberwatch.com/
Security For Everyone https://securityforeveryone.com/
IP-Nina https://ip-ninja.com/
Haftungsausschluss
Wapiti ist eine Cybersicherheitssoftware. Sie führt Sicherheitsbewertungen an einem angegebenen Ziel durch, was zu Fehlfunktionen und Abstürzen des Ziels sowie zu potenziellem Datenverlust führen kann.
Die Verwendung von Wapiti zum Angriff auf ein Ziel ohne vorherige Zustimmung des Eigentümers ist illegal. Es liegt in der Verantwortung des Endbenutzers, alle geltenden lokalen Gesetze einzuhalten.
Die Entwickler und die am Wapiti-Projekt beteiligten Personen übernehmen keine Haftung und sind nicht verantwortlich für Missbrauch oder Schäden, die durch dieses Programm verursacht werden.