In der Vergangenheit wurden auf ITrig öfters Security Scanner erwähnt, z.B. OpenVAS oder Trivy. Diese Security Scanner sind natürlich nicht die einzigen im Internet. Ein weiterer Kandidat auf Go Basis ist Nuclei. Der vorlagenbasierte Schwachstellen-Scanner ist inzwischen Teil des Kali-Universums (2022.1) und bekommt daher heute einen gesonderten Artikel spendiert.
Nuclei
Das Open-Source-Tool scannt verschiedene Protokolle (TCP, SSH, DNS, HTTP/S, SSL, Websocket, Whois usw.) auf Schwachstellen und mehr. Dazu werden YAML-Vorlagen verwendet. Diese Templates werden zum größten Teil von der Community beigesteuert, können aber auch selbst für die eigenen Bedürfnisse geschrieben werden. So kann für die vor wenigen Tagen veröffentlichte Confluence Lücke CVE-2022-26134 bereits ein Scan Template gefunden werden.
Neben Nuclei bietet ProjectDiscovery noch weitere gute Programme für das Security-Umfeld. Beispielsweise subfinder, ein Subdomain Discovery Tool.
Bevor tiefer in Nuclei eingetaucht werden kann, muss der Scanner installiert werden.
Installation Nuclei unter Debian/Ubuntu
Da das Tool auf der Programmiersprache Go basiert, muss diese zunächst installiert werden.
curl -OL https://go.dev/dl/go1.18.3.linux-amd64.tar.gz
sudo tar -C /usr/local -xvf go1.18.3.linux-amd64.tar.gz
sudo nano ~/.profile
export PATH=$PATH:/usr/local/go/bin
source ~/.profile
Alternativ
sudo apt install golang-1.16
Nun kann die neueste Nuclei Version gebaut werden.
git clone https://github.com/projectdiscovery/nuclei.git
cd nuclei/v2/cmd/nuclei
go build
sudo mv nuclei /usr/local/bin/
nuclei -version
Nach der Installation sollte die Datenbank aktualisiert werden, damit Templates zur Verfügung stehen.
nuclei -ut
? nuclei git:(master) nuclei -ut
__ _
____ __ _______/ /__ (_)
/ __ \/ / / / ___/ / _ \/ /
/ / / / /_/ / /__/ / __/ /
/_/ /_/\__,_/\___/_/\___/_/ 2.7.2
projectdiscovery.io
[WRN] Use with caution. You are responsible for your actions.
[WRN] Developers assume no liability and are not responsible for any misuse or damage.
[INF] nuclei-templates are not installed, installing...
[INF] Successfully downloaded nuclei-templates (v9.0.6) to /home/user/nuclei-templates. GoodLuck!
ls -l ~/nuclei-templates/
Nachdem die Template-Datenbank aktualisiert wurde, können einzelne Vorlagen direkt in den Scanbefehl eingebunden werden.
Im Folgenden möchte ich einen kleinen Teil der möglichen Befehle mithilfe von Templates aufzeigen:
Einfacher API Scan
nuclei -u $URL -t ~/nuclei-templates/exposures/apis/
WordPress Scan
nuclei -u $URL -t ~/nuclei-templates/vulnerabilities/wordpress/
CVE Scan
nuclei -u $URL ~/nuclei-templates/cves/2022/CVE-2022-XXXX.yaml
Token Spray
nuclei -u $URL ~/nuclei-templates/token-spray/ -var token=XXX_TOKEN_XXX
Listen
Der Scanner kann mit Listen umgehen, was beim Scannen mehrerer URLs durchaus helfen kann.
nuclei -u $URL -list http_urls.txt
Filter
Nuclei unterstützt Filter, wie tags, severity, author
nuclei -u $URL -tags cve
Workflows
Nuclei kann Workflows abbilden, d.h. es könnten z.B. Templates in einem Workflow gebündelt werden. Hier ein Beispiel:
id: workflow-example
info:
name: Test Workflow Template
author: pdteam
workflows:
- template: technologies/tech-detect.yaml
matchers:
- name: wordpress
subtemplates:
- template: cves/CVE-2019-6715.yaml
- template: cves/CVE-2019-9978.yaml
Auf solche Workflows können wiederum auch Filter angesetzt werden
nuclei -u $URL -w workflows/workflow-example.yaml -severity critical,high -list http_urls.txt
Rate Limits
Um die Anzahl der gleichzeitigen Zugriffe zu regulieren, können Rate Limits gesetzt werden.
- rate-limit Control the total number of request to send per seconds
- bulk-size Control the number of hosts to process in parallel for each template
- c Control the number of templates to process in parallel
Custom Header
Es kann notwendig sein, einen eigenen Header zu setzen. Gerade bei BugBounty Programmen oder um euch als Pentester erkennen zu geben. Dazu kann die "/home/user/.config/nuclei/config.yaml" angepasst werden:
# Headers to include with each request.
header:
- 'X-BugBounty-Hacker: h1/geekboy'
- 'User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) / nuclei'
Wer dies ad hoc via CLI erledigen möchte, der muss nur "Header" in der Befehlskette verwenden.
nuclei -header 'User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) / nuclei' -list urls.txt -tags cves
Hier endet auch schon der Schnelleinstieg in Nuclei. Ich hoffe, ihr habt einen schnellen Einblick bekommen, was mit dem Scanner möglich ist und warum die vorhandenen Vorlagen und Einstellmöglichkeiten Nuclei momentan zu einem sehr beliebten Tool machen.
Weitere Tipps findet ihr direkt auf Github oder beim Template Guide
Viel Erfolg beim Testen der eigenen Webseite, Apps, Sockets.