Fuzzing-Angriffe 2026: Analyse von 12 Angriffsvektoren aus 20.000 Nginx-Log-Zeilen
Ein automatisierter Fuzzing-Scanner bombardierte einen Server mit Nginx in 5 Minuten mit über 20.000 Anfragen. Zwei IPs aus demselben Subnetz (185.x.x.52, 185.x.x.38) nutzten den User-Agent curl/8.7.1. Wahrscheinliche Tools: Nuclei mit benutzerdefinierten Templates oder ffuf/gobuster mit einer Wordlist von GitHub. Der Angriff folgte einem parabolischen Muster: Beginn bei 100 Anfragen pro Sekunde, Druck auf Limits, Eskalation auf eine zweite IP und Abflauen mit Junk-Pfaden.
Der Scanner startete mit .env-Dateien, ging zu Debug-Skripten, LFI/RCE, CI/CD-Konfigurationen und POST-Floods über. Alle Anfragen wurden durch grundlegende Nginx-Einstellungen blockiert: Rate Limiting, Methoden-Routing und eine Catch-All-Regel für SPAs.
Top 12 Scanning-Vektoren
Die Log-Analyse zeigte charakteristische Muster. Hier sind Schlüsselbeispiele mit echten Anfragen:
- Jagd nach .env:
/.env.staging,/.env.local,/api/.env. Ziel – Datenbankschlüssel, AWS-Tokens.
{"time_local":"16/Mar/2026:17:19:51 +0000","remote_addr":"185.x.x.52","request_method":"GET","request_uri":"/.env.staging","status":"404","body_bytes_sent":"53","http_user_agent":"curl/8.7.1"}
- Server-Debugging:
/admin/admin_phpinfo.php4,phpinfo.php. Aufklärung für Versionen und Pfade für LFI.
- Yii2/Laravel-Debug:
/debug/default/view?panel=config– ein Versuch, Konfigurationen mit Passwörtern zu leaken.
- GitHub-Tutorials:
/07-accessing-data/begin/vue-heroes/.env– Suche nach kopiertem Code aus Kursen.
- NPM-Fixtures:
/babel-plugin-dotenv/test/fixtures/dev-env/.env– Tests in Vendor-Verzeichnissen.
- LFI in Grafana:
/login?redirectTo=%2Fpms%3Fmodule%3Dlogging%26file_name%3D..%2F..%2F..%2F..%2F..%2F..%2F~%2F.aws%2Fcredentials(Status 429).
- RCE-Injection:
/admin/config?cmd=cat%20/root/.aws/credentials.
- SSH-Schlüssel:
/.ssh/id_rsa.
- CI/CD:
/.gitlab-ci.yml,sendgrid.env.
- Next.js-Artefakte:
/_next/static/chunks/app/error.jsfür Source Maps.
- POST-Flood:
/api/files/upload(Status 405).
- Junk:
/config.json.bak.1.
Abwehrmechanismen auf Nginx-Ebene
Der Server hielt der Last dank strenger Konfiguration stand. Übersicht effektiver Praktiken:
- Rate Limiting:
limit_req zone=grafana_login_ip burst=5 nodelay;bei Login-Formularen und APIs. LFI-Anfragen gaben 429 zurück, sparten CPU.
- Methoden-Einschränkungen: Blockieren von POST auf nicht unterstützten Endpunkten – 405 Method Not Allowed. Anfragen erreichen den App-Server nie.
- Catch-All-Routing:
try_files $uri $uri/ /index.html;liefert die SPA-Seite mit 200 statt 404. Der Bot lud 40+ KB HTML statt Konfigurationen herunter.
- SNI-Verifizierung: 421 Misdirected Request bei HTTP/2 mit falschem Host – verlangsamt multiplexende Scanner.
Analyse der Angriffsdynamik
{"time_local":"16/Mar/2026:17:19:51 +0000","remote_addr":"185.x.x.52","request_method":"GET","request_uri":"/config.php","status":"200","body_bytes_sent":"40414","http_user_agent":"curl/8.7.1"}
Der Bot interpretierte die 200 als Erfolg, erhielt aber Junk. Solche Tricks verwirren Wordlist-Generator-Parser.
Fuzzing entwickelt sich: Wordlists mutieren von GitHub, NPM, Tutorials. Scanner passen sich Limits an, aber grundlegende Hygiene (kein .git, keine Tests) + Nginx-Filter halten die Verteidigung.
Wichtige Erkenntnisse:
- Fuzzing 2026 fokussiert auf .env, LFI/RCE, CI/CD, GitHub-Kopien.
- 20k Anfragen/5 min ist normal für Nuclei/ffuf; Rate Limit burst=5 blockiert es.
- Catch-All mit 200 OK + große Payload verwirrt Bots.
- Methoden-Routing (405) und SNI (421) minimieren Backend-Last.
- Regelmäßige Log-Audits decken neue Wordlist-Muster auf.
— Editorial Team
Noch keine Kommentare.