[TR] Hack The Box — Devel Write-Up | Metasploit & Custom Exploitation
Herkese merhaba. Bu yazımda, Hack The Box platformunda bulunan Devel isimli makinenin çözümünü sizlerle paylaşıyor olacağım.
Öncelikle nmap taraması ile başlayalım:
Gördüğümüz üzere hedef üzerinde 21 numaralı FTP portu ve 80 numaralı HTTP portları açık. Ayrıca baktığımızda FTP servisine “anonymous” bir şekilde erişimin mümkün olduğunu görmekteyiz. Öncelikle FTP servisine bağlanıp burada neler olduğuna göz atalım:
İçeride “aspnet_client” adında bir directory, “iisstart.htm” adında bir sayfa ve “welcome.png” adında bir resim dosyası bulunmakta ve şuanda bulunmakta olduğumuz dizin en üst dizin olan “/” dizini. Öncelikle “iisstart.htm” ve “welcome.png” dosyalarını local sistemimize indirip sonrasında “aspnet_client” dizinini incelemeye başlayalım:
Şimdi dizini görüntülemeye çalışalım:
Burada en son olarak “2_0_50727” dizinine gidip içerideki dosyaları görüntülemeye çalıştığımızda, sunucudan “Data connection already open; Transfer starting.” isimli bir cevap alıyoruz. Sonrasında direkt olarak bu dizini ve içerisindeki dosyaları local sistemimize indirmeye çalıştığımızda bu dizin üzerinde yetkilerimizin olmadığını görmekteyiz:
FTP servisi üzerinde biraz enumeration işlemi yaptıktan sonra, şimdi 80 numaralı port üzerinde enumeration’a başlayabiliriz:
Sayfayı ziyaret ettiğimizde, web servisinde çalışan IIS7 uygulamasının varsayılan sayfasıyla karşılaşmaktayız. Sayfa kaynağını incelediğimizde de işe yarar bir bilgi elde edememekle beraber, dizin taraması gerçekleştirdiğimizde de az önce FTP servisi üzerinden elde ettiğimiz bilgiler dışında başka bir bilgi elde edememekteyiz:
FTP servisine tekrar dönüp biraz daha inceleme yaptığımızda, “anonymous” kullanıcı üzerinden servise dosya yükleme yetkimizin olduğunu görebiliriz:
Web servisi üzerinde az önce FTP servisine yüklemiş olduğumuz dosyayı görüntülemek istediğimizde de bu dosyanın içeriğini başarılı bir şekilde görüntüleyebilmekteyiz:
Buradan yapmamız gereken çıkarım, eğer biz FTP servisine reverse shell payload’u içeren zararlı bir kod yüklersek ve bu dizini web servisi üzerinden tetiklersek, sunucu üzerinden bir reverse shell elde edebiliriz. Web servisi üzerinde bulunan dosyalar “asp” türünde olduğu için, biz de bir “aspx” türünde bir payload oluşturalım:
w/Metasploit
Şimdi oluşturmuş olduğumuz zararlı kodu FTP servisi üzerinden sisteme yükleyelim:
Şimdi ise Metasploit Framework’de açılacak bağlantıyı sistemimizde karşılayacak “handler” olan “Multi Handler” modülünü başlatıp az önce oluşturduğumuz zararlı kod içerisinde kullanmış olduğumuz “windows/meterpreter/reverse_tcp” payload’unu bu modüle verelim:
Burada “LHOST” değerine sahip olduğumuz “tun0” değeri içerisindeki IP adresini veya direkt olarak tun0 değerinin kendisini verebiliriz, ikisi de HTB sunucularına bağlı olduğumuz IP adresini temsil etmektedir:
“run” komutu ile modülü çalıştıralım ve az önce FTP servisine aktarmış olduğumuz “rev.aspx” dosyasını web sunucusu üzerinden tetiklemeye çalışalım:
Gördüğümüz gibi, “rev.aspx” sayfasını ziyaret etmeye çalıştığımızda, az önce “run” komutu ile başlatmış olduğumuz listener’a bir bağlantı talebi geldi ve istediğimiz reverse shell’i elde ettik. “whoami” komutu çalıştırdığımızda ise “iis apppool\web” kullanıcısı üzerinde olduğumuzu gördük. User flag’i elde etmek için sistem üzerindeki kullanıcıları listeleyip düşük yetkili kullanıcı tespit etmeye çalışalım:
Buradan anlayabileceğimiz gibi, sistem üzerinde düşük yetkilere sahip olan ve bizim de erişmemiz gereken kullanıcının kullanıcı adı “babis”. Ancak bu kullanıcının dizinine erişmeye çalıştığımızda yeterli yetkilere sahip olmadığımızı görüyoruz:
Şimdi buradaki terminalde “exit” komutunu çalıştırıp meterpreter shell’e geri dönelim. Burada “background” komutunu çalıştırıp sahip olduğumuz session’ı arkaplana alalım ve sonrasında yetkilerimizi yükseltmek için bir Post Exploitation modülü olan Local Exploit Suggester modülünden faydalanalım:
“use /post/multi/recon/local_exploit_suggester” komutunu yazdıktan sonra, doğru exploitin bulunabilmesi için sahip olduğumuz session’ın içerisinde tarama yapılabilmesi adına az önce backgrounding işleminde de session numarasını görmüş olduğumuz “1” numarasını “set SESSION 1” olarak modül içerisine tanımlamamız gerekmektedir. Sonrasında çalıştıracağımız “run” veya “exploit” komutlarıyla sistem üzerinde tarama yapılacak ve eğer varsa yetkilerimizi yükseltmemize yarayacak exploitler alacağımız çıktıda listelenecek:
Gördüğümüz gibi yetki yükseltmemize yarayacak exploitler listelendi. Biz buradan “exploit/windows/local/ms10_015_kitrap0d” isimli exploiti seçeceğiz. Bunun için tekrar “use” komutu sonrasında exploitin adını yazmamız gerekmektedir:
Yine exploitin “options” kısmını görüntülediğimizde bazı ayarlamalar yapmamız gerektiğini görüyoruz. “Payload options” kısmında kullanmamız gereken payload’un doğru bir şekilde verildiğini, ancak “LHOST” kısmında sahip olduğumuz “tun0” IP adresi yerine local makinemizin bağlı olduğu “NAT Network”e ait IP adresinin bulunduğunu ve ayrıca “SESSION” kısmının da tanımlanmamış olduğunu görüyoruz. Gerekli ayarlamaları yapalım:
Ayarlamaları yapıp tekrar exploiti tekrar çalıştırdığımızda, ikinci bir meterpreter shell elde ettiğimizi görüyoruz ve bu sefer bir “getuid” komutu çalıştırdığımızda ise sistem üzerinde en yüksek yetkili kullanıcı olan “NT AUTHORITY\SYSTEM” kullanıcısının seviyesine yükseldiğimizi görüyoruz:
Buradan sonra hem user flag’i hem de root flag’i elde edebiliriz. Buraya kadar gidilmesi gereken yolu Metasploit Framework kullanarak gittiğimize göre, aynı yolu bir de MSF kullanmadan, Custom Exploitation yöntemi kullanarak gitmeye çalışalım.
w/Custom Exploitation
Yine FTP servisine zararlı bir kod yüklememiz gerekmektedir ancak bu sefer oluşturacağımız payload “windows/meterpreter/reverse_tcp” yerine “windows/shell_reverse_tcp” payload’unu içermelidir çünkü bu sefer listener olarak “Multi Handler” yerine “netcat” kullanacağız:
Oluşturmuş olduğumuz dosyayı tekrar FTP servisine yükleyelim, “netcat” listener’ımızı başlatalım ve “rev2.aspx” sayfasını tetikleyerek zararlı kodun çalışmasını sağlayalım:
Gördüğümüz gibi düşük yetkili kullanıcı üzerinden shell’i elde ettik. Şimdi yetkilerimizi yükseltmek için doğru bir exploit bulabilmek adına, öncelikle sahip olduğumuz sistemin özelliklerini görüntüleyelim ve buradan bazı bilgiler elde etmeye çalışalım:
“systeminfo” komutunu çalıştırdığımızda, “OS Version” ın karşısında “6.1.7600 N/A Build 7600” sürümünün yer aldığını görüyoruz. Bu bilgiyi Google’da aratarak bu sürüme ait bir exploit olup olmadığına göz atalım:
Görünüşe göre burada işimize yarayacak bir local privilege escalation exploiti var:
C dilinde yazılan bu exploit’i compile etmek için yorum satırı olarak bırakılmış nota göz attığımızda ise bu exploitin Kali üzerinde compilation aşamasında aşağıdaki komutun kullanılması gerektiği belirtilmiş:
Şimdi ise kodu compile edip bir HTTP sunucusu başlatarak hedef makineye aktarmaya çalışalım:
Oluşturulan “exp.exe” dosyasını hedef makineye indirmek için hedef makinede aşağıdaki powershell komutunu çalıştıralım:
Burada indireceğimiz dosyayı indirmek için seçtiğimiz dizinin “C:\Users\Public\Downloads” olmasının sebebi, herkes tarafından yazılabilen bir dizin olmasıdır. Şimdi indirmiş olduğumuz dosyayı çalıştıralım:
Gördüğümüz gibi, tekrar yetkilerimizi başarılı bir şekilde “NT AUTHORITY\SYSTEM” seviyesine yükselttik.
Bu makine ile ilgili sizlerle paylaşmak istediklerim bu kadardı. Yazımı okuduğunuz için teşekkür ederim.
Kaynaklar: