Nikto Web Vulnerability Scanner
Nikto Web Vulnerability Scanner – Webserver auf Schwachstellen prüfen
Nikto ist ein kostenloses, Open-Source Web-Server Scanner, der hunderte von potentiellen Sicherheitsprobleme erkennt. Es prüft auf veraltete Software, Default-Dateien, Misconfigurations und bekannte Schwachstellen. Dieses Tool ist essentiell für Web-Application Security Testing.
Was ist Nikto?
Nikto wurde 2001 von Cirt.net entwickelt und wird bis heute aktiv gepflegt. Das Tool:
- Scannt einen Web-Server auf über 6700 potentielle Sicherheitsprobleme
- Überprüft auf veraltete und vulnerable Software-Versionen
- Findet Default-Dateien und Directories
- Testet auf Server-Misconfigurations
- Prüft auf XSS, SQL-Injection und andere Web-Sicherheitslücken
- Kann mehrere Report-Formate generieren (HTML, XML, CSV, JSON)
Installation von Nikto
Via Package Manager
Auf Ubuntu/Debian:
sudo apt update sudo apt install nikto
Auf CentOS/RHEL:
sudo yum install nikto
Von GitHub installieren
Für die neueste Version:
git clone https://github.com/sullo/nikto.git cd nikto/program chmod +x nikto.pl
Dann ausführen mit:
perl nikto.pl -h http://example.com
Version überprüfen
nikto -Version
Grundlegende Scan-Befehle
Einfacher HTTP-Scan
nikto -h http://example.com
HTTPS-Scan
nikto -h https://example.com
Wenn SSL-Zertifikat-Fehler vorliegen:
nikto -h https://example.com -ssl
Spezifischen Port scannen
nikto -h http://example.com:8080 nikto -h example.com -p 8080
Mehrere Hosts scannen
nikto -h example.com,example.org,example.net
Wichtige Nikto-Optionen
| Option | Beschreibung | Beispiel |
|---|---|---|
-h |
Host/URL zu scannen | -h https://example.com |
-p |
Port (Standard 80 oder 443) | -p 8080 |
-ssl |
SSL-Verbindung erzwingen | -ssl |
-o |
Output-Datei speichern | -o nikto-report.html |
-Format |
Report-Format | -Format html,csv,xml |
-Tuning |
Spezifische Tests | -Tuning 12345 |
-timeout |
Timeout in Sekunden | -timeout 10 |
-useragent |
Custom User-Agent | -useragent "Mozilla/5.0" |
-proxy |
HTTP Proxy nutzen | -proxy http://proxy.local:8080 |
Report-Generierung
HTML-Report erstellen
nikto -h https://example.com -Format html -o nikto-report.html
Multiple Formate gleichzeitig
nikto -h https://example.com -Format html,xml,csv -o nikto-report
Dies erzeugt automatisch:
- nikto-report.html
- nikto-report.xml
- nikto-report.csv
Detaillierter Text-Report (Standard)
nikto -h https://example.com 2>&1 | tee nikto-report.txt
Tuning-Optionen verstehen
Nikto bietet verschiedene Tuning-Kategorien:
| Code | Beschreibung |
|---|---|
| 1 | Interesting file/folder found |
| 2 | Interesting comment found |
| 3 | HTTP Server Banner |
| 4 | Interesting HTTP headers |
| 5 | Outdated Server Software |
| 6 | Server/Software default files |
| 7 | HTTP Options |
| 8 | Proxy, Firewall, WAF Detection |
| 9 | Interesting CGI directories |
| a | Authentication bypass |
| b | Interesting template files |
Beispiele für Tuning
# Nur nach veralteter Software suchen nikto -h https://example.com -Tuning 5 # Nach Default-Dateien suchen nikto -h https://example.com -Tuning 6 # Authentifizierungs-Bypasses suchen nikto -h https://example.com -Tuning a # Mehrere Kategorien kombinieren nikto -h https://example.com -Tuning 1,5,6
Scan-Beispiel und Interpretation
Ein typischer Scan-Output sieht so aus:
- Nikto v2.1.6 --------------------------------------------------------------------------- + Target IP: 192.168.1.100 + Target Hostname: example.com + Target Port: 443 + SSL Info: Subject /CN=example.com/O=Example/C=DE + Issuer /C=US/O=Let's Encrypt/CN=R3 + Start Time: Tue Apr 05 14:22:33 2025 (GMT0) --------------------------------------------------------------------------- + Server: Apache/2.4.41 (Ubuntu) + The anti-clickjacking X-Frame-Options header is missing. + The X-XSS-Protection header is missing. + The X-Content-Type-Options header is missing. + No CGI Directories found (use '-C all' to force check all possible dirs) + Interesting file found: /wp-admin/ (HTTP 200) + Interesting file found: /wp-includes/ (HTTP 200) + Outdated wordpress version detected: 5.8.1 + 6 host(s) scanned in 1 minute 23 seconds
Was bedeutet das?
Server: Apache/2.4.41– Webserver und Version sind öffentlich sichtbar (Banner Grabbing)X-Frame-Options header is missing– Anfällig für Clickjacking/wp-admin/– WordPress gefunden (admin-Interface ist offen)Outdated wordpress version– Version ist bekannt vulnerable
Häufige Nikto-Befunde und deren Bedeutung
Default-Dateien
Nikto sucht nach Standard-Installdateien, die Informationen offenbaren:
+ OSVDB-3092: /test.php: This might be interesting + OSVDB-3233: /info.php: phpinfo() found + OSVDB-3268: /admin/: Directory indexing found
Diese sollten entfernt oder geschützt werden.
Veraltete Software
+ Outdated Apache version detected: 2.4.29 + This version is known to have: - Apache Range Header Denial of Service (CVE-2011-3192)
Sofort patchen!
Fehlende Security-Headers
+ The anti-clickjacking X-Frame-Options header is missing. + The X-Content-Type-Options header is missing. + Missing X-XSS-Protection header
Diese Headers sollten in der Web-Server-Konfiguration hinzugefügt werden.
Nikto durch Proxy scannen
Nützlich für Tests hinter Firewalls oder WAFs:
nikto -h https://example.com -proxy http://proxy.local:8080 nikto -h https://example.com -proxy socks5://localhost:9050
Nmap mit Nikto kombinieren
Nmap kann Netzwerk-Services erkennen, Nikto dann detailliert scannen:
# 1. Mit Nmap Port-Scan durchführen nmap -sV -p 80,443 example.com > nmap-output.xml # 2. Nikto auf gefundene Ports anwenden nikto -h example.com -p 80 -o http-report.html nikto -h example.com -p 443 -ssl -o https-report.html
Automatisiertes Skript
#!/bin/bash
TARGET=$1
# Nmap Scan
nmap -sV -p 80,443 -oX /tmp/nmap.xml $TARGET
# HTTP-Scan (falls Port 80 offen)
if nmap -p 80 $TARGET | grep open; then
nikto -h http://$TARGET:80 -o nikto-http-$TARGET.html -Format html
fi
# HTTPS-Scan (falls Port 443 offen)
if nmap -p 443 $TARGET | grep open; then
nikto -h https://$TARGET:443 -ssl -o nikto-https-$TARGET.html -Format html
fi
Automatisierte regelmäßige Scans
Cron-Job für wöchentliche Scans
0 2 * * 0 nikto -h https://example.com -Format html -o /var/reports/nikto-$(date +\%Y\%m\%d).html
Bash-Skript für Multiple Hosts
#!/bin/bash
HOSTS="example.com example.org example.net"
REPORT_DIR="/var/reports/nikto"
mkdir -p $REPORT_DIR
for host in $HOSTS; do
echo "Scanning $host..."
nikto -h https://$host \
-Format html,csv \
-o $REPORT_DIR/nikto-$host-$(date +%Y%m%d)
done
Nikto Output mit Schweregrad filtern
Nikto nutzt OSVDB (Open Source Vulnerability Database) für Klassifizierung:
- OSVDB- Nummer – Direkter Link zu Vulnerabilities
- CVSS Score – Severity Rating (wo vorhanden)
- Risk Level – High, Medium, Low (implizit in Befunden)
Filtern nach High-Risk Befunden:
nikto -h https://example.com | grep -i "outdated\|vulnerable\|security\|missing\|error"
Nikto mit Authentifizierung
Wenn der Server Authentifizierung erfordert:
nikto -h https://example.com -id username:password -Basic
Oder mit Cookies:
nikto -h https://example.com -cookie "PHPSESSID=abc123def456"
Best Practices für Web-Scanning
- Automatisieren Sie regelmäßige Scans – Wöchentlich oder monatlich
- Kombinieren Sie Tools – Nmap + Nikto + OWASP ZAP
- Dokumentieren Sie Befunde – HTML-Reports für Management
- Erstellen Sie einen Remediation Plan – Prioritätsbasiert
- Verify nach Patches – Re-scan nach Korrekturen
- Integrieren Sie in CI/CD – Tests vor Deployment
Zusammenfassung
Nikto ist ein essentielles Tool für Web-Application Security. Mit seiner einfachen Bedienung, flexiblen Scan-Optionen und detaillierten Reports ermöglicht es schnelle Sicherheitsüberprüfungen Ihrer Web-Server. Regelmäßige Scans, kombiniert mit Patch-Management, bilden einen wichtigen Teil einer Defense-in-Depth Strategie.