Dav Walkthrough:
Merhabalar bu yazımızda tryhackme sitesi üzerindeki Dav makinesinin çözümünü ele alacağız keyifli okumalar dilerim.
Öncelikle tryhackme üzerinden makineyi deploy edip makinenin ip adresini aldım.
İlk olarak nmap üzerinden agresif tarama ve script taraması çalıştırdım bunun sonucunda tek bir portun açık olduğunu gözlemledim.
Açık olan port ise 80 portunda çalışan bir http servisi idi.
Bunun anlamı bir web sitesi var ve bizim o web sitesi üzerine yoğunlaşmamız gerektiğiydi.
İp adresindeki web sitesini ziyaret ettiğimde bu sitenin bir default apache server ara yüzü ile oluşturulmuş olduğunu fark ettim.
Sitenin kaynak kodlarını inceledim ve hiçbir şey bulamadım bunun sonucunda “gobuster” ile gizli dizin taraması yaptığımda karşıma 401 koduyla gizli bir dizin çıktı.
401 kodunu gördüğümde bu dizinin bir giriş paneli olabileceğini düşündüm ve “http://10.10.162.12/webdav” bağlantısına gittim.
NOT:Buradaki giriş paneli üzerinde gösterilen ip ile nmap taramasındaki ip farkının nedeni sistemi teknik hatadan kayaklı 2 kere çözmek zorunda kaldım o nedenle bazı kısımlarda farklı ip adresleri görebilirsiniz.
Tahmin ettiğim gibi bir kullanıcı adı şifre giriş ekranı ile karşılaştım.
Bunun sonucunda bruteforce yapmaya çalıştım ama başarılı olamadım.
Daha sonra internet üzerinde “webdav exploit” kelimesini arattım ve karşıma webdav servisinin 1.7.3 ve altı sürümlerinde var olan varsayılan kullanıcı adı ve parola bilgisinin olduğu bir blog sitesi çıktı.
Bu sitenin içerisinde “cadaver” adlı bir komut ile kullanıcı adı şifre verilmişti ve şifrenin altında “put” komutu ile bir dosya upload edilebildiği gösterilmişti.
Bu bilgileri kullanarak sistemi ele geçirmemiz gerektiğini düşündüm ama öncelikle kullanıcı adı ve şifrenin doğru olup olmadığını giriş paneli üzerinde denedim.
Ve sonunda “/webdav” dizinine erişmeyi başardım içerisinde “passwd.dav” adlı bir dosya olduğunu gördüm.
Bu dosyanın içerisinde kullanıcı adı ve şifre bilgisinin yer aldığını farkettim.
Ama biz zaten şifrenin ne olduğunu bulduğumuz blog sitesi üzerinden öğrenmiştik.
Şimdi sıra bize söylenilen “cadaver “ komutunu kullanmaya geldi.
“cadaver http://10.10.162.12/webdav/” komutunu çalıştırdıktan sonra kullanıcı adı ve şifreyi yazıp ftp benzeri bir komut satırına erişiyoruz.
Neler yapabileceğimizi görmek için ftpde olduğu gibi “?” komutunu çalıştırıyorum ve bana kullanabileceğim komutları gösteriyor.
Bana sitenin açıklamasında put kodu ile dosya upload edilebildiği söylenmişti bende sisteme shell upload edebileceğimi fark ettim ve kali üzerinde yeni bir terminal açarak “locate webshells” komutunu çalıştırdım.
Karşıma çıkan farklı kodlama dilleri ile yazılmış olan Shell dosyalarından “php-reverse-shell” isimli dosyayı “cp” komutunu kullanarak bulunduğum dizine “shell.php” adı ile kopyaladım.
Daha sonra kopyalamış olduğum Shell.php dosyamın içinde ufak bir değişiklik yaptım ve “$ip=” kısmına kendi vpn ip’mi ekledim.
Ardından dav servisinin çalıştığı terminale geri döndüm ve put komutu ile sisteme Shell.php dosyamı upload ettim ardından sistemden çıkış yaptım.
Daha sonra tekrardan websitemize geri döndüm ve Shell.php dosyamın yüklenip yüklenmediğini kontrol ettim.
Ve evet Shell.php dosyamızı yüklemeyi başardık.
Sıra php dosyamızı çalıştırmaya geldi bunun için “http:10.10.162.12/webdav/shell.php”
Adresine gitmemiz gerekli ama öncesinde kali terminalimizde bir ters bağlantı alabilmek için netcat dinlemesi başlatmamız gerekiyor.
Bunun için -l,-v,-n,-p komutlarını kullanıcaz.
-l=1234 portuna gelen bağlantıları dinlememizi sağlar.
-v=Terminalde bağlantıya yönelik ayrıntılı olarak görünüm sağlar.
-n=DNS yada servis aramalarını devre dışı bırakır(isteğe bağlı kullanılabilr)
-p=Dinleme yapacağımız portu belirmemize yarar.
Şimdi yukarıda belirttiğim kurban makinemizin “http://10.10.162.12/webdav/shell.php” adresine gidiyoruz.
Ve evet kabuk bağlantımız başarı ile gerçekleşti.
Başlangıçta bilgi toplamaya yönelik “whoami” komutu ile sistemdeki kullancı yetkime bakıyorum.
Daha sonra user.txt dosyasını almak için” home” klasörüne gidiyorum ve 2 tane kullanıcı ile karşılaşıyorum merlin kullanıcısının klasörüne girdiğimde user.txt dosyasını buluyorum.
Evet şimdi sıra yetki yükseltmekte.
Her ctfde ilk denememiz gereken “sudo -l” komutunu kullanarak root kullanıcısı olarak çalıştırabileceğim bir komut var mı ona bakıyorum.
Ve “/bin/cat” komutu olduğunu görüyorum.
Geriye sadece bu komutu sudo ile çalıştırıp root dizinindeki root.txt dosyasını okumak kalıyor.
Ve bingo root flag’imizi almış bulunuyoruz.