Zum Inhalt springen

Architektur

Diese Komponente stellt einen einzelnen Ursprungsserver bereit, der mehrere anfällige Webanwendungen für Sicherheitstest-Demos hostet. Er repräsentiert den „Ursprung” in einer typischen Load-Balancer-Architektur – den Backend-Inhaltsserver, den ein F5 XC HTTP-Load-Balancer schützt.

In Produktionsarchitekturen:

End User -> F5 XC HTTP LB (WAF/Bot/API Security) -> Origin Server -> Application

Diese Komponente ersetzt einen echten Produktionsanwendungsserver durch eine zweckgebundene VM, auf der bekannte anfällige Anwendungen ausgeführt werden, die WAF-Regeln, API-Sicherheitsrichtlinien und Bot-Erkennung auslösen.

graph LR
    Client[Client Browser] --> XCHLB[F5 XC HTTP LB]
    XCHLB --> NGINX[nginx Reverse Proxy<br/>Ubuntu 24.04 · D16s_v3<br/>reuseport · 16 workers]
    NGINX --> |/| DEFAULT[Landing Page]
    NGINX --> |/juice-shop/| JS[Juice Shop ×4<br/>Ports 3001-3004<br/>hash cookie_token · cache]
    NGINX --> |/dvwa/| DVWA[DVWA-FPM ×4<br/>Ports 8101-8104<br/>hash cookie_PHPSESSID]
    NGINX --> |/vampi/| VAMPI[VAmPI ×4<br/>Ports 5101-5104<br/>ip_hash · gunicorn]
    NGINX --> |/httpbin/| HTTPBIN[httpbin ×4<br/>Ports 8201-8204<br/>gunicorn -w 4]
    NGINX --> |/whoami/| WHOAMI[whoami ×4<br/>Ports 8082-8085]
    NGINX --> |/csd-demo/| CSD[CSD Demo ×4<br/>Ports 5001-5004<br/>ip_hash · gunicorn -w 1]
    NGINX --> |/dvga/| DVGA[DVGA ×4<br/>Ports 5201-5204<br/>ip_hash · SQLite]
    NGINX --> |/restaurant/| REST[RESTaurant ×4<br/>Ports 8301-8304<br/>round-robin]
    XCHLB --> |:8888| CRAPI[crAPI ×7 microservices<br/>Port 8888<br/>web · identity · community<br/>workshop · postgres · mongo · mailhog]
    DVWA --> DB[(MariaDB 10.11<br/>dvwa-db)]
    REST --> RESTDB[(PostgreSQL 15.4<br/>restaurant-db)]

41 Container auf einer Standard_D16s_v3-VM (16 vCPU, 64 GiB RAM, 60 GiB Festplatte).

Der nginx-Reverse-Proxy:

  • Lauscht auf Port 80 mit reuseport und backlog=4096 für hochnebenläufigen CDN-Datenverkehr
  • Routet nach Pfadpräfix zu lastverteilten Upstream-Pools (4 Instanzen pro Anwendung)
  • Sticky Sessions verhindern Zustandsverlust: hash $cookie_token für Juice Shop, hash $cookie_PHPSESSID für DVWA, ip_hash für VAmPI und CSD Demo (SQLite/In-Memory-Zustand pro Instanz)
  • Proxy-Cache für statische Juice-Shop-Assets (10-MB-Zone, 100 MB max., 60 s TTL)
  • Zugriffsprotokollierung deaktiviert, um Erschöpfung des Festplattenspeichers bei CDN-Lasttests zu vermeiden (logrotate als Defense-in-Depth)
  • Leitet Client-Header weiter (X-Real-IP, X-Forwarded-For, X-Forwarded-Proto) für Ursprungstransparenz
  • Kernel-Tuning über sysctl: somaxconn=65535, tcp_tw_reuse=1, ip_local_port_range=1024-65535
PfadUpstreamInstanzenPortsSticky SessionZweck
/nginxStartseite mit Links zu allen Anwendungen
/healthnginxJSON-Health-Endpunkt (9 Anwendungen aufgeführt)
/juice-shop/juice_shop43001-3004hash $cookie_tokenSicherheit moderner Web-Apps (XSS, Injection, CSRF)
/dvwa/dvwa4 + MariaDB8101-8104hash $cookie_PHPSESSIDKlassische WAF-Tests mit einstellbarem Schwierigkeitsgrad
/vampi/vampi45101-5104ip_hashREST-API-Sicherheitstests (OWASP API Top 10)
/httpbin/httpbin_up48201-8204HTTP-Anfrage-/Antwortdienst für API-Demos
/whoami/whoami_up48082-8085Anfrage-Diagnose – zeigt alle Header und Client-IP an
/csd-demo/csd_demo45001-5004ip_hashClientseitige Abwehr-Tests (Magecart-Angriffe)
/dvga/dvga45201-5204ip_hashGraphQL-API-Sicherheitstests (Injection, DoS, Auth-Bypass)
/restaurant/restaurant4 + PostgreSQL8301-8304REST-API-Sicherheit (OWASP API Top 10 2023)
:8888crapi7 Microservices8888OWASP crAPI (BOLA, BFLA, Mass Assignment, SSRF, JWT)

Dies ist ein Teil einer größeren Laborumgebung. Jede Komponente ist eigenständig und wird unabhängig bereitgestellt:

  • Diese Komponente stellt den Ursprungsserver bereit (nginx + Docker-Container auf Azure-VM)
  • CDN-Simulator stellt die CDN-Edge-Schicht bereit (nginx-Caching auf Azure-VM)
  • Weitere Komponenten stellen die F5 XC-Konfiguration, DNS, WAF-Richtlinien, API-Sicherheit usw. bereit.

Der menschliche Bediener fügt Komponenten einzeln hinzu. Die Dokumentation jeder Komponente ist so verfasst, dass ein KI-Assistent sie lesen und die Infrastruktur autonom bereitstellen kann.

AnwendungAuswahlgrund
Juice ShopOWASP-Flaggschiffprojekt; moderne Node.js-SPA mit über 100 Challenges, die die OWASP Top 10 abdecken; aktiv gepflegt; 4 Instanzen mit Proxy-Cache
DVWABranchenstandard für WAF-Tests; einstellbare Sicherheitsstufen (niedrig/mittel/hoch/unmöglich); benutzerdefinierter php-fpm-+nginx-Build für Performance; gemeinsames MariaDB-10.11-Backend
VAmPIZweckgebaut für OWASP API Security Top 10; REST-API mit bekannten Schwachstellen; gunicorn mit 4 Workern pro Instanz; ip_hash Sticky für SQLite-Konsistenz
httpbinKenneth Reitz’ kanonischer HTTP-Testdienst; gunicorn mit 4 gevent-Workern; nützlich für API-Demos und Anfrageninspektion
whoamiTraefiks Request-Echo-Server; zeigt vollständige Anfragendetails so an, wie der Ursprung sie sieht – unverzichtbar zur Überprüfung der F5 XC-Header-Injektion
CSD DemoBenutzerdefinierte Checkout-Seite mit 5 umschaltbaren Magecart-artigen Angriffen (Card Skimmer, Formjacker, Keylogger, Cryptominer, DOM Hijack); Exfil-Endpunkt + Angreifer-Dashboard; gunicorn Single-Worker für In-Memory-Zustandspersistenz
DVGADamn Vulnerable GraphQL Application; GraphQL-spezifische Schwachstellen einschließlich Injection, DoS, Batching-Angriffe und Autorisierungsumgehung; GraphiQL-UI für interaktive Erkundung; ip_hash Sticky für SQLite pro Instanz
RESTaurantDamn Vulnerable RESTaurant API Game; zweckgebaut für OWASP API Security Top 10 2023; FastAPI mit Swagger UI; gemeinsames PostgreSQL-15.4-Backend; deckt BOLA, BFLA, Mass Assignment, SSRF und Injection ab
crAPIOWASP Completely Ridiculous API; 7-Microservice-Architektur, die BOLA, BFLA, Mass Assignment, SSRF, JWT-Manipulation und NoSQL-Injection abdeckt; dedizierter Port 8888 (SPA mit fest codierten API-Pfaden); MailHog für E-Mail-Erfassung