Herkese merhaba, bu hafta kurcalayacağımız HackTheBox makinesi LaCasaDePapel. 20 puanlık kolay düzeyde bir makine olup, değişik bir Netflix dizisi tema alınmış ve her tarafına farklı bir şehir ismi konularak oluşturulmuş. Manuel olarak gerçekleştirilmesi gereken çok fazla işlem olduğundan bazen can sıksa da, ciddi manada araştırma gerektirdi. Uzatmadan makineyi evirip çevirmeye başlayalım.

Dünyadaki en güzel şehir olan İstanbul çıkışlı IP adresimle, HackTheBox vpn bağlantımı kurup hızlı bir nmap taraması attım.

Dört portun açık olduğu bilgisi döndü. Şimdi bu portlarda hangi servisler varmış ikinci bir taramayla bu işi çözelim.

vsftpd 2.3.4 görünce duygulandım. Metasploitable-2, seni hepimiz seviyoruz.

Vsftpd 2.3.4 için bir metasploit modülü ve bir çok command execution exploiti bulunuyor. Exploitleri denediğimde başarılı bir sonuç alamadım, manuel olarak exploit etmek için araştırma yaptığımda ise enteresan bir hikayeyle karşılaştım.

Vsftpd 2.3.4 sürümünde aslında exploit edilecek bir zafiyet yokmuş, yazılımda enteresan bir arka kapı bırakılmış. Telnet ile ftp portuna bağlanırken kullanıcı bilgilerini giriliyor. Username olarak girdiğimiz kelimenin sonuna :)  eklediğimizde 6200 portu aniden açılıyor. Daha sonrasında bu porta da telnet veya netcat ile bağlanıldığında sunucuda komut çalıştırabileceğimiz bir shell içerisine düşüyoruz.

Bu bilgiyle kuşanıp makineye dalalım, ama önce şu 6200 portu harbiden kapalı mı, bizi mi kandırıyorlar nmap ile bi kontrol edelim.

6200 portu kapalı döndü, şimdi telnet ile ftp servisine bağlanalım.

Telnet ile 21 portuna bağlantı kurduğumuzda bizi vsftpd servisi karşıladı. Hemen kullanıcı adının sonuna :)  ekleyip 6200 portuna bakalım.

USER bilal:)
PASS parola

6200 portu arka kapının varlığından dolayı açıldı. Şimdi shell alabilmek için yapmamız gereken bu porta bağlanmak. nc 10.10.10.131 6200 komutuyla netcat aracını porta bağlanması için çalıştırabiliriz

Biz root shell beklerken karşımıza Psy Shell diye bir şey çıktı. Makineyi çözmeden önce hiç karşılaşmadığım bu shell, PHP tabanlı ve opensource bir uygulama. Ne yapacağımı gerçekten bilmediğim anlarda kullandığım çok kritik bir komut var, çaresizce yine onu kullandım. help

ls komutu tanıdık olduğundan mevzuyu anlamak için onu kullanmayı deneyebiliriz.

ls  dedikten sonra karşımıza $tokyo isimli bir değer geldi. Yardım sayfasında görüntülediğimiz gibi show $tokyo  diyerek içeriğini ekrana bastırdım.

$tokyo sınıfı içeriğinde bir ssl sertifikasının imzalanış öyküsüne rastladım. “Zaten php shell içerisindeyiz, belki gelir” diyerek file_get_contents('/home/nairobi/ca.key') kod parçasını komut olarak veriyorum.

 

Bunun sonucunda sertifikanın private key‘ini alabilmiş oldum.

Hızlıca diğer dizinleri gezip berlin kullanıcısının dizininde user.txt dosyasına rastladım. Fakat okumaya izin henüz yoktu.

ftp ile işim kalmayınca nmap çıktısına döndüm. 80 portu açık olduğu için tarayıcıdan makine IP adresini ziyaret edelim.

Karşıma OTP ile alakalı olduğunu düşündüğüm (çünkü sayfa bağırıyor) bir sayfa çıktı. Çok vakit kaybettim çok… Uğraştım uğraştım ama OTP’yi bu sayfaya bir türlü kabul ettiremedim. Demek ki rabbit-hole, geçelim 443’e.

Bu sefer de karşımıza sertifika hatası veren bir sayfa çıktı. Elimizde de sertifika için private key dosyası olduğu için bi SSL sertifikası oluşturalım.

PKCS12 formatında bir sertifika üretebilmek için önce ca.key dosyasını kullanarak .pem dosyası üretmemiz gerekmektedir. Bunun için openssl uygulamasında openssl req -new -x509 -days 365 -key ca.key -out ca.pem  komutunu kullanabiliriz. Konu hakkında faydalandığım sayfalardan ilki için buraya, diğeri için de şuraya tıklayabilirsiniz. Verdiğim referanslardan özellikle Gökhan Kesici’nin yazısı bu konu için güzel bir cheat sheet olmuş.

pem formatındaki anahtarı da elde ettikten sonra eldeki verileri PKSCS12 formatında bir sertifika üretmek için birleştirebiliriz. openssl pkcs12 -export -out sertifikamız -in ca.pem -inkey ca.key komutuyla geçerli bir sertifika üretmeyi deneyelim.

Çıkan parola isteklerini de boş bırakmanın ardından pkcs12 formatında bir sertifika sahibi olmuş olduk. Artık sıra geldi sertifikayı tarayıcıya import etmeye. BurpSuite kullanan herkesin en azından bir kez yaptığı bu işlemde bu sefer sertifikayı, sertifika yöneticisinden kendi sertifikalarımızın olduğu bölüme import edeceğiz.

Ne kadar uğraşsam da home dizinim altında olan sertifikayı görüntüleyip seçemedim. Sertifikayı Desktop dizinime taşıdıktan sonra ne hikmetse seçebildim. Sebebini bilenler beni aydınlatabilirse sevinirim.

Şimdi sırada anasayfada F5 basmak var. Buyrun sertçe basalım.

Çok şükür, sonunda bitti sertifika eziyeti. Karşımıza Private Area başlığı altında dizinin iki sezonu çıktı. Pek kararsız kalmadan 1. Sezona tıkladım.

Karşıma bu sefer de dizinin bölümleri çıktı. Diziyi bize kesin izletecek diye düşünüp en azından ilk bölümden başlamak için 1. bölümü seçtim.

Birinci bölüm inmeye başlarken dikkatimi URL çekti. /file dizininden sonra gelen text bana base64 gibi geldi. Hemen bir test edelim bakalım neymiş.

Evet tahmin ettiğim gibi URL, base64 biçiminde SEASON-1/01.avi çıktı. SEASON-1 dizini altındaki dosyaya erişmesi burada LFI zafiyeti çıkabileceğini düşündürdü.

Önce ana sayfada bu zafiyetin varlığını test ettim. Dizin olarak ../../../  verdim ki zaten verilen dizinler burada direkt listeleniyor.

Ve kök dizin listelendi. Hızlıca user.txt dosyasını aramaya başladım. Bunun için ../  ile bir dizin yukarıyı listelemem yetti.

Bu bölümden sadece dizinler listelenebildiği için, dosyayı videoların indiği yerden base64 cinsinde full path vererek okuyabileceğim. Aynı zamanda user.txt okuduktan sonra .ssh klasöründen de bi yolluk alabilirim.

Öncelikle ../user.txt dizinini base64 olarak encode ediyoruz.

Gelen bu metini URL’de file kısmından sonra yapıştırıyoruz.

Dosya içeriğini görmeden inanmam.

LFI ile gayet kolay bir şekilde user.txt dosyasını alabildik. Şimdi sırada .ssh klasörü var. Bi bakalım önce içinde private key dosyası var mı diye.

Çok iyi. Hemen dizini base64 ile encode edelim.

Şimdi anahtarı makinemize çekelim.

Sıra geldi private key’i kullanarak ssh girişi yapmaya. ssh -i id_rsa berlin@10.10.10.131  diyerek giriş yapmayı deneyelim.

Maalesef berlin kullanıcısı ile giriş yapamadık. Psy Shell ile kullanıcıları görüntüleyebiliyorduk, bu yüzden tekrardan ftp’yi exploit edip kullanıcıları listeleyelim.

Kullancıları tek tek deneyerek en sona kadar geldim.

professor kullanıcısı ile login olabildim.

Dizini listelediğimde 2 dosya ve bir klasöre rastladım. Öncelikle ilk dosya olan memcached.ini dosyasını ekrana bastırıyorum.

Dosya içeriğinde çalıştırılacak bir komut olduğunu görünce bunun planlanmış otomatik bir işlem olabileceğini düşündüm. Hemen dosya izinlerini görüntüledim.

Dosyaya yazma iznimiz yok fakat dosyanın ismini değiştirip yerine kendimiz bir komut yazmayı deneyebiliriz. Kontrol ettiğimde buna iznimiz vardı ve eski dosyayı kenarda_dursun ismiyle ayırdım ve yerine kendi memcached.ini dosyamı yazmaya başladım.

Bunun için önce bana reverse shell verecek bir script bulmam gerekliydi. Çok aramadım, pentestmonkey.net ilk baktığım yer her zaman.

Bash ile yazılan bu scripti, command olarak memcached.ini dosyasına yazıyorum. Bunun için vi memcached.ini  komutuyla yeni bir dosya oluşturup editörümü açıyorum.

yazdığım dosyayı kaydedip netcat ile dinlemeye başlıyorum.

Yaklaşık 5 saniye sonra root yetkilerinde shell düşüyor.

Hemen root.txt okuyarak bu makinenin de amel defterini kapatıyorum.

Okuduğunuz için teşekkürler. Sorularınız için bilalkan.com/contact

https://www.linkedin.com/posts/muhammed-bilal-kan_lacasadepapel-writeup-hack-the-box-activity-6561143977494487040-4PVb

Tags: