Uzun zamandan sonra selamlar dostlar. Bu yazımda Hack The Box üzerinde bulunan OpenAdmin makinasının çözümüne değineceğim şimdiden iyi okumalar.
Makinamızın ip adresi 10.10.10.171. Şimdi gelin bir nmap taraması yapalım ardından makinanın açık portlarına ve bu portların üzerinde çalışan servislere bir göz atalım.
80 ve 22 portları açık olarak gözüküyor. İkisinin de üzerinde çalışan servisler güncel yani bir exploit bulamayız gelin 80 portunda yani webserverda ne varmış bakalım.
Apache’nin default web sayfası var. Ancak burada direk akla gelen bir şey var o da dizinleri dirb veya dirbuster ile taramak.
Dirbuster’ı çalıştırdık ve /ona/ diye bir dizin bulduk. Bu dizine girelim ve içeride ne var bakalım.
Evet ona dizininde çalışan bir yazılım var. Ancak gördüğünüz gibi versiyonu eski. Bundan faydalanabiliriz.
İnternette bu versiyonun bir exploitini bulduk. Tam istediğimiz gibi uzaktan kod yürütmemizi sağlıyor. Bu exploit sayesinde içeriye sızabiliriz. Ancak ben bu exploiti sh olarak çalıştırmak istemiyorum bunu bir python scriptine dönüştüreceğim. O scripte de buradan ulaşabilirsiniz.
Scriptimi çalıştırdım ardından “ls –la” komutumu yazdım ve sunucudaki dosyaları artık görebiliyorum. Gözüme direk config dosyaları çarpıyor. Biraz dizinleri gezeyim ve config dosyalarında neler varmış bakayım.
config dizininin altındaki config.inc.php dosyasını okudum ve dosyanın içerisindeki bir kısım dikkatimi çekti.
Bu satırda database_settings.inc.php adında bir dosya ve bu dosyanın hangi dizinde olduğunu görüyoruz. Şimdi gidip o dosyayı bulup okuyalım.
Şöyle bir şifre bulduk. Şimdi hatırlarsanız 22 portu yani ssh portu açıktı. Bu bulduğumuz şifre herhangi bir kullanıcıya ait olabilir ve bu şifreyle o kullanıcıya ssh ile bağlanabiliriz. Sistemdeki kullanıcıları görmek için “cat /etc/passwd” komutunu çalıştırıyoruz.
Sistemde root dışında iki adet kullanıcı var. Jimmy ve joanna kullanıcıları. Şimdi gelin ssh üzerinden bu kullanıcılara bulduğumuz şifre ile bağlanmayı deneyelim.
Şifre Jimmy adlı kullanıcıya aitmiş artık içeride Jimmy kullanıcısı olarak işlem yapabiliriz. Ancak aklıma şöyle bir şey geldi. Az önce scriptte dizinleri gezerken /var/www/ dizininin altında farklı klasörler de vardı. Onları incelemeye karar verdim.
/var/www/ dizininin altında html dizini dışında internal dizini de var. Ve içinde 3 adet dosya var. Şimdi bu dosyaların içini “cat” ile okuyorum.
main.php dosyasının içinde benim tam da aradığım şey var. Bir kullanıcıya ssh ile bağlanmak için o kullanıcının private key’ine ve passphrase key’ine sahip olmam yeterli. Benim bu dosyaya “curl” ile istek atmam gerekiyor. Ama burada şöyle bir durum var şimdi ben tarayıcıya http://10.10.10.171 yazdığımda /var/www/html dizininin altındakileri gösteriyor ancak bu dosya /var/www/internal dizininin altında. Bu noktada bilgi toplamaya devam etmemiz gerekiyor. Bakmamız gereken yer apache’nin config dosyalarının bulunduğu dizin. Bu dizinde /etc/apache2/sites-available/internal.conf dosyası bulunuyor onu okuyalım.
İnternal klasörüne erişimin yalnızca yerel olarak mümkün olduğunu görüyoruz. Yani yapmamız gereken işlem curl ile http://localhost:52846/main.php ye istek atmak.
Evet isteğimi attım ve hop joanna kullanıcısının private keyi artık bende. Ancak direk sadece private key ile bağlanamam. Bu private keyi kendi bilgisayarımda Masaüsatünde joanna_rsa dosyası olarak kaydediyorum. Şimdi joanna_rsa adlı dosyayı ssh2john.py scriptiyle hash haline çevirmem gerekiyor. Ardından da çevirdiğim hash’i “John the Ripper” ile bruteforce kullanarak kırmam gerekiyor. Hemen bu iki işlemi de yapıyorum.
Hash dosyamın içerisindeki şifrelemeyi rockyou.txt wordlistiyle kırdım. Ve sonuç olarak “bloodninjas” çıktısını aldım. İşte şimdi joanna kullanıcısına ssh ile bağlanabilirim. Hemen bağlantıyı gerçekleştirelim.
Bir kullanıcıya private key ile bağlanırken –i ile private keyin bulunduğu dosyayı vermelisiniz. Ardından sizden passphrase key ister ve bizim kırarak bulduğumuz “bloodninjas” burada passphrase keyimiz. Joanna kullanıcısına ssh ile bağlantımızı tamamladık hatta hemen user flagi de okuduk. OpenAdmin Own User aşamasını bitirdik. Şimdi bizim bu makinada root olmamız gerekiyor ancak nasıl? Hemen cevabı vereyim. İlk denememiz gereken şey sudo –l komutu. Hemen deneyelim.
“sudo –l” komutu bize “sudo” komutunu şifre istemeden nerelerde kullanabileceğimizi söyler. Burada gördüğümüz ise şu. Biz nano’yu /opt/priv dosyasını okumak için sudo ile çalıştırdığımızda bizden bir şifre istemeyeceğini söylüyor. Hemen deneyelim.
Evet dosyamızı “sudo /bin/nano /opt/priv” komutumuzla açtık. Bu dosyanın içi boş ancak bunun bir önemi yok şu an nanoyu root olarak açmış olduk yani istediğimiz her dosyayı rahatlıkla okuyabiliriz. Yetkimiz var.
Hemen “ctrl+r” tuş kombinasyonuyla farklı bir dosyayı nanodan çıkış yapmadan içeri aktarıyoruz. Bize lazım olan dosya /root/ dizininin altındaki root.txt dosyası ve dosyanın yolunu yazarak içeri aktarıyoruz.
Ve root flag’i de artık elimizde. OpenAdmin Own Root aşamasını da bitirmiş olduk ve artık OpenAdmin makinasına komple sızma işlemi bitmiş oldu.
Herkese iyi çalışmalar…