PriviaHub Cumhuriyet Makinesi Çözümü

Bu yazıda PriviaHub platformunda bulunan ve emekliye ayrılan “CUMHURİYET” adlı makinenin çözüm adımları anlatılmaktadır.

İlk olarak makinede bulunan açık portların ve açık portlar üzerinde çalışan güncel servislerin tespit edilmesi için tarama başlatılmıştır.

Yapılan tarama işlemi sonucunda 80 ve 443 numaralı portların açık olduğu, bu portlar üzerinde “Apache 2.4.38” servisinin çalıştığı tespit edilmiştir.

PriviaHub Cumhuriyet Makinesi Çözümü
Şekil 1- Tarama Sonuçları

Açık olan 80 numaralı port üzerinden web tarayıcısı ile Apache servisi üzerinde çalışan web uygulamasına erişim sağlanmıştır.

PriviaHub Cumhuriyet Makinesi Çözümü
Şekil 2- Web Uygulaması

Erişim sağlandığında kullanıcı giriş sayfası ile karşılaşılmaktadır. Sisteme giriş yapabilmek için kullanıcı kaydı oluşturulmalıdır. Bunun için “Create An Account” ile belirtilen linke tıklanarak kayıt sayfasına erişim sağlanmıştır ve kullanıcı kaydı oluşturulmuştur.

PriviaHub Cumhuriyet Makinesi Çözümü
Şekil 3- Kullanıcı Kaydı

Kayıt işlemi tamamlandıktan sonra giriş sayfasından kullanıcı paneline erişim sağlanmıştır.

PriviaHub Cumhuriyet Makinesi Çözümü
Şekil 4- Kullanıcı Girişi

Giriş yapıldıktan sonra kullanıcı paneli üzerinde bulunan “account.php” adlı sayfaya erişim sağlanmaştır. Bu sayfa, kullanıcıların parola değişikliği yapmalarını sağlamaktadır.

PriviaHub Cumhuriyet Makinesi Çözümü
Şekil 5- Parola Değişikliği

Parola değişikliği esnasında, “Change Password” butonuna tıklandığı sırada giden istek verilerine müdahele etmek amacıyla yerel bir proxy uygulaması başlatılmıştır. Metin kutularına yeni parola değeri girilip butona tıklandıktan sonra, proxy uygulamasına gelen istek verileri arasında bulunan user_id parametresi dikkat çekmektedir.

PriviaHub Cumhuriyet Makinesi Çözümü
Şekil 6-Proxy Uygulamasına Gelen İstek

Bu parametreye atanmış olan “2” değeri, sisteme giriş yapılan kullanıcıya ait ID değerini belirtmektedir. Bu ID değeri değiştirildiğinde, yeni atanan değer farklı bir kullanıcıya ait ID değeri ise bu durumda istek gönderildiğinde o kullanıcının parolası değişecektir. Bu güvenlik açığı IDOR (Insecure Direct Object Reference) olarak adlandırılmaktadır. “user_id” değerine 1 değeri atanmıştır ve istek gönderilmiştir.

PriviaHub Cumhuriyet Makinesi Çözümü
Şekil 7- Parametreye Yeni Değer Atanması

İstek gönderildikten sonra parolası değişen kullanıcıya ait panele erişim sağlanması için kullanıcı adının bilinmesi gerekmektedir. ID değeri “1” olarak atandığı için bu hesabın bir “admin” hesabı olabileceği çıkarımı yapılabilir. Giriş sayfasında ise e-posta adresi istenildiği için 1 ID değerine sahip hesabın e-posta adresinin “admin@privpasstore.com” veya “admin@privpasstore.local” olabileceğine dair bir çıkarım yapılabilir. Bu e-posta adresi ile birlikte yeni parola değeri metin kutularına girilerek panele erişim denemesi yapılmıştır.

PriviaHub Cumhuriyet Makinesi Çözümü
Şekil 8-Yönetici Girişi

Girilen bilgilerin doğru olması sonucunda yönetici paneline erişim sağlanmıştır.

PriviaHub Cumhuriyet Makinesi Çözümü
Şekil 9- Yönetici Paneli

Panel üzerinde, sisteme yeni bir sayfa eklemek amacıyla kullanılabilecek bir web sayfası bulunmaktadır. Bu sayfa üzerinde bulunan ilk metin kutusu yeni oluşturulacak olan PHP dosyasının adını, diğer metin kutusu ise bu dosya içerisine yerleşecek olan PHP kodlarını temsil etmektedir. Dolayısıyla makine üzerinde komut çalıştırmak amacıyla bir oturum bağlantısı sağlayan PHP kodlarının yer aldığı bir dosya oluşturulabilir.

PriviaHub Cumhuriyet Makinesi Çözümü
Şekil 10- PHP Dosyası Oluşturma

Metin kutularına dosya adı ve oturum bağlantısı sağlayan PHP kodları girildikten sonra “reverse_shell.php” adlı bir sayfa oluşturulmuştur. Bu sayfaya erişim sağlandığında “Metasploit Framework” uygulaması üzerinde başlatılan dinleme modu isteği alacak ve makine üzerinden bir oturum bağlantısı sağlanacaktır. Sağlanan oturum üzerinden komutlar çalıştırabilmek için, sızma sonrası işlemlerin gerçekleştirilebilmesi amacıyla geliştirilmiş etkili bir araç olan “meterpreter“ uygulaması kullanılacaktır ve bu sayfaya yapılan erişim makine üzerinden bir meterpreter bağlantısı sağlayacaktır.

PriviaHub Cumhuriyet Makinesi Çözümü
Şekil 11- Oluşturulan Sayfaya Erişim

Sayfaya yapılan erişim sonucunda Metasploit uygulaması isteği almıştır ve meterpreter oturum bağlantısı elde edilmiştir.

PriviaHub Cumhuriyet Makinesi Çözümü
Şekil 12- Meterpreter Oturum Bağlantısı

Apache servisi makine üzerinde tanımlanan “web” adlı yerel kullanıcı hesabının yetkileriyle çalışmaktadır. Bu nedenle meterpreter oturumu “web” adlı kullanıcının hak ve yetkileriyle elde edilmiştir. Ancak PHP dosyası ile alınan bu oturum bağlantısı interaktif bir oturum sağlamamaktadır. Çünkü bu oturum Metasploit Framework uygulaması tarafından sunulan “php/meterpreter/reverse_tcp” adlı bir payload ile sunulmaktadır ve yapılabilecekler PHP programlama dilinin yetenekleri ile sınırlıdır. Bu nedenle Metasploit Framework üzerinde, meterpreter oturumu sağlayacak olan “.exe” uzantılı bir uygulama dosyası oluşturulmuştur ve “windows/meterpreter/reverse_tcp” adlı payload kullanılarak yeni bir dinleme modu başlatılmıştır. Yeni oluşturulan dosya elde edilen oturum üzerinden makineye yüklenerek yeniden çalıştırılmıştır. Böylece arkaplanda çalışan dinleme modu isteği yakalamış ve yeni bir meterpreter oturumu elde edilmiştir.

PriviaHub Cumhuriyet Makinesi Çözümü
Şekil 13- İnteraktif Meterpreter Oturum Bağlantısı

Meterpreter uygulaması üzerinden “web” adlı kullanıcının masaüstü dizinine erişilerek “non-privflag.txt” dosyası elde edilmiştir. Ancak “Administrator” hesabına ait masaüstü dizininde bulunan “privflag.txt” dosyası okunamamaktadır. Çünkü “web” kullanıcısı düşük yetkilere sahiptir. Bu nedenle privilege escalation (hak ve yetki yükseltme) işlemi yapılacaktır.

“web” kullanıcısının hak ve yetkileri incelendiğinde bu kullanıcının “Administrators” adlı gruba dahil olduğu görülmektedir.

PriviaHub Cumhuriyet Makinesi Çözümü
Şekil 14- Kullanıcı Bilgileri

Buradan anlaşıldığı üzere “web” kullanıcısı yönetici haklarına sahiptir, ancak Apache servisi UAC (User Access Control) koruması ile çalışmaktadır. Bu nedenle meterpreter bağlantısı düşük yetkilerle elde edilmiştir. Bundan sonra yapılacak işlem UAC mekanizmasını atlatmak ve “web” kullanıcısı ile yüksek yetkiler gerektiren işlemler yapabilmektir. UAC mekanizmasını atlatmak için “hfirefox” tarafından geliştirilen Akagi adlı araç kullanılabilir. Bu araç çeşitli UAC Bypass teknikleri içermektedir ve makinenin işletim sistemi ve Build numarasına göre uygun bir metot kullanılarak UAC mekanizması atlatılabilir. Akagi adlı aracı Github üzerinden indirilip derledikten sonra yapılması gereken işlem oluşan çalıştırılabilir dosyayı kurban makineye yüklemek ve bir argüman belirterek çalıştırmaktır.  Dolayısıyla Akagi aracı ile birlikte oluşturulmuş olan bir meterpreter zararlısı çalıştırılarak yüksek yetkiler ile yeni bir meterpreter oturum bağlantısı elde edilebilir.

PriviaHub Cumhuriyet Makinesi Çözümü
Şekil 15- Akagi

Makinenin işletim sistemi ve Build numarasına göre 10 numaralı teknik kullanılarak (teknikler Github sayfasında yazmaktadır) Akagi aracı daha önceden makineye yüklenmiş bir meterpreter zararlısı ile birlikte çalıştırılmıştır. Böylece yüksek yetkilerle yeni bir meterpreter oturumu elde edilmiştir.

PriviaHub Cumhuriyet Makinesi Çözümü
Şekil 16- Yüksek Yetkilerle Elde Edilmiş Meterpreter Oturumu