NahamStore CTF Çözümü: Web Güvenlik Açıklarıyla Bug Bounty Pratiği
Merhabalar, bu yazımda TryHackMe platformunda yer alan NahamStore makinesini çözme sürecimi detaylı bir şekilde paylaşacağım.
Bu makinenin çözümüne dair Türkçe kaynak bulunmadığı için, topluluğa fayda sağlamak amacıyla bu yazıyı hazırladım.
Yazımda, makinenin kurulumunu, çözüm sırasında izlediğim adımları ve karşılaştığım zorlukları detaylandırarak, makineyi çözmek isteyenlere yardımcı olmayı hedefliyorum.
Kuruluşların güvenlik açıklarını raporlayıp takdir ve tazminat kazanılabilecek programlara (Bug Bounty’lere) başlangıç yapmak isteyenler içinde güzel bir rehber olacağını düşünüyorum.
Çözümümüze başlamadan önce makinemiz hakkındaki bilgilere göz gezdiriyoruz.
Platform: TryHackMe
Oda: NahamStore
Zorluk Seviyesi: Orta Seviye
Makine Açıklaması: Bu odada, ödül avcılığının ve web uygulaması hacklemenin temellerini öğreneceksiniz.
Oluşturan: @nahamsec,(@nahamsec, yalnızca HackerOne platformu üzerinden 1.000.000$’dan fazla gelir elde etmiş çok başarılı bir siber güvenlik araştırmacısı. Videolarını ve eğitimlerini takip etmenizi kesinlikle öneririm.)
Bu makine üstünden XSS, XXE, SSRF, CSRF, RCE, IDOR, SQL Injection gibi birçok web güvenlik açığını sömürmeyi pratik edeceğiz.
Makineyi başlatıp bağlantıyı sağladıktan sonra zaafiyetleri istediğimiz sıralamada sömürmek mümkün olsa da, CyberKillChain metodolojisini takip etmek daha etkili olacaktır. İlk olarak Recon (Keşif) aşamasını tamamlayarak hedef hakkında bilgi toplayacağız. Bu aşamadan sonra, açıkları sömürmeye başlayabiliriz.
Bu hacklemeyi Kali Linux üstünde gerçekleştireceğim. Yazının çok uzamaması adına, kullanacağım araçların kurulumlarını göstermeyeceğim; basit bir araştırmayla bu araçları kurabilirsiniz.
- Bağlantı Aşaması:
Start Machine butonuna tıkladıktan sonra 1 dakika içinde
Target IP Address alanında hedef makinemizin IP adresi gözükecektir.
Bu adresten VPN bağlantısını gerçekleştirmek için konfigürasyon dosyasını indiriyoruz. İndirdiğimiz bu dosya (kullaniciadi.ovpn) olarak indirilecektir. Şimdi Terminali açıp aşağıdaki komutu yazıyoruz.
sudo openvpn kullaniciadi.ovpn
VPN bağlantısını sağladık şimdi ise hedef makinenin IP adresini ve nahamstore.thm alan adını /etc/hosts
içerisine eklememiz gerekiyor. Bunun için basit bir metin düzenleyecisi olan nano editörünü kullanacağız.
sudo nano /etc/hosts
Recon aşamasında bulacağımız subdomainleride (alt alan adlarını) bu dosya içerisine .com TDL’lerini (üst düzey alan adlarını) .thm ile değiştirerek eklememiz gerektiğini unutmayalım. Laboratuvar ortamında çözüm yaptığımız için bu işlem gerekmektedir. Gerçek ortamdaki hacklemelerde bu işleme ihtiyaç olmadığını hatırlatmak isterim.
Tarayıcımızdan http://nahamstore.thm adresini ziyaret ederek herhangi bir sorun var mı kontrol ediyoruz.
1— Recon Aşaması:
Bağlantımızı gerçekleştirdiğimize göre artık Recon aşamasına geçebiliriz. Soruların cevabını bulabilmek için öncelikle subdomain enumeration, brute force, content discovery ve fuzzing yaparak Recon aşamasını tamamlayacağız.
İlk sorumuzu Jimmy Jones adlı bir kullanıcının SSN’ini (Sosyal Güvenlik Numarasını) bularak cevaplandıracağız.
Subfinder aracını kullanarak subdomain taramasına başlıyoruz.
subfinder -d nahamstore.com -o naham_subdomains.txt
Subfinder, Go programlama dili kullanılarak yazılmış, açık kaynak kodlu bir subdomain tarama aracıdır.
-d : Hedef alan adını belirtiyoruz.
-o : Sonuçları bir dosyaya kaydediyoruz.
Tarama sonucunda 5 adet subdomain bulduk. Gerçek ortamda yapılan taramalarda ise yüzlerce, hatta binlerce subdomain ile karşılaşmak mümkündür. Bu nedenle, tüm sonuçları bir dosyaya kaydetmek, operasyonun takibi ve düzenli analizi için büyük önem taşır.
Öncelikle, alan adlarını yeniden sonu .thm olacak şekilde /etc/hosts
dosyasına ekliyoruz.
Çıktılara göz atmadan önce ffuf ile brute force (Kaba Kuvvet) saldırısı yaparak subfinder’ın tespit edemediği subdomainlerin olup olmadığına bakalım.
Wordlist (Kelime Listesi) için seclists
dosyasını indiriyoruz.
sudo apt install seclists
Bu komut ile ilk önce belirteceğimiz wordlistin pathini (dosya yolunu) buluyoruz. Bu makine için 5000.txt ile biten dosyayı kullanmak yeterli olacaktır.
locate seclists | grep subdomains
Ffuf aracını kullanarak brute force işlemine başlıyoruz.
ffuf -u http://nahamstore.thm -w /usr/share/seclists/Discovery/DNS/subdomains-
top1million-5000.txt -H "Host: FUZZ.nahamstore.thm"
ffuf (Fuzz Faster U Fool): Go dilinde yazılmış son derece verimli bir ağ fuzzing aracıdır. Web sunucusundaki alt alan adlarını ve dizinleri bulmada etkilidir, özellikle dizin ve dosya adlarını brute-forcing yaparak bulur.
-u : Hedef URL’i belirtiyoruz.
-w : Kullanılacak kelime listesinin yolunu belirtiyoruz
-H : Testin yapılacağa adrese FUZZ eklenerek nerede deneme yapılacağı belirtilir.
Birçok 200 OK yanıtı aldık, ancak bu sonuçları incelediğimizde, aslında neredeyse hepsinin false positive (yanıltıcı pozitif) olduğunu görebiliriz. Örneğin rr.nahamstore.thm
adresini /etc/hosts
dosyasına ekleyip sayfayı incelediğimizde, karşımıza bir hata sayfası çıkacaktır. Bu durum, söz konusu subdomainin gerçekten geçerli olmadığını gösterir.
Bu durumda komutumuza filtre parametreleri ekleyerek daha doğru bir sonuç elde edebiliriz. Bu filtrelemeyi, dönen status koduna veya
size-words-line miktarına göre uygulayarak false positive olan sonuçları elimine edebiliriz.
Bizim durumumuzda -fw (filter words) parametresi ile words filtrelemesi yapabiliriz.
ffuf -u http://nahamstore.thm -w /usr/share/seclists/Discovery/DNS/subdomains-
top1million-5000.txt -H "Host: FUZZ.nahamstore.thm" -fw 125
ffuf, Subfinder’dan farklı bir sonuç üretmedi, ancak gerçek testlerde tek bir aracın kullanımı yetersiz kalabilir. Subdomain keşfi gibi kapsamlı taramalarda, farklı araçların ve tekniklerin kombinasyonu daha doğru ve kapsamlı sonuçlar elde etmemizi sağlar.
naham_subdomains.txt dosyamızda bulunan alan adlarıyla çözümümüze devam edeceğiz. Dosyamızda 5 adet alan adı bulunduğundan, bunları manuel olarak kontrol edebiliriz. Ancak gerçek testlerde, bu alan adlarının sayısı yüzlerce hatta binlerce olabilir. Bu durumda manuel kontrol zaman alacak ve verimsiz olacaktır. Bu yüzden, süreci otomatikleştirmemiz gerekiyor.
Bu durumda httpx aracını kullanabiliriz.
(naham_subdomains.txt içerisindeki alan adlarının sonunda .thm olmasına dikkat ediyoruz)
cat naham_subdomains.txt | httpx -sc -title -o alive_subdomains.txt
httpx, URL’lerin erişilebilirliğini hızlı bir şekilde kontrol etmemizi sağlar ve çok sayıda alan adını test etmek için ideal bir araçtır. Bu sayede, sadece aktif olan alan adlarını hızla tespit edebiliriz.
-sc : Response kodunu gösterir (200,301,403,404,500).
-title : Sayfa başlığını gösterir.
-o : Çıktıyı dosyaya yazdırır.
httpx çıktısını manuel olarak kontrol etmek yerine aquatone, eyewitness gibi ekran görüntüleme araçları kullanabilirsiniz. Bu tür araçlar, her URL’in ekran görüntüsünü alarak toplu halde hızlıca gözden geçirmenizi sağlar ve farklı durumları daha kolay incelemenize yardımcı olur.
Şimdi tarama sonuçlarımız geldi ve bazı subdomainler 301 yönlendirmesi veya 403 erişim engeli gibi farklı sonuçlar döndü. Bu adresleri inceledikten sonra da Recon aşamasını tamamlamış olacağız.