BLUE TEAM WRITE-UP // DEFENSIVE ARCHITECTURE
Defensive Architecture:
WAF Implementation (ModSecurity)
authorMaksymilian Frankowski
date2026-05-26
roleBlue Team — Defender
related_reportDVWA SQLi Red Team Write-up ↗
stackNginx · ModSecurity · OWASP CRS · Docker
scopeIsolated local network · No live systems
00 // EXECUTIVE SUMMARY
Overview
W odpowiedzi na zidentyfikowane podatności aplikacji (SQL Injection), zaprojektowano i wdrożono architekturę obronną opartą na Reverse Proxy. Wykorzystano Nginx z modułem ModSecurity w celu inspekcji i blokowania złośliwego ruchu na krawędzi sieci.
PHASE-01 // DEPLOYMENT
Infrastructure as Code
Cały stos WAF wdrożono jako kontener Docker przy użyciu oficjalnego obrazu
owasp/modsecurity-crs:nginx. Konfiguracja jest w pełni
odtwarzalna i przenośna — jeden plik docker-compose.yml
definiuje kompletną architekturę obronną.
# WAF Reverse Proxy — ModSecurity + OWASP CRS
services:
waf:
image: owasp/modsecurity-crs:nginx
container_name: waf-modsecurity
ports:
- "8088:8080" # expose WAF on port 8088
environment:
- BACKEND=http://dvwa:80 # proxy target
- MODSEC_RULE_ENGINE=On
- PARANOIA=1 # OWASP CRS paranoia level
networks:
- waf-net
dvwa:
image: vulnerables/web-dvwa
container_name: dvwa-target
networks:
- waf-net
networks:
waf-net:
driver: bridge
$ docker compose up -d
[+] Running 2/2
✔ Container waf-modsecurity Started
✔ Container dvwa-target Started
PHASE-02 // DETECTION
Detekcja i Blokowanie
Reguły OWASP Core Rule Set (CRS) natychmiastowo zidentyfikowały
i zablokowały ładunki SQLi — odpowiadając błędem
403 Forbidden. Złośliwe żądanie nie dotarło nigdy do aplikacji.
Detekcja opiera się na sygnatach wzorców ataku takich jak
UNION SELECT,
OR 1=1 i metadanych HTTP.
--a1b2c3d4-A--
[26/May/2026:21:04:12 +0000] BLOCKED
Request: GET /vulnerabilities/sqli/?id=1%27+AND+1%3D1--
[ALERT] Matched phrase "and 1=1" at ARGS:id.
Rule ID: 942100 · SQL Injection Attack Detected via libinjection
Severity: CRITICAL · Paranoia Level: 1
Action: deny · status 403
[ALERT] Matched phrase "union select" at ARGS:id.
Rule ID: 942200 · Detects UNION-based SQL Injection
Action: deny · status 403
PHASE-03 // MITIGATION PROOF
Dowód Skuteczności
Zmasowany atak wykonany przez sqlmap został zablokowany 147 razy — żaden ładunek nie przebił się do warstwy aplikacji. WAF pochłonął pełne skanowanie bez żadnej ekstrakcji danych, potwierdzając skuteczność architektury obronnej.
Requests Blocked
147
Data Leaked
0
HTTP Status
403
const result = "WAF na bazie ModSecurity + OWASP CRS skutecznie zneutralizował wszystkie wektory SQLi wykryte w trakcie Red Team Assessment.";
// Pełen cykl: Red Team odkrywa · Blue Team deployuje obronę · weryfikacja skuteczności.
// Related: DVWA SQLi Red Team Write-up →
$ echo "Defense holds. — Maksymilian Frankowski · zwidek.pl"
© 2026 · Maksymilian Frankowski · All systems nominal