MetaTwo CTF Write-Up
CTF linki: https://app.hackthebox.com/machines/MetaTwo
Hackthebox tarafından sağlanan ip üzerinde çalışan servisleri tespit etmek ve karşı makine hakkında fikir sahibi olmak için hedef makineyi tarıyoruz.
nmap -sV -sC 10.10.11.186
Karşı tarafın 21. portunda FTP servisi, 22. portunda SSH servisi, 80. portunda ise http servisi yani bir web sitesi çalıştığını görüyoruz. Ayrıca karşıda bir WordPress web sitesi olduğunu ve bu web sitesinin 5.6.2 sürümünü çalıştırdığını görüyoruz.
Bize verilen IP’yi tarayacımızda açtığımızda “http://metapress.htb/” web adresine yönlendirdiğini görüyoruz. Bizim elimizde bir IP adresi var fakat karşı tarafta bir domain çalışmakta bu IP adresini bilgisayarımızda domain adresine yönlendirmemiz gerekmekte. Bu sebeple “/etc/hosts” dosyasını düzenlememiz gerekiyor.
sudo nano /etc/host
Web sitesine girdiğimizde bu ekranla karşılaşıyoruz ve bu ekranda bir randevu sistemine yönlendiren bir link olduğunu görüyoruz
Bu randevu sistemi bir eklenti ile çalışmak zorunda, bu eklentinin sürümünü bularak bu sürümde herhangi bir zafiyet olup olmadığını öğreneceğiz.
Sitenin kaynak koduna bakarak eklenti sürümünü görebiliriz.
Bu sürümü internette aratarak zafiyet arıyoruz.
https://wpscan.com/vulnerability/388cd42d-b61a-42a4-8604-99b812db2357 CVE-2022-0739
Aratınca karşımıza bir SQL Injection zafiyeti çıkıyor. Ve CVE’sini internette aratarak bu zafiyeti sömüren bir python kodunu buluyoruz.
https://github.com/destr4ct/CVE-2022-0739
Bu python kodunu çalıştırmak için nonce bulmamız gerekiyor. Bunun için çalışan servisin yine kaynak kodunda “nonce” aratıyoruz.
Kodumuzu çalıştırıyoruz, admin ve manager kullanıcılarının SQL sunucsunda şifrelenmiş olarak depolanan hallerini elde ediyoruz. Bunları kullanmadan önce bruteforce yöntemi ile asıl şifreyi bulmamız gerekiyor.
Admin kullanıcısı için herhangi bir eşleşme bulamıyoruz fakat manager kullanıcısı için şifreyi bize kullandığımız araç veriyor.
Elde ettiğimiz şifre ve kullanıcı adını kullanarak sitedeki manager kullanıcısına giriş yapıyoruz.
Manager kullanıcısının sitede çok yetkisinin olmadığını görüyoruz. Ama siteye dosya yükleyebiliyoruz, en başta bulduğumuz wordpress sürümünün eski olduğu için zafiyetli olabileceğini düşenerek bu sürümle alakalı zafiyetleri internette aratıyoruz.
https://blog.wpsec.com/wordpress-xxe-in-media-library-cve-2021-29447/
Sitede verilen yönergeleri takip ederek evil.dtd ve payload.wav dosyalarını oluşturuyoruz. Daha sonra php sunucusu başlatıp wav dosyamızı karşı tarafa yüklüyoruz.
Elde ettiğimiz veri base64 formatında olduğu için decode ediyoruz.
Karşı tarafta dosya okuyabiliyoruz, o zaman wordpress web sitelerinin önemli bilgilerini tutan “wp-config” dosyasını okuyarak kayıtlı kullanıcıların giriş bilgilerini elde edebilriz.
Kodumuzu tekrar çalıştırıp decode ettiğmizde FTP sunucusu için giriş bilgilerini buluyoruz.
FTP sunucusna giriş yapıp içinde bilgiler barındırabilecek dosyayı kendi bilgisayarımıza indiriyoruz.
Bu dosyaya baktığımızda SSH giriş bilgileri elde ediyoruz.
Bilgileri kullanıp giriş yaptığımızda ilk flagimizi buluyoruz.
Daha sonra home klasörümüze baktığımızda .passpie isimli bir klasör buluyoruz. Passpie isimli bir şifre yöneticisi uygulamasının karşı tarafta kurulu olduğunu görüyoruz.
“.keys” dosyasındaki PGP anahtarını alıp bilgisayarımızda key adlı dosyaya kaydediyoruz.
Önce gpg2john adlı aracı kullanarak bu private keyi hash formatına çeviriyoruz. Ve john ile bruteforce yöntemiyle şifreyi elde ediyoruz.
Bu elde ettiğimiz şifre passpie’ın şifresi. Bu şifreyi kullanarak passpie’daki kayıtlı kullanıcı giriş bilgilerini elde ediyoruz. Sonra bu şifreyi kullanarak root kullanıcısına giriş yapıp root flagimizi alıyoruz.
Eren İşlek