Mit Wapiti die eigene Website auf Schwachstellen scannen (Docker-Anleitung)

Ich prüfe regelmäßig meine eigenen Webservices bzw. Kundenprojekte auf gängige Schwachstellen (XSS, SQL injections, CSRF, …).

Dafür verwende ich das kostenlose Wapiti.

Es gibt für Wapiti auch ein Docker-Image bei Docker Hub, das allerdings schon einige Jahre alt ist und seither nicht mehr aktualisiert wurde.

Im Wapiti Github repository befindet sich jedoch auch ein Dockerfile, und so lässt sich der Docker-Container selbst bauen.

Das funktioniert so:

git clone https://github.com/wapiti-scanner/wapiti.git
cd wapiti

Jetzt den Docker-Container erzeugen:

docker build . -t wapiti

Sobald das abgeschlossen ist, kann das Scannen beginnen.

In den Standard-Einstellungen benötigt Wapiti nur die Ziel-URL mit dem Parameter -u [url].

Der Report wird in den Docker-Container geschrieben.
Mit dem Befehl v $(pwd):/root/.wapiti/generated_report mounte ich das Report-Verzeichnis im Docker-Container in mein Host-Verzeichnis, und erhalte somit (leichteren) Zugriff darauf.

Beispiel für die URL https://www.example.com und dem Mount-Point für das Report-Verzeichnis:

docker run --rm -it -v $(pwd):/root/.wapiti/generated_report wapiti -u "https://www.example.com"

Der Scan erfolgt im Hintergrund; es wird sehr lange nichts ausgegeben.

Ich möchte allerdings den Verlauf beobachten, und habe daher das Verbose-Level -v auf 2 erhöht.

docker run --rm -it -v $(pwd):/root/.wapiti/generated_report wapiti -v 2 -u "https://www.example.com"

Jetzt kann der Scan-Fortschritt beobachtet werden.

Sobald der Scan abgeschlossen ist, werden im HTML-Report die Schwachstellen gesammelt aufgeschlüsselt.

Auf diese Weise kann Wapiti als Docker-Image verwenden werden.

Übrigens: Ich hielt „Wapiti“ bis dato für ein Kunstwort; allerdings ist laut Wikipedia ein Wapiti (Cervus canadensis) eine Säugetierart aus der Familie der Hirsche (Cervidae). Wieder etwas gelernt.


Image Credits: Von Leupold, Jim – U.S. Fish and Wildlife Service, Gemeinfrei