Skip to content

crack666/pentest-lab

Repository files navigation

Web Application Penetration Testing Lab

Vollständige Testing-Suite für OWASP Top 10 Schwachstellen mit automatisierten und manuellen Testing-Workflows

Dieses Lab bietet eine professionelle Pen-Testing-Umgebung für Webanwendungen mit Fokus auf:

  • ✅ Automatisierte Vulnerability Scans (ZAP, Nikto, sqlmap)
  • ✅ Manuelle Testing-Workflows (Burp Suite)
  • ✅ Authentifizierungs-Support (JWT & Session-based)
  • ✅ Strukturierte Dokumentation & Reporting

📋 Inhaltsverzeichnis


🚀 Quick Start

1. Voraussetzungen

# Docker & Docker Compose
docker --version
docker-compose --version

# WSL/Linux mit installierten Tools
curl --version
jq --version

2. Labor starten

# Docker Container hochfahren (Juice Shop + OWASP ZAP)
docker-compose up -d

# Prüfen ob alles läuft
docker-compose ps

Erwartete Container:

  • juice-shop auf Port 3333 (Test-Target)
  • owasp-zap auf Port 8889 (Web UI) und 8888 (Proxy)

3. Ersten Scan durchführen

# Automatisierter Scan gegen Juice Shop
cd pentest-lab
chmod +x scripts/automated-scan.sh
./scripts/automated-scan.sh

# Scan dauert ca. 15-20 Minuten

4. Ergebnisse anschauen

# Scan-Summary (zeigt alle Findings)
cat findings/scan_*/00-SCAN-SUMMARY.md

# ZAP HTML Report (im Browser öffnen)
# Windows: findings\scan_TIMESTAMP\zap\baseline-scan.html
# Linux: findings/scan_TIMESTAMP/zap/baseline-scan.html

🎯 Was wird getestet?

OWASP Top 10 Coverage

OWASP Kategorie Was wird getestet Tools
A01: Broken Access Control IDOR, fehlende Authorization ZAP, Burp, manuelle Tests
A02: Cryptographic Failures Unverschlüsselte Daten, schwache Krypto ZAP, manuelle Tests
A03: Injection SQL Injection, Command Injection sqlmap, ZAP
A04: Insecure Design CORS Misconfiguration, fehlende Security Headers Custom Scripts, ZAP
A05: Security Misconfiguration Default Credentials, unnötige Features Nikto, ZAP
A06: Vulnerable Components Veraltete Libraries, bekannte CVEs Nikto, ZAP
A07: Auth & Session Management Session Fixation, schwache Tokens ZAP, Burp, manuelle Tests
A08: Software & Data Integrity Fehlende Integrity Checks ZAP, manuelle Tests
A09: Security Logging Fehlende Logs, unzureichendes Monitoring Manuelle Tests
A10: SSRF Server-Side Request Forgery ZAP, manuelle Tests

Spezifische Schwachstellen

✅ Getestet (automatisiert + manuell):

  • XSS (Reflected, Stored, DOM-based) → ZAP, Burp
  • SQL Injection → sqlmap (automatisch)
  • CORS Misconfiguration → Custom Script
  • Security Headers (CSP, HSTS, X-Frame-Options) → Custom Script
  • Clickjacking → Manuelle Tests, ZAP
  • DOM-Clobbering → Manuelle Tests
  • Authentication Bypass → Mit Auth-Support testbar
  • IDOR (Insecure Direct Object References) → Manuelle Tests, Burp

⏭️ Nicht im Fokus:

  • Port Scanning (nur basic nmap für Context)
  • Network-Level Attacks
  • Physical Security
  • Social Engineering

🛠️ Tools & Testing-Methodik

Automatisierte Tools

1. OWASP ZAP (Zed Attack Proxy)

Was es tut:

  • Automatischer Vulnerability Scanner
  • Intercepting Proxy (wie Burp)
  • Spider/Crawler für alle Endpoints
  • Findet: XSS, SQL Injection, CORS-Fehler, fehlende Security Headers

Wann verwenden:

  • ✅ Erster automatischer Scan
  • ✅ Baseline-Findings schnell finden
  • ✅ Regression-Testing nach Fixes

Beispiel:

# Wird automatisch vom Script ausgeführt
# Oder manuell:
docker exec owasp-zap zap-baseline.py \
  -t http://juice-shop:3000 \
  -r reports/scan.html

2. Nikto

Was es tut:

  • Web Server Scanner
  • Findet: Veraltete Software, Konfigurationsfehler, bekannte Vulnerabilities
  • Checkt: robots.txt, gefährliche Files, Server-Banner

Wann verwenden:

  • ✅ Server-Konfiguration prüfen
  • ✅ Bekannte CVEs finden
  • ✅ Dangerous Files aufspüren (backup files, .git, etc.)

Beispiel:

nikto -h http://localhost:3333

3. sqlmap

Was es tut:

  • Automatisches SQL Injection Testing
  • Testet: GET/POST Parameter, Cookies, Headers
  • Kann: DB extrahieren, OS Commands ausführen (wenn vuln)

Wann verwenden:

  • ✅ Jedes Input-Feld testen
  • ✅ Search-Funktionen, Login-Forms
  • ✅ API-Endpoints mit Parametern

Beispiel:

sqlmap -u "http://localhost:3333/rest/products/search?q=test" \
  --batch --smart

4. Custom Security Scripts

Was sie tun:

  • Security Headers Check: Prüft CSP, HSTS, X-Frame-Options, etc.
  • CORS Testing: Testet verschiedene Origins auf Misconfiguration
  • Authentication Manager: Automatisches Login für authenticated Scans

🤖 Automatisiertes Scanning

Script-Übersicht: automated-scan.sh

Das Haupt-Script führt alle Tools systematisch aus:

./scripts/automated-scan.sh

Scan-Phasen

Phase Tool Dauer Was passiert
0 auto-login.sh 5s Login + Token-Extraktion (optional)
1 curl 2s Security Headers Check
2 curl 5s CORS Misconfiguration Testing
3 ZAP Baseline 5-10 min Automatischer Vulnerability Scan
4 ZAP Full 20-30 min Aggressiver Deep-Scan (optional)
5 Nikto 3-5 min Web Server Vulnerability Scan
6 gobuster 5-10 min Directory/File Enumeration
7 sqlmap 10-15 min SQL Injection Testing (mehrere Endpoints)
8 nmap 1-2 min Port Scan (für Context)

Gesamt: ~15-20 Minuten (ohne Full ZAP Scan)

Umgebungsvariablen

# Target anpassen
TARGET_URL=https://app.example.com ./scripts/automated-scan.sh

# Mit Authentifizierung
TARGET_URL=https://app.example.com \
AUTH_CONFIG=./auth-config.production.json \
./scripts/automated-scan.sh

# Ohne Authentifizierung (Standard)
USE_AUTH=false ./scripts/automated-scan.sh

Scan-Optionen

# Nur bestimmte Phasen ausführen
./scripts/all-headers.sh         # Nur Headers
./scripts/cors-test.sh           # Nur CORS
./scripts/quick-scan.sh          # Headers + CORS + ZAP Baseline

🔐 Authentifizierung

Warum wichtig?

Die meisten echten Webanwendungen haben geschützte Bereiche die Login erfordern:

  • User Profiles, Dashboards
  • Admin Panels
  • API Endpoints mit Authorization
  • Order/Basket Funktionalität

Ohne Auth: Scanner sehen nur öffentliche Seiten (Login-Form, Landing Page)
Mit Auth: Scanner können alle geschützten Endpoints testen

⚠️ Authentifizierung ist OPTIONAL

Juice Shop und andere Test-Targets funktionieren AUCH OHNE AUTH!

  • ✅ Wenn keine auth-config.json vorhanden → normaler unauthenticated Scan
  • ✅ Wenn Auth fehlschlägt → Script warnt und macht trotzdem weiter
  • USE_AUTH=false → Auth komplett deaktivieren

Authentifizierung einrichten

1. Auth-Config erstellen

# Für JWT-basierte APIs (z.B. moderne SPAs)
cp auth-config.example.json auth-config.json

# Für Session-basierte Auth (z.B. Django, PHP)
cp auth-config.session.example.json auth-config.json

# Für Juice Shop (Beispiel)
cp auth-config.juiceshop.json auth-config.json

2. Config anpassen

{
  "auth_type": "jwt",
  "login": {
    "url": "/api/auth/login",
    "username_field": "email",
    "password_field": "password"
  },
  "response": {
    "token_path": ".access_token"
  },
  "verify": {
    "url": "/api/user/me"
  },
  "credentials": {
    "username": "test@example.com",
    "password": "YourTestPassword"
  }
}

Wichtig: Details siehe AUTH-CONFIG-GUIDE.md

3. Auth testen

# Manuell testen ob Login funktioniert
TARGET_URL=https://your-app.com \
AUTH_CONFIG=./auth-config.json \
./scripts/auto-login.sh

# Bei Erfolg:
✅ Authentication successful
✅ Token saved to: ./findings/.auth-token
✅ Testing authenticated endpoints...

4. Automatischen Scan mit Auth

# Script erkennt automatisch auth-config.json
./scripts/automated-scan.sh

# Oder explizit:
TARGET_URL=https://your-app.com \
AUTH_CONFIG=./auth-config.json \
./scripts/automated-scan.sh

Auth-Status prüfen

# Im Scan-Summary nachschauen
cat findings/scan_*/00-SCAN-SUMMARY.md

# Sollte zeigen:
**Authentication:** ✅ JWT Token
> ℹ️  **Auth Info:** JWT authentication configured (token available)

# Oder:
**Authentication:** ❌ Disabled  # Bei unauthenticated Scan

Unterstützte Auth-Typen

Type Beispiel Konfiguration
JWT / Bearer Token REST APIs, SPAs "auth_type": "jwt"
Session Cookies Django, Rails, PHP "auth_type": "session"
OpenID Connect Keycloak, Auth0 "auth_type": "jwt"

📊 Ergebnisse & Reports

Report-Struktur

Nach einem Scan findest du alle Ergebnisse in:

findings/
└── scan_20251110_043015/           # Timestamped Scan-ID
    ├── 00-SCAN-SUMMARY.md          # ⭐ START HIER
    ├── zap/
    │   ├── baseline-scan.html      # ⭐ ZAP HTML Report (öffnen im Browser)
    │   ├── baseline-scan.md
    │   └── baseline-scan.json
    ├── nikto/
    │   ├── nikto-scan.html
    │   └── nikto-scan.txt
    ├── sqlmap/
    │   ├── _rest_products_search_q_test/
    │   └── _rest_user_login/
    ├── gobuster/
    │   └── directories.txt
    └── manual/
        ├── 01-security-headers.txt
        ├── 02-cors-analysis.txt
        └── nmap-scan.txt

Wichtigste Reports

1. Scan Summary (Start hier!)

cat findings/scan_*/00-SCAN-SUMMARY.md

Zeigt:

  • Alle Scan-Phasen mit Status
  • Auth-Status
  • Report-Locations
  • Next Steps

2. ZAP HTML Report (Haupt-Findings)

# Windows
start findings/scan_TIMESTAMP/zap/baseline-scan.html

# Linux/Mac
xdg-open findings/scan_TIMESTAMP/zap/baseline-scan.html

Zeigt:

  • Alle gefundenen Vulnerabilities
  • Severity-Rating (High/Medium/Low)
  • URLs + Request/Response Details
  • CWE/OWASP Mapping

3. Security Headers Check

cat findings/scan_*/manual/01-security-headers.txt

Zeigt:

  • ❌ Fehlende Headers (CSP, HSTS, X-Frame-Options)
  • ✅ Vorhandene Headers
  • 💡 Empfehlungen

4. CORS Analysis

cat findings/scan_*/manual/02-cors-analysis.txt

Zeigt:

  • Access-Control-Allow-Origin Werte
  • Tests mit verschiedenen Origins
  • Wildcard (*) Misconfiguration

5. sqlmap Results

ls findings/scan_*/sqlmap/
cat findings/scan_*/sqlmap/*/log

Zeigt:

  • Welche Endpoints getestet wurden
  • Gefundene SQL Injection Points
  • Injizierbare Parameter

Findings interpretieren

Siehe: TESTING-METHODOLOGY.md für detaillierte Anleitung

Typische ZAP-Findings:

Finding Severity Was bedeutet das?
CORS Misconfiguration High Access-Control-Allow-Origin: * → Jede Website kann API aufrufen
Missing CSP High Keine Content-Security-Policy → XSS schwerer zu verhindern
Dangerous JS Functions Medium eval(), innerHTML → Potenzielle XSS Injection Points
Cross-Domain Script Low External Scripts ohne SRI → Supply-Chain Risk

🧪 Tool-Auswahl & Begründung

Warum diese Tools?

Tool Stärken Schwächen Warum gewählt
OWASP ZAP Kostenlos, gute OWASP-Coverage, automatisiert Manchmal false positives Industry Standard, Docker-Support, scriptable
Burp Suite Beste manuelle Testing-Features, Repeater Community = limited Gold-Standard für manuelles Testing
sqlmap Beste SQL Injection Detection, Auto-Exploitation Langsam, kann DB crashen Spezialist für SQLi, findet komplexe Injections
Nikto Schnell, kennt viele Server-Vulns Viele false positives Quick-Win für Server-Config
Custom Scripts Spezifisch für unsere Tests (CORS, Headers) Kein Tool-Support Genau das was wir brauchen, simpel

Vergleich: ZAP vs. Burp Suite

Feature OWASP ZAP Burp Suite Community
Preis Kostenlos (Open Source) Kostenlos (limited)
Automatischer Scan ✅ Sehr gut ❌ Nur Pro
Manual Testing ⚠️ OK ✅ Exzellent
Docker Integration ✅ Ja ❌ Nein
CI/CD Integration ✅ Einfach ⚠️ Schwierig
Learning Curve Niedrig Mittel
Repeatability ✅ Scripts ⚠️ Limited

Unsere Strategie:

  • 🤖 ZAP für automatisierte Baseline-Scans
  • 👤 Burp für tiefes manuelles Testing und Exploitation
  • 🎯 sqlmap als Spezialist für SQL Injection

Was fehlt? (bewusst nicht dabei)

Tool Warum nicht?
Nessus/OpenVAS Fokus auf Network-Scanning, nicht Web-Apps
Metasploit Exploitation-Framework, über Scope hinaus
Acunetix/Netsparker Commercial, nicht nötig für Lernzwecke
Wireshark Network-Analysis, nicht Web-App Testing

📚 Dokumentation & Guides

Dokument Beschreibung
README.md Dieser File - Overview und Quick Start
TESTING-METHODOLOGY.md Detaillierte Testing-Anleitung, Schritt-für-Schritt
QUICK-START.md Schnelleinstieg für Eilige
AUTH-CONFIG-GUIDE.md Komplettes Handbuch zur Auth-Konfiguration
AUTH-SCRIPT-TEST-RESULTS.md Test-Ergebnisse mit Juice Shop & TransactMail
AUTHENTICATION-GUIDE.md Theoretische Grundlagen zu Auth-Testing

🎓 Lernressourcen

OWASP Top 10 verstehen

Tool-Dokumentation


🚨 Wichtige Hinweise

⚠️ Nur auf eigenen/authorisierten Systemen testen!

NIEMALS diese Tools auf fremden Websites/Systemen verwenden ohne explizite schriftliche Genehmigung!

Legal testen:

  • ✅ OWASP Juice Shop (unser Lab)
  • ✅ Eigene Webanwendungen
  • ✅ Test-Environments mit Genehmigung
  • ✅ Bug-Bounty-Programme (nach deren Regeln)
  • ❌ Production-Systeme ohne Genehmigung
  • ❌ Fremde Websites zum "üben"

⚠️ Scan-Intensität beachten

sqlmap & ZAP Full Scan können:

  • Server belasten (viele Requests)
  • Logs füllen
  • WAFs triggern
  • In seltenen Fällen: Instabilität verursachen

Empfehlung:

  • Start mit Baseline-Scan
  • Full-Scans nur auf Test-Systemen
  • Bei Production: Mit DevOps/SysAdmin absprechen

🤝 Contributing

Pull Requests willkommen! Besonders für:

  • Neue Testing-Scripts
  • Zusätzliche Auth-Patterns
  • Verbesserte Dokumentation
  • Bug-Fixes

📝 License

MIT License - Siehe LICENSE File


🔗 Quick Links


Happy Hacking! 🎯

Remember: With great power comes great responsibility. Test ethically!

About

Scripts für Sicherheit und Webanwendungen

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors