Bilgi Güvenliği
Nuclei ile Otomatize Zafiyet Taraması
Nuclei, web uygulama güvenlik açıklarını otomatik olarak tespit etmemize olanak sağlayan bir güvenlik aracıdır. Go programlama dili kullanılarak yazılmıştır. Nuclei, özelleştirilmiş tarama işlemleri yapmamıza olanak sağlar.
Varsayılan olarak 80 ve 443 portları taranır, ancak farklı bir port numarası belirleyerek tarama işlemleri yapabiliriz. Tarama işlemleri sırasında proxy kullanarak gerçek IP adresimizi gizleyebilir ve anonim bir şekilde tarama işlemlerimize devam edebiliriz. Nuclei taraması gerçekleştireceğimiz zaman sadece belirli bir hedefi ya da tarama yapılacak hedeflerin olduğu dosyayı belirterek tarama işlemleri yapabiliriz.
Nedir Nuclei Şablonları ve nasıl kullanılır ?
Nuclei şablonları, tarama işlemleri esnasında kullanılan önceden tanımlanmış konfigürasyon dosyalarıdır. Bu dosyalarda güncelleme ve düzenleme işlemleri yapılabilmektedir. Nuclei, şablonları varsayılan olarak YAML formatında kullanmaktadır.
Nuclei için en çok kullanılan şablonlar:
Exposed-panels: Web uygulamalarının açık kalan yönetim panellerinin tespit edilmesi için kullanılmaktadır. Bu arayüzlerde zayıf authentication işlemlerinin tespit edilmesi sonucunda yönetim panellerine yetkisiz erişim sağlanmaktadır.
Vulnerabilities: Web uygulamalarında yaygın olarak bulunan güvenlik açıklarını tespit etmek için kullanılan bir şablondur. Bu şablon, birçok farklı web uygulama zafiyetinin tespiti için kullanılmaktadır. Bu zafiyetler arasında SQL injection, RCE, XSS, LFI gibi birçok zafiyet türü yer almaktadır.
Security Misconfiguration: Web uygulamalarında yaygın olarak yapılan güvenlik yapılandırma hatalarını tespit etmek için kullanılan bir şablondur.
DNS Zone Transfer: Hedef web sitesinin DNS ayarlarını tespit etmek ve olası zafiyetleri tespit etmek için kullanılır.
Bu şablonlara ek olarak exposures, miscellaneous, default-logins, workflows gibi şablonlarıda barındırmaktadır.Bu şablonları incelemek için ~/.local/nuclei-templates dizininden mevcut bulunan şablonları görebilirsiniz.
Nuclei'nin Temel Parametreleri
1-Target : Tek bir hedefi içeren bir url ya da birden fazla hedef URL’leri barındıran bir dosyadan tarama işlemi gerçekleştirmemiz mümkündür.
Belirtilen bir url’in taranması işlemi gerçekleştirmek için örneğin aşağıdaki komutu çalıştırabiliriz.
Nuclei -target https://hackerone.com -t home/kali/.local/nuclei-templates
Belirlenen subdomain bulunduğu bir dosyayı referans alarak gerçekleşecek bir tarama işleminde -l parametre olarak verilerek tarama işlemi gerçekleştirilebilir.
2-Templates:Nucleis ile url’lerin taranması işleminde bir ve ya birden fazla şablonu kullanarak bir tarama işlemi için -t parametresini kullanılır. Bu işlem için aşağıdaki komutları çalıştırabiliriz.
Nuclei -target https://hackerone.com -t <şablon adı >
Burada tek bir şablon adı kullanabildiğimiz gibi birden çok şablon adını da referans olarak verip kullanabiliriz
Nuclei -l hackerone.txt nuclei-templates 🡪tüm şablonları alır
Nuclei -l hackerone.txt cves 🡪cves şablonunu alır
3-Verbose (-v):HTTP isteklerinin gönderildiği, hangi HTTP yanıtlarının alındığı, hangi payload'ların kullanıldığı ve benzeri detaylı bilgiler gösterilir.Bu parametre, nuclei aracının nasıl çalıştığını anlamak ve hata ayıklama yapmak için yararlı olabilir.
Nucleide kendi şablonumuzu nasıl oluştururuz ?
Nuclei şablonları oluşturmak için “YAML” formatında bir dosya oluşturulur.Bu şablon en az bir id, info, severity ve requests özelliğini içermelidir. Örneğin ahmetbugra-sql-injection adında bir yaml dosyasını oluşturalım.
- id: Şablonun kimliği.
- name: Şablonun adı.
- author: Şablonun yazarı.
- severity: Şablonun hedef uygulama üzerinde olası etkilerini belirten seviyesi.
- description: Şablonun amacını açıklayan bir açıklama.
- requests: Şablonun içindeki HTTP istekleri.
- name: İsteğin adı.
- method: İsteğin HTTP metodu.
- path: İsteğin hedef URL'si. Bu örnekte, bir SQL enjeksiyon açığı aramak için bir parametre ekleyerek URL manipüle edilmiştir.
- matchers: İsteğin cevabının içeriğini aramak için kullanılan matcher'lar. Bu örnekte, cevabın "You have an error in your SQL syntax" kelimesini içermesi beklenmektedir.
Örneğin aşağıdaki YAML dosyası, bir web uygulamasında mevcut olabilecek SQL enjeksiyonu açıklarını tespit etmek için Nuclei aracılığıyla kullanılan bir şablon listesidir. Bu şablon listesi, çeşitli SQL enjeksiyonu tekniklerini ve yöntemlerini içeren bir dizi farklı payloada sahiptir. Bu şekilde, bir web uygulamasının potansiyel SQL enjeksiyon açıklarını taramak ve bu açıkların olası etkilerini belirlemek için kullanılabilir.
Nuclei, özelleştirilebilir şablonları sayesinde hedef sisteme özgü test senaryoları oluşturmayı kolaylaştırır. Bu da, daha kapsamlı bir tarama yaparak güvenlik açıklarını tespit etmenizi ve aynı zamanda yanlış pozitif sonuçlar olasılığını en aza indirmenizi sağlar. BurpSuite ile otamatik olarak şablonlarda oluşturabiliriz. Örneğin, belirli bir URL'ye yaptığımız bir istek üzerinde seçtiğimiz bir kelime grubuyla zafiyet tespit edebiliriz. Eğer response'da beklenmeyen bir kelime grubu görürsek, örneğin bir SQL exception gibi, bu durumda SQL zafiyeti şüphesi oluşabilir.
Şablon oluşturulduktan sonra komut satırı alanı doldurulur, böyle şablon hemen test edilebilir.