Nuclei, Project Discovery tarafından geliştirilen, YAML tabanlı şablonlar kullanarak hızlı, özelleştirilebilir ve yüksek doğrulukta zafiyet taramaları yapmanıza olanak tanıyan açık kaynaklı bir tarama motorudur . Gerçek dünya koşullarını taklit eden özel zafiyet tespit senaryoları tasarlamanıza olanak tanıyarak sıfır hatalı pozitif sonuç sağlamayı hedefler .
Nuclei'nin Avantajları:
Kurulum Komutu:
bash
go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest
Şablonları Güncelleme:
Nuclei'nin en güncel şablonlara sahip olması için aşağıdaki komutu çalıştırın:
bash
nuclei -update-templates
bash
nuclei -u https://hedef.com
bash
nuclei -l hedefler.txt
bash
nuclei -u https://hedef.com -t cves/CVE-2021-44228.yaml
nuclei -u https://hedef.com -t /path/to/your-template.yaml
nuclei -u https://hedef.com -severity critical,high
nuclei -u https://hedef.com -tags cve,rce
nuclei -u https://hedef.com -nt
bash
nuclei -tl
Etiket veya ciddiyet ile filtreleyerek listeleyebilirsiniz:
bash
nuclei -tags cve -severity critical,high -tl
bash
nuclei -u https://hedef.com -markdown-export ./
-include-rr parametresi ile istek ve yanıtları rapora dahil edebilirsiniz .
yaml
id: example-template # Benzersiz kimlik
info:
name: Example Vulnerability Check
author: Your Name
severity: medium
description: This template checks for an example vulnerability.
tags: example,misc
requests:
- method: GET
path:
- "{{BaseURL}}/vulnerable-path"
matchers:
- type: word
words:
- "vulnerable string"
Örnek: WordPress Brute Force (Koşullu Çalıştırma)
Bu örnekte, hedefin WordPress olup olmadığı kontrol edilir (http(1)); eğer öyleyse brute force işlemi başlatılır (http(2)).
yaml
id: wordpress-bruteforce
info:
name: WordPress Login Bruteforce
severity: high
flow: http(1) && http(2)
http:
- method: GET
path:
- "{{BaseURL}}/wp-login.php"
matchers:
- type: word
words:
- "WordPress"
- method: POST
path:
- "{{BaseURL}}/wp-login.php"
body: |
log={{username}}&pwd={{password}}&wp-submit=Log+In
clusterbomb
payloads:
users: helpers/wordlists/wp-users.txt
passwords: helpers/wordlists/wp-passwords.txt
matchers:
- type: dsl
dsl:
- status_code == 302
- contains_all(header, "/wp-admin","wordpress_logged_in")
condition: and
# Log4j zafiyeti (CVE-2021-44228) için tarama
nuclei -u https://hedef.com -t cves/CVE-2021-44228.yaml
# Backup dosyalarını tespit eden özel şablon
nuclei -u https://hedef.com -t backup-file-finder.yaml
# Bir alt ağı tarama
nuclei -target 192.168.1.0/24
Nuclei Nedir ve Neden Kullanılır?
Nuclei, web uygulamaları, altyapı, bulut ortamları ve ağlardaki güvenlik açıklarını, yanlış yapılandırmaları ve açıkta kalan servisleri tespit etmek için kullanılır . nuclei-templates deposu, binlerce topluluk katkılı şablon içerir ve bu sayede güncel zafiyetlere karşı hızlıca tarama yapabilirsiniz.Nuclei'nin Avantajları:
- Hızlı ve Paralel: Ultra hızlı paralel tarama işleme ve istek kümeleme desteği .
- Esnek ve Özelleştirilebilir: YAML tabanlı şablonlar sayesinde kendi test senaryolarınızı kolayca oluşturabilirsiniz .
- Çoklu Protokol Desteği: HTTP, DNS, TCP, SSL, WHOIS, JavaScript ve daha fazlasını destekler .
- CI/CD Entegrasyonu: Güvenlik açığı tespiti ve regresyon testi için CI/CD hatlarına entegre edilebilir .
Nuclei Kurulumu
Nuclei, Go programlama dili ile yazılmıştır. Kurulum için Go'nun (sürüm >= 1.21) sisteminizde yüklü olması gerekir .Kurulum Komutu:
bash
go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest
Şablonları Güncelleme:
Nuclei'nin en güncel şablonlara sahip olması için aşağıdaki komutu çalıştırın:
bash
nuclei -update-templates
Temel Kullanım Komutları
1. Tek Hedef Tarama
Bir web uygulamasında hızlı bir tarama yapmak için:bash
nuclei -u https://hedef.com
2. Dosyadan Hedef Listesi ile Tarama
Birden fazla hedefi -l parametresi ile tarayabilirsiniz:bash
nuclei -l hedefler.txt
3. Belirli Bir Şablon ile Tarama
Özel bir şablon veya belirli bir CVE şablonu kullanmak için:bash
nuclei -u https://hedef.com -t cves/CVE-2021-44228.yaml
nuclei -u https://hedef.com -t /path/to/your-template.yaml
4. Şablonları Filtreleme
- Ciddiyet (Severity) ile Filtreleme:
nuclei -u https://hedef.com -severity critical,high
- Etiket (Tag) ile Filtreleme:
nuclei -u https://hedef.com -tags cve,rce
- Yeni Şablonları Çalıştırma:
Sadece en son güncellemede eklenen yeni şablonları çalıştırmak için:
nuclei -u https://hedef.com -nt
5. Tüm Şablonları Listeleme
Mevcut tüm şablonları listelemek için:bash
nuclei -tl
Etiket veya ciddiyet ile filtreleyerek listeleyebilirsiniz:
bash
nuclei -tags cve -severity critical,high -tl
6. Raporlama
Tarama sonuçlarını Markdown formatında raporlamak için:bash
nuclei -u https://hedef.com -markdown-export ./
-include-rr parametresi ile istek ve yanıtları rapora dahil edebilirsiniz .
Şablon Yapısı (Template Structure)
Nuclei şablonları YAML formatında yazılır. Temel bir şablon aşağıdaki gibi yapılandırılır:yaml
id: example-template # Benzersiz kimlik
info:
name: Example Vulnerability Check
author: Your Name
severity: medium
description: This template checks for an example vulnerability.
tags: example,misc
requests:
- method: GET
path:
- "{{BaseURL}}/vulnerable-path"
matchers:
- type: word
words:
- "vulnerable string"
Şablon Bileşenleri:
- id: Şablonun benzersiz kimliği .
- info: Şablon hakkında meta veriler (name, author, severity, description, tags) .
- requests: Yapılacak HTTP istekleri (method, path, headers, body) .
- matchers: Yanıtın değerlendirilmesi için kullanılan koşullar (word, status, regex) .
- extractors: (İsteğe bağlı) Yanıttan belirli bilgileri çıkarmak için kullanılır .
Gelişmiş Özellikler (v3 ve Sonrası)
1. Flow (Akış) Motoru
Nuclei v3 ile gelen Flow özelliği, JavaScript (ECMAScript 5.1) kullanarak şablonlara koşullu mantık eklemenize ve istekleri orkestre etmenize olanak tanır .Örnek: WordPress Brute Force (Koşullu Çalıştırma)
Bu örnekte, hedefin WordPress olup olmadığı kontrol edilir (http(1)); eğer öyleyse brute force işlemi başlatılır (http(2)).
yaml
id: wordpress-bruteforce
info:
name: WordPress Login Bruteforce
severity: high
flow: http(1) && http(2)
http:
- method: GET
path:
- "{{BaseURL}}/wp-login.php"
matchers:
- type: word
words:
- "WordPress"
- method: POST
path:
- "{{BaseURL}}/wp-login.php"
body: |
log={{username}}&pwd={{password}}&wp-submit=Log+In
clusterbombpayloads:
users: helpers/wordlists/wp-users.txt
passwords: helpers/wordlists/wp-passwords.txt
matchers:
- type: dsl
dsl:
- status_code == 302
- contains_all(header, "/wp-admin","wordpress_logged_in")
condition: and
2. Authenticated Scanning (Kimlik Doğrulamalı Tarama)
Nuclei v3.2 ile gelen bu özellik, kimlik doğrulaması gerektiren hedefleri taramanıza olanak tanır. secrets.yaml dosyası üzerinden kimlik bilgileri sağlanabilir .3. Gelişmiş Fuzzing Desteği
Nuclei v3.2, Header, Cookie, Path ve Body (JSON, XML, Form) gibi çeşitli bileşenler üzerinde fuzzing yapmanıza olanak tanır. Bu sayede bilinmeyen veya henüz keşfedilmemiş zafiyetleri tespit edebilirsiniz .Nuclei Kullanımında Dikkat Edilecek Noktalar
- Yasal ve Etik Kullanım: Taramaları yalnızca izniniz olan sistemler üzerinde gerçekleştirin .
- Rate Limiting: Hedef sistemi zorlamamak için -rl (rate-limit) parametresi ile istek hızını sınırlandırın .
- Özel Şablonlar: Topluluk şablonlarına ek olarak, hedefe özel şablonlar geliştirmek, benzersiz zafiyetleri tespit etmede kritik öneme sahiptir .
- Doğrulama: Nuclei'nin YAML şablonlarını çalıştırmadan önce -validate bayrağı ile doğrulayın .
Nuclei Kullanım Senaryoları (Pratik Örnekler)
1. CVE Taraması
bash# Log4j zafiyeti (CVE-2021-44228) için tarama
nuclei -u https://hedef.com -t cves/CVE-2021-44228.yaml
2. Backup Dosyası Keşfi
bash# Backup dosyalarını tespit eden özel şablon
nuclei -u https://hedef.com -t backup-file-finder.yaml
3. Ağ Taraması
bash# Bir alt ağı tarama
nuclei -target 192.168.1.0/24
4. CI/CD Pipeline Entegrasyonu
Nuclei, sürekli entegrasyon süreçlerine entegre edilerek her yeni dağıtımda güvenlik testlerinin otomatik olarak çalıştırılmasını sağlar .
🔒 Bu içeriği görmek için giriş yapın