ZAFİYETLİ MAKİNE ÇÖZÜMÜ | GoldenEye:1

ZAFİYETLİ MAKİNE ÇÖZÜMÜ | GoldenEye:1

Merhabalar. Bu yazımda, VulnHub plartformunda bulunan “GoldenEye: 1” isimli zafiyetli makinenin çözümünü sizlere göstermeye çalışacağım. Çözüm biraz uzun olduğu için bazı basit ve temel işlemleri görsel olarak göstermeyeceğim, daha çok çözüm odaklı görseller ile anlatmaya çalışacağım.

Öncelikle netdiscover aracı ile hedef makinemizin ip adresini tespit edip Nmap taramamızı başlatıyoruz:

Nmap raporumuzda görüldüğü üzere 80 portunda HTTP servisi çalışmakta. Web üzerinden sunucuya bağlanmayı deneyebiliriz. Diğer servislere bakacak olursak SSL ve POP3 servisinin çalıştığını görüyoruz. POP3 servisi, mail protokollerinde kullanılan bir servis olduğunu biliyoruz. Bu zafiyette böyle bir servisin çalışması gidişat yolumuza biraz ışık tutuyor. İlk olarak IP adresini ziyaret ederek web sunucumuzu kontrol ediyoruz:

Web sunucumuzda en alt kısımda “oturum açmak için /sev/home/ konumuna gidin” şeklinde bir bilgi veriyor. Bu arada sitemize yönelik gizli url dizin taramasını da yaptım fakat değerli herhangi bir sonuç elde edemedim. Elimizde ki tek bilgi bize verilen dizin sayfası. Bu sebepten url kısmına /sev/home yazıp oturum açma paneline gidiyoruz:

 Bu kısımda ise herhangi bir kullanıcı adı ve şifre bilgisine sahip olmadığımız için site içerisinde biraz kurcalama yapıyoruz ve ilk bulunduğumuz sayfanın kaynak kodlarında bulunan “terminal.js” kodlarına girdiğimizde bazı bilgiler ile karşılıyoruz:

Burada bizim için bırakılmış bazı yorum satırları var. Boris ve Natalya adında iki kullanıcı olabileceğini düşünüyoruz ve alt kısımlara doğru bize şifreyi encoded şekilde verdiğini söylüyor. Aldığımız bu kodu decode etmeye çalışacağız. Bunun için Google üzerinden online decoder sitelerinde şifreyi çözmeye çalıştım fakat başarılı olamadım. Kodu çözmek için BurpSuit aracımızın decoder etme özelliğini kullanıyoruz. “HTML” ile şifrelenmiş kodumuzu bu şekilde çözmüş oluyoruz:

Oturum açma panelimize “/sev/home” geri dönüp kullanıcı adı şifre denemesi yapıyoruz. Kullanıcı adı olarak Boris ve Natalya isimlerini deniyoruz. Biraz uğraştıktan sonra küçük harflerle yazılmış “boris” isminin kullanıcı adını olduğunu bulup elde ettiğimiz şifre ile panelimize giriş yapıyoruz:

Panelimizde bize yine bazı bilgiler verilmekte. Buradaki bilgi ile bize POP3 servisinden bahsediliyor. Panelimizi biraz kurcaladıktan sonra bu bilgi haricinde bir şey elde edemiyoruz. Elimizdeki tek bilgi olan POP3 servisini NETCAT aracımız ile dinlemeye başlıyoruz. Komutumuzu yazdığımız anda bizi direkt olarak POP3 sunucuna yönlendiriyor. POP3 sunucusunda yazılacak komutları Google aracılığı ile bulabilirsiniz, bende öyle yaptım. İlk başlarda girdiğimiz boris kullanıcı adı ve şifremizle giriş demesi yapıyoruz. Kullanıcı adımızı kabul ediyor fakat parolayı kabul etmediğini görüyoruz:

Aynı şekilde Natalya isimli kullanıcımızda da aynı işlemleri yapıyoruz fakat yine parola kısmını sunucumuz kabul etmiyor. Bu kısımda elimizdeki iki adet kullanıcı ismimizi (boris,natalya) kullanarak bir BRUTE FORCE saldırısı yapmaya başlıyoruz. Brute force yapmak için HYDRA isimli aracımızı ve wordlist olarak da Kali makinemizde hazır bulunan wordlistleri kullanıyoruz:

Brute force saldırımız sonucunda “boris” isimli kullanıcımızın parolasını elde ediyoruz. Fakat bulduktan hemen sonra aracımız hata verdiği için “natalya” isimli kullanıcımıza özel yeni bir saldırıyı tekrar başlatıyoruz. Bu sefer “natalya” isimli kullanıcımızın da parola bilgisini elde etmiş oluyoruz:

Elde ettiğimiz bilgilerle POP3 sunucusuna giriş yapıyoruz. Bu kısımda gelen mesajları okumaya başlıyoruz. Boris isimli kullanıcımızın mesajlarından herhangi bir bilgi elde edemiyoruz:

Natalya isimli kullanıcımızın mesajlarını okuyunca kullanıcı adı, parola ve web sunucusu ile alakalı bazı bilgilere ulaşıyoruz:

Okuduğumuz mesajın en alt kısmında IP yönlendirmesi yapmamız gerektiğini söylüyor. /etc/hosts ayarlarını bizden istediği şekilde yapılandırıp kaydediyoruz:

Ayarlarımızı yaptıktan sonra bize verilen web adresine gidiyoruz. Web adresimizde bulunan login kısmından pop3 mesajlarından elde ettiğimiz kullanıcı adı ve şifre ile giriş yapıyoruz:

 Panelimizde biraz geziniyoruz. Kaynak kodları ve url dizinleri ile alakalı bir şey elde edemiyoruz. Tek dikkatimizi çeken kısım mesajlar kısmında “Dr Doak” isimli bir kullanıcının olduğunu anlamamız oluyor. Netcat ile bağlandığımız pop3 sunucumuzda user kısmına doak yazıp böyle bir kullanıcının olduğunu öğrenmiş oluyoruz. Bu bilgiden sonra “doak” isimli kullanıcımıza yine bir brute force saldırısı yapıp parolasını bulmaya çalışıyoruz:

Brute force saldırımız sonucunda “doak” isimli kullanıcımızın da POP3 sunucusu parolasını bu şekilde elde etmiş oluyoruz. POP3 sunucumuza giriş yaptıktan sonra mesajlar kısmını kontrol ediyoruz ve yine en alt kısımda bize kullanıcı adı ve parola bilgisini verdiğini görüyoruz:

 Web sitemize dönerek “xenia” isimli profilimizden logout oluyoruz ve “goak” kullanıcımıza ait elde ettiğimiz bilgiler ile tekrardan login oluyoruz. “Dr Doak” isimli profilimizde yine gezinme işlemlerini yapıyoruz. Bu sefer sistemde bir adet “s3cret.txt” dosyasının olduğunu fark ediyoruz. Dosyamızı indirip okuduğumuzda ise bize bazı bilgiler veriyor:

 Elde etmiş olduğumuz bu dosyada bize url dizini verdiğini görüyoruz. Web sitemizin url kısmına burada verilen dizini girip incelemeye başlıyoruz:

 Bu kısımda bize bir adet “JPG” dosyası verdiğini görüyoruz. Bu fotoğrafta bazı bilgiler saklanmış olabilir şüphesiyle dosyamızı kaydedip exiftool isimli aracımız ile resmimizin exif bilgilerine bakıyoruz:

 Exif raporumuzu incelerken “Image Description” kısmında “base64” şifreleme metoduna benzeyen encoded bir metin görüyoruz. Yine BurpSuit aracımızın decoder özelliğini kullanıyoruz. Base64 metodu ile şifre çözme işlemimizi başarılı bir şekilde yapıp parolamızı elde etmiş oluyoruz.

Web sayfamıza geri dönerek incelemelerimize devam ediyoruz. Bir adet şifre elde ettik fakat nerede kullanacağımızı bulmaya çalışıyoruz. Bu kısımda ise yine mesajlar kısmından yola çıkarak admin kullanıcısının olduğunu ve bu şifrenin de ona ait olabileceğini tahmin ediyoruz:

“Dr Doak” isimli kullanıcımızdan logout oluyoruz ve admin olarak sisteme girmeye çalışıyoruz. “Admin User vb.” isimleri deniyoruz fakat başarısız oluyoruz. Hepsi küçük harfle “admin” olarak girmeye çalıştığımızda ise başarılı bir şekilde giriş yapıyoruz. Artık sistemde admin olarak bulunduğumuz için sitedeki kullanılabilir arayüz sayı da artmış oluyor. Yine sitemizde gezinmeler yaparken kod çalıştırabileceğimiz bir panel buluyoruz:

 Kod çalıştırabileceğimiz bir alan bulduktan sonra hemen “reverse shell” çalıştırmayı deniyoruz. Pentestmonkey sitesinde reverse shell kodları oldukça kullanışlı oluyor, bende bu tür kodları ararken genelde bu siteden alıyorum. Reverse shell kodumuzu çalıştırmadan önce sitede bazı ayarları yapmamız gerekiyor yoksa hiçbir türlü kodu çalıştıramıyoruz. Sitemizin alt kısmında bulunan arama kısmına “Spell” yazarak karşımıza gelen alttaki görsel de gözüktüğü gibi default olarak gelen “Google Spell” ayarını “PSpellShell” olarak ayarlıyoruz ve kaydediyoruz:

Şimdi tekrardan kod yazacağımız panele geri dönüyoruz. Bazı reverse shell kodlarını deneyerek (bash,php vb.) başarısız oldum fakat “python reverse shell” kodunda başarılı bir şekilde çalıştırabiliyoruz. Kodumuzu panele yazdıktan sonra “reverse shell kodumuzu yazarken kendinize göre düzenleyip (IP ve PORT bilgisini) yazmayı unutmayın” kaydettikten sonra sol taraftaki menülerden, “My profile > Blogs > Add a new entry”  arayüzüne giriyoruz ve rastgele bir şeyler yazıp check butonuna basıyoruz. Check işlemini yapmadan önce NETCAT ile reverse shell de verdiğimiz IP ve PORT üzerinden dinleme açıyoruz ve check butonuna basıp Netcat terminalimize dönüyoruz:


“www-data” kullanıcısı olarak sistemimize girmeyi başardık. Sistemde “sudo -l” yazarak sudo yetkilerimizin olup olmadığını kontrol ediyoruz fakat sudo yetkisi ile herhangi bir komut çalıştıramayacağımızın bilgisini bize veriyor. Bazı manuel yetki yükseltme işlemlerini yaptıktan sonra işlemleri hızlandırmak adına linPEAS aracını kullanıyorum. LinPEAS aracı yetki yükseltmede bize yardımcı olmak için gayet kullanışlı bir araç. Kendi apache servisime linPEAS aracımı hazır olarak koymuştum. Hedef makinemizden /tmp dizinine giderek wget komutu ile aracımızı indirmeye çalışıyoruz:

 Aracımızı çalıştırmak için “chmod 777 linpeas.sh”  ve “chmod +x linpeas.sh” komutlarını yazarak aracımızı çalıştırabilir hale getiriyoruz . Son olarak “./linpeas.sh” yazarak aracımızı çalıştırıyoruz:

LinPEAS aracımız bize yetki yükseltebileceğimiz açıklıkları (RED/YELLOW) şeklinde renklendirdiğini belirtiyor. Taramamızın başında Linux versiyonumuzdan bir zafiyet olabileceğini ve bunu kullanarak yetki yükseltmesi yapabileceğimizi söylüyor. Bu bilgiyi aldıktan sonra “searchsploit” ile versiyon bilgimizi girerek bir arama yapıyoruz.

 Arama sonucumuzda ilk exploitimizin url adresine gidip indiriyoruz. Daha öncesinden denediğim için hedef sistemimizde “gcc” aracının olmadığını biliyorum. Yani indirdiğimiz bu exploiti çalıştırılabilir hale getirmek için “cc” aracımızı kullanacağız. Bunu ayarlamak için indirdiğimiz “37292.c” dosyamızı düzenleyici araçları ile açıp, alt satırlara doğru yazılmış olan “gcc” kısmını “cc” yapıyoruz ve kaydediyoruz.

Düzenlemesini yaptığımız 37292.c dosyasını, apache sunucumuzun içerisine “new.c” şeklinde kaydediyoruz. Daha sonrasında hedef sistemimizden wget komutunu kullanarak “new.c” isimli exploitimizi indiriyoruz.

C dili ile yazılmış bu exploitimizi çalıştırabilecek hale getirmek için cc aracımızı kullanacağız. “cc new.c -o exploit” yazarak new.c isimli dosyamızı çalıştırılabilir bir araç haline getirmiş olduk.

 Artık son aşamaya geldik. "./exploit" yazarak içerisinde ki exploit kodlarını çalıştırıyoruz. Yetki yükseltme işlemimiz başarıyla sonuçlanmış oldu. Kullanmış olduğumuz exploit bizi root yetkisine çıkartmış oldu. Şimdi ise son görevimiz olan flag dosyasını okuyup makinemizi tamamlamış oluyoruz :)

Bu yazımda VulnHub plartformunda bulunan "GoldenEye: 01" isimli zafiyetli makinenin çözümünü göstermeye çalıştım. Umarım faydalı olabilmişimdir. Yazı ile alakalı aklınıza takılan veya merak ettiğiniz soruları profilimdeki sosyal medya hesaplarımdan bana ulaşarak iletebilirsiniz. Bir sonraki yazımda görüşmek üzere :)

Merhabalar ben Taha, Fırat Üniversitesi Adli Bilişim Mühendisliği bölümünden 2023 yılında mezun oldum. Kurucularından olduğum sibermetin.com sitesinde yöneticilik ve editörlük yapıyorum. İş hayatımda Sızma Testi ve Red Team alanlarında görev almaktayım. Sitemizde "Siber Güvenlik / Adli Bilişim / Ethical Hacking" alanlarında kendini geliştirmeye çalışan arkadaşlarımıza bu vesile ile destekleyip yardımcı olmaya çalışıyoruz. Beni aşağıdaki sosyal medya hesaplarımdan takip edebilirsiniz.