==================================
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: