Wapiti Cheat Blatt
Überblick
Wapiti ist ein Web Application Sicherheitsscanner, der Black-Box-Tests von Web-Anwendungen durchführt. Es krabbelt Webseiten und sucht nach Skripten und Formularen, wo es Daten injizieren kann. Sobald es die Liste der URLs, Formulare und deren Eingaben erhält, handelt Wapiti wie ein Fuzzer, injiziert Nutzlasten, um zu sehen, ob ein Skript verletzlich ist. Wapiti kann verschiedene Schwachstellen wie SQL-Injektion, XSS, Dateiinklusion, Befehlsausführung und mehr erkennen.
ZEIT Warning: Verwenden Sie Wapiti nur gegen Anwendungen, die Sie besitzen oder eine ausdrückliche Erlaubnis zum Testen haben. Unberechtigte Tests können gegen die Nutzungsbedingungen oder lokale Gesetze verstoßen.
Installation
Python Paket Installation
```bash
Install via pip
pip install wapiti3
Install with all dependencies
pip install wapiti3[complete]
Install development version
pip install git+https://github.com/wapiti-scanner/wapiti.git
Verify installation
wapiti --version ```_
Systempaket Installation
```bash
Ubuntu/Debian
sudo apt update sudo apt install wapiti
CentOS/RHEL/Fedora
sudo yum install wapiti
or
sudo dnf install wapiti
Arch Linux
sudo pacman -S wapiti
macOS with Homebrew
brew install wapiti ```_
Docker Installation
```bash
Pull Docker image
docker pull wapiti/wapiti:latest
Run with Docker
docker run --rm -it wapiti/wapiti:latest --help
Create alias for easier usage
echo 'alias wapiti="docker run --rm -it -v $(pwd):/data wapiti/wapiti:latest"' >> ~/.bashrc source ~/.bashrc ```_
Manuelle Installation
```bash
Clone repository
git clone https://github.com/wapiti-scanner/wapiti.git cd wapiti
Install dependencies
pip install -r requirements.txt
Install
python setup.py install
Or run directly
python wapiti.py --help ```_
Basisnutzung
Einfache Schwachstelle Scannen
```bash
Basic scan
wapiti -u http://target.com
Scan with specific modules
wapiti -u http://target.com -m sql,xss,file
Scan with all modules
wapiti -u http://target.com -m all
Verbose scan
wapiti -u http://target.com -v 2
Quiet scan
wapiti -u http://target.com -q ```_
Crawling Optionen
```bash
Set crawling depth
wapiti -u http://target.com --depth 3
Set maximum pages to crawl
wapiti -u http://target.com --max-pages 100
Set crawling scope
wapiti -u http://target.com --scope domain
Include/exclude specific paths
wapiti -u http://target.com --skip-crawl "/admin,/test"
Follow external links
wapiti -u http://target.com --scope url ```_
Authentication
```bash
Basic authentication
wapiti -u http://target.com --auth-user admin --auth-password secret
Cookie-based authentication
wapiti -u http://target.com --cookie "PHPSESSID=abc123; auth=true"
Custom headers
wapiti -u http://target.com --headers "Authorization: Bearer token123"
Login form authentication
wapiti -u http://target.com --auth-method form --auth-url http://target.com/login --auth-user admin --auth-password secret ```_
Schwachstellenmodule
Verfügbare Module
```bash
List all available modules
wapiti --list-modules
SQL injection detection
wapiti -u http://target.com -m sql
Cross-site scripting (XSS)
wapiti -u http://target.com -m xss
File inclusion vulnerabilities
wapiti -u http://target.com -m file
Command execution
wapiti -u http://target.com -m exec
Cross-site request forgery (CSRF)
wapiti -u http://target.com -m csrf
Server-side request forgery (SSRF)
wapiti -u http://target.com -m ssrf
XML external entity (XXE)
wapiti -u http://target.com -m xxe
Backup file detection
wapiti -u http://target.com -m backup
Directory traversal
wapiti -u http://target.com -m traversal
HTTP security headers
wapiti -u http://target.com -m headers ```_
Modulspezifische Scans
```bash
Comprehensive SQL injection scan
wapiti -u http://target.com -m sql --level 2
XSS with custom payloads
wapiti -u http://target.com -m xss --payload-file xss_payloads.txt
File inclusion with time delay
wapiti -u http://target.com -m file --timeout 10
Command execution with specific OS
wapiti -u http://target.com -m exec --os linux
Multiple modules
wapiti -u http://target.com -m "sql,xss,file,exec" ```_
Erweiterte Konfiguration
Proxy und Netzwerkeinstellungen
```bash
Use HTTP proxy
wapiti -u http://target.com --proxy http://127.0.0.1:8080
Use SOCKS proxy
wapiti -u http://target.com --proxy socks5://127.0.0.1:9050
Set timeout
wapiti -u http://target.com --timeout 30
Set delay between requests
wapiti -u http://target.com --delay 2
Set user agent
wapiti -u http://target.com --user-agent "Custom Scanner 1.0"
Ignore SSL certificate errors
wapiti -u https://target.com --verify-ssl 0 ```_
Crawling Konfiguration
```bash
Set maximum crawling time
wapiti -u http://target.com --max-scan-time 3600
Set maximum parameters per page
wapiti -u http://target.com --max-parameters 20
Set maximum attack time per URL
wapiti -u http://target.com --max-attack-time 300
Exclude specific file types
wapiti -u http://target.com --exclude ".pdf,.jpg,*.png"
Include only specific file types
wapiti -u http://target.com --include ".php,.asp,*.jsp"
Set crawling rules
wapiti -u http://target.com --crawl-rules "follow_redirects,parse_robots" ```_
Ausgabe und Reporting
```bash
Generate HTML report
wapiti -u http://target.com -f html -o /tmp/wapiti_report.html
Generate XML report
wapiti -u http://target.com -f xml -o /tmp/wapiti_report.xml
Generate JSON report
wapiti -u http://target.com -f json -o /tmp/wapiti_report.json
Generate TXT report
wapiti -u http://target.com -f txt -o /tmp/wapiti_report.txt
Multiple output formats
wapiti -u http://target.com -f html,xml,json -o /tmp/wapiti_report ```_
Spezielles Scannen
API Testing
```bash
Scan REST API
wapiti -u http://api.target.com/v1 --scope domain -m "sql,xss,xxe"
Scan with API authentication
wapiti -u http://api.target.com/v1 --headers "Authorization: Bearer token123" -m all
Scan GraphQL endpoints
wapiti -u http://target.com/graphql -m "sql,xss" --level 2
Scan with custom content type
wapiti -u http://api.target.com/v1 --headers "Content-Type: application/json" -m all ```_
Formbasierte Prüfung
```bash
Focus on forms only
wapiti -u http://target.com --attack-forms-only
Skip GET parameters
wapiti -u http://target.com --skip-get-params
Test specific form fields
wapiti -u http://target.com --form-data "username=admin&password;=test"
Upload file testing
wapiti -u http://target.com --upload-dir /tmp/uploads -m file ```_
Sitzungsmanagement
```bash
Use session file
wapiti -u http://target.com --session-file session.json
Save session for later use
wapiti -u http://target.com --save-session session.json
Resume previous scan
wapiti -u http://target.com --resume-session session.json
Clear session data
wapiti -u http://target.com --clear-session ```_
Benutzerdefinierte Payloads und Regeln
Individuelle Payload-Dateien
```bash
Create custom SQL injection payloads
cat > sql_payloads.txt << 'EOF' ' OR '1'='1 ' UNION SELECT NULL-- '; DROP TABLE users-- ' AND SLEEP(5)-- ' OR 1=1# EOF
Use custom payloads
wapiti -u http://target.com -m sql --payload-file sql_payloads.txt
Create custom XSS payloads
cat > xss_payloads.txt << 'EOF'
javascript:alert('XSS')
wapiti -u http://target.com -m xss --payload-file xss_payloads.txt ```_
Konfigurationsdateien
```bash
Create configuration file
cat > wapiti.conf << 'EOF' [general] timeout = 30 delay = 1 max_pages = 200 max_scan_time = 7200
[crawling] depth = 3 scope = domain follow_redirects = true
[modules] sql = true xss = true file = true exec = false csrf = true
[output] format = html,json output_dir = /tmp/wapiti_reports EOF
Use configuration file
wapiti -u http://target.com --config wapiti.conf ```_
Kundenspezifische Angriffsmodule
```python
!/usr/bin/env python3
Custom Wapiti module example
from wapitiCore.attack.attack import Attack from wapitiCore.language.vulnerability import Vulnerability
class CustomAttack(Attack): """Custom attack module for Wapiti"""
name = "custom"
description = "Custom vulnerability detection"
def __init__(self, crawler, persister, logger, attack_options):
super().__init__(crawler, persister, logger, attack_options)
self.payloads = [
"custom_payload_1",
"custom_payload_2",
"custom_payload_3"
]
def attack(self, http_res):
"""Main attack method"""
url = http_res.url
for payload in self.payloads:
# Inject payload and test response
test_url = f"\\\\{url\\\\}?test=\\\\{payload\\\\}"
try:
response = self.crawler.get(test_url)
if self.is_vulnerable(response):
vuln = Vulnerability(
category="Custom Vulnerability",
level=Vulnerability.HIGH_LEVEL,
request=response.http_request,
info="Custom vulnerability detected"
)
self.add_vuln(vuln)
except Exception as e:
self.logger.error(f"Error testing \\\\{test_url\\\\}: \\\\{e\\\\}")
def is_vulnerable(self, response):
"""Check if response indicates vulnerability"""
indicators = ["error", "exception", "debug"]
return any(indicator in response.content.lower() for indicator in indicators)
```_
Automatisierungsskripte
Umfassendes Scannen von Skript
```bash
!/bin/bash
Comprehensive web application security scan
TARGET="$1" OUTPUT_DIR="wapiti_scan_$(date +%Y%m%d_%H%M%S)"
if [ -z "$TARGET" ]; then
echo "Usage: $0
mkdir -p "$OUTPUT_DIR"
echo "[+] Starting comprehensive scan for: $TARGET"
Basic vulnerability scan
echo "[+] Running basic vulnerability scan..." wapiti -u "$TARGET" \ -m "sql,xss,file,exec,csrf,ssrf" \ -f html,json \ -o "$OUTPUT_DIR/basic_scan" \ --level 2 \ --timeout 30 \ --max-pages 500
Deep SQL injection scan
echo "[+] Running deep SQL injection scan..." wapiti -u "$TARGET" \ -m sql \ -f json \ -o "$OUTPUT_DIR/sql_scan.json" \ --level 3 \ --timeout 60
XSS focused scan
echo "[+] Running XSS focused scan..." wapiti -u "$TARGET" \ -m xss \ -f json \ -o "$OUTPUT_DIR/xss_scan.json" \ --level 2 \ --timeout 30
File inclusion scan
echo "[+] Running file inclusion scan..." wapiti -u "$TARGET" \ -m file \ -f json \ -o "$OUTPUT_DIR/file_scan.json" \ --level 2
Backup file detection
echo "[+] Running backup file detection..." wapiti -u "$TARGET" \ -m backup \ -f json \ -o "$OUTPUT_DIR/backup_scan.json"
Security headers check
echo "[+] Checking security headers..." wapiti -u "$TARGET" \ -m headers \ -f json \ -o "$OUTPUT_DIR/headers_scan.json"
echo "[+] Scan completed. Results saved to: $OUTPUT_DIR"
Generate summary
python3 ``<< EOF import json import os from collections import defaultdict
results_dir = "$OUTPUT_DIR" vulnerabilities = defaultdict(list)
for filename in os.listdir(results_dir): if filename.endswith('.json'): filepath = os.path.join(results_dir, filename) try: with open(filepath, 'r') as f: data = json.load(f) if 'vulnerabilities' in data: for vuln in data['vulnerabilities']: vuln_type = vuln.get('type', 'Unknown') vulnerabilities[vuln_type].append(vuln) except Exception as e: print(f"Error processing \{filename\}: \{e\}")
print("\n=== VULNERABILITY SUMMARY ===") total_vulns = 0 for vuln_type, vulns in vulnerabilities.items(): count = len(vulns) total_vulns += count print(f"\{vuln_type\}: \{count\}")
print(f"\nTotal vulnerabilities found: \{total_vulns\}")
Save summary
summary = \{ 'total_vulnerabilities': total_vulns, 'by_type': \{k: len(v) for k, v in vulnerabilities.items()\} \}
with open(os.path.join(results_dir, 'summary.json'), 'w') as f: json.dump(summary, f, indent=2) EOF ```_
Continuous Monitoring Script
```bash
!/bin/bash
Continuous web application monitoring
CONFIG_FILE="monitor_config.conf" LOG_FILE="wapiti_monitor.log"
Configuration
TARGETS=( "https://app1.example.com" "https://app2.example.com" "https://api.example.com" )
SCAN_INTERVAL=86400 # 24 hours ALERT_EMAIL="security@example.com"
log_message() \{ echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1"|tee -a "$LOG_FILE" \}
send_alert() \{ local target="$1" local vuln_count="$2" local report_file="$3"
if [ "$vuln_count" -gt 0 ]; then
log_message "ALERT: $vuln_count vulnerabilities found in $target"
# Send email alert (requires mail command)
if command -v mail >``/dev/null 2>&1; then
echo "Wapiti scan found $vuln_count vulnerabilities in $target. See attached report."|\
mail -s "Security Alert: Vulnerabilities Detected" -A "$report_file" "$ALERT_EMAIL"
fi
fi
\\}
scan_target() \\{ local target="$1" local timestamp=$(date +%Y%m%d_%H%M%S) local output_dir="monitor_$\\{timestamp\\}" local report_file="$\\{output_dir\\}/scan_report.json"
log_message "Starting scan for: $target"
mkdir -p "$output_dir"
# Run Wapiti scan
wapiti -u "$target" \
-m "sql,xss,file,exec,csrf" \
-f json \
-o "$report_file" \
--timeout 30 \
--max-pages 200 \
--level 1 \
2>>"$LOG_FILE"
if [ -f "$report_file" ]; then
# Count vulnerabilities
vuln_count=$(python3 -c "
import json try: with open('$report_file', 'r') as f: data = json.load(f) print(len(data.get('vulnerabilities', []))) except: print(0) ")
log_message "Scan completed for $target. Found $vuln_count vulnerabilities."
send_alert "$target" "$vuln_count" "$report_file"
# Cleanup old reports (keep last 10)
| ls -t monitor_*/scan_report.json 2>/dev/null | tail -n +11 | xargs rm -f 2>/dev/null |
else
log_message "ERROR: Scan failed for $target"
fi
\\}
Main monitoring loop
while true; do log_message "Starting monitoring cycle"
for target in "$\\\\{TARGETS[@]\\\\}"; do
scan_target "$target"
sleep 60 # Wait between targets
done
log_message "Monitoring cycle completed. Sleeping for $SCAN_INTERVAL seconds."
sleep "$SCAN_INTERVAL"
done ```_
CI/CD Integrationsskript
```bash
!/bin/bash
CI/CD pipeline integration script
set -e
TARGET_URL="$1" FAIL_ON_VULN="$\\{2:-true\\}" OUTPUT_DIR="wapiti_ci_$(date +%Y%m%d_%H%M%S)"
if [ -z "$TARGET_URL" ]; then
echo "Usage: $0
mkdir -p "$OUTPUT_DIR"
echo "Starting security scan for: $TARGET_URL"
Run Wapiti scan
wapiti -u "$TARGET_URL" \ -m "sql,xss,file,exec,csrf" \ -f json,html \ -o "$OUTPUT_DIR/security_scan" \ --timeout 30 \ --max-pages 100 \ --level 1
Process results
REPORT_FILE="$OUTPUT_DIR/security_scan.json"
if [ -f "$REPORT_FILE" ]; then # Count vulnerabilities by severity python3 << EOF import json import sys
with open('$REPORT_FILE', 'r') as f: data = json.load(f)
vulnerabilities = data.get('vulnerabilities', []) total = len(vulnerabilities)
severity_counts = \\{'high': 0, 'medium': 0, 'low': 0\\} for vuln in vulnerabilities: severity = vuln.get('level', 'low').lower() if severity in severity_counts: severity_counts[severity] += 1
print(f"Security Scan Results:") print(f"Total vulnerabilities: \\{total\\}") print(f"High severity: \\{severity_counts['high']\\}") print(f"Medium severity: \\{severity_counts['medium']\\}") print(f"Low severity: \\{severity_counts['low']\\}")
Exit with error code if vulnerabilities found and fail_on_vuln is true
if '$FAIL_ON_VULN' == 'true' and total > 0: print("\nSecurity vulnerabilities detected. Failing build.") sys.exit(1) else: print("\nSecurity scan completed successfully.") sys.exit(0) EOF
else echo "ERROR: Scan report not found" exit 1 fi ```_
Integration mit anderen Tools
Integration von Burp Suite
```bash
Use Burp as proxy for Wapiti
wapiti -u http://target.com --proxy http://127.0.0.1:8080
Export discovered URLs to Burp
wapiti -u http://target.com --crawl-only -f txt -o burp_targets.txt ```_
OWASP ZAP Integration
```bash
Use ZAP as proxy
wapiti -u http://target.com --proxy http://127.0.0.1:8080
Generate ZAP-compatible report
wapiti -u http://target.com -f xml -o zap_import.xml ```_
Nucles Integration
```bash
Extract URLs for Nuclei
wapiti -u http://target.com --crawl-only --format txt|grep -E '^http' > nuclei_targets.txt
Run Nuclei on discovered URLs
nuclei -l nuclei_targets.txt -t /path/to/nuclei-templates/ ```_
Fehlerbehebung
Gemeinsame Themen
Crawling Probleme
```bash
Increase crawling timeout
wapiti -u http://target.com --timeout 60
Reduce crawling depth
wapiti -u http://target.com --depth 1
Skip problematic URLs
wapiti -u http://target.com --skip-crawl "/problematic-path"
Use different user agent
wapiti -u http://target.com --user-agent "Mozilla/5.0 (compatible; Scanner)" ```_
Authentifizierungsfragen
```bash
Debug authentication
wapiti -u http://target.com --auth-user admin --auth-password secret -v 2
Use cookie authentication instead
wapiti -u http://target.com --cookie "session=valid_session_id"
Test authentication manually first
curl -u admin:secret http://target.com/protected ```_
Leistungsfragen
```bash
Reduce scan scope
wapiti -u http://target.com --max-pages 50
Increase delays
wapiti -u http://target.com --delay 3
Use fewer modules
wapiti -u http://target.com -m "sql,xss"
Set scan time limit
wapiti -u http://target.com --max-scan-time 1800 ```_
SSL/TLS Ausgaben
```bash
Disable SSL verification
wapiti -u https://target.com --verify-ssl 0
Use specific SSL version
wapiti -u https://target.com --ssl-version TLSv1.2
Debug SSL issues
wapiti -u https://target.com -v 2 --verify-ssl 0 ```_
Debugging und Logging
```bash
Enable verbose logging
wapiti -u http://target.com -v 2
Save debug information
wapiti -u http://target.com -v 2 2>&1|tee wapiti_debug.log
Test specific module
wapiti -u http://target.com -m sql -v 2
Dry run (crawl only)
wapiti -u http://target.com --crawl-only -v 1 ```_
Ressourcen
- [offizielle Wapiti-Dokumentation](LINK_7 -%20Wapiti%20GitHub%20Repository
- [OWASP Web Security Testing Guide](LINK_7 -%20[Web%20Application%20Security%20Scanner%20Evaluation](LINK_7 -%20(__LINK_7___)
- Web Application Penetration Testing
- (LINK_7)
--
*Dieses Betrügereiblatt bietet eine umfassende Referenz für die Verwendung von Wapiti für das Scannen von Webanwendungen. Stellen Sie immer sicher, dass Sie eine richtige Berechtigung haben, bevor Sie dieses Tool in jeder Umgebung verwenden. *