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. 

Ahmet Buğra Demirel |

28.08.2023

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.

 

Nuclei ile Otomatize  Zafiyet Taraması 

 

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 ile Otomatize  Zafiyet Taraması 

 

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 ile Otomatize  Zafiyet Taraması 

 

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.

 

Nuclei ile Otomatize  Zafiyet Taraması 

 

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.

 

Nuclei ile Otomatize  Zafiyet Taraması 

 

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.

 

Nuclei ile Otomatize  Zafiyet Taraması 

 

  • 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 ile Otomatize  Zafiyet Taraması 

 

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. 

 

Nuclei ile Otomatize  Zafiyet Taraması 

 

Şablon oluşturulduktan sonra komut satırı alanı doldurulur, böyle şablon hemen test edilebilir.

 

Nuclei ile Otomatize  Zafiyet Taraması