CTF

Root-We Write-Up | Root-Me

Merhaba, bu yazıda Root-Me platformunda Realist kategorisinde yer alan “Root-We” isimli odanın çözümünü yapacağım.

Root-We sorusu 45 puan değerinde ve web zafiyeti üzerinden ilerliyor. Soruda aşağıda verilen açıklama bulunmaktadır.

Bir grup anarşist bilgisayar korsanı, rastgele masum insanların özel hayatlarını ifşa ediyor. Bu operasyonu durdurmalıyız!

Ayrıca sorunun hangi zafiyet üzerinden ilerleyeceğini sorunun alt kısmında bize verilen kaynaklardan görebiliyoruz. Bu kaynaklara göre soruda LFI zafiyeti bulunmaktadır. Bunu unutmayarak testlerimizi yapacağız.

İlgili web sitesine eriştiğimizde ilk olarak bir kullanıcı inputu alacak bir alan arıyoruz ve login kısmına giderek aşağıdaki url adresine erişiyoruz.

http://challenge01[.]root-me[.]org/realiste/ch4/index[.]php?action=login

Bu url adresine gitmeden önce sayfada aşağıda yer alan hata mesajını görmekteyiz.

Warning: include(): Failed opening 'tr-TR,tr;q=0.8' for inclusion (include_path='.:/usr/share/php') 

Bu, include() fonksiyonunun Accept-Language: tr-TR,tr;q=0.8 değerini dosya yolu olarak kullanmaya çalıştığını gösteriyor.

Bu demek oluyor ki Accept-Language başlığı dosya yolu olarak işleniyor ve LFI açığına açık olabilir.

Hızlıca istekleri Burp Suite ile yakalayarak inceliyorum ve Accept-Language başlığına payload ekleyip gönderiyorum.

Payloadı gönderdiğimde aşağıdaki hataları alıyorum.


Warning: file_exists(): open_basedir restriction in effect. File(/etc/passwd) is not within the allowed path(s): (/challenge/realiste/ch4:/tmp) in /challenge/realiste/ch4/index.php on line 17

Warning: include(): open_basedir restriction in effect. File(/etc/passwd) is not within the allowed path(s): (/challenge/realiste/ch4:/tmp) in /challenge/realiste/ch4/index.php on line 24

Warning: include(/etc/passwd): failed to open stream: Operation not permitted in /challenge/realiste/ch4/index.php on line 24

Warning: include(): Failed opening '/etc/passwd' for inclusion (include_path='.:/usr/share/php') in /challenge/realiste/ch4/index.php on line 24

Bu hata mesajları ile LFI açığı doğrulandı, ancak open_basedir kısıtlaması nedeniyle yalnızca şu dizinlerdeki dosyalara erişebiliriz:

  • /challenge/realiste/ch4
  • /tmp
  • /etc/passwd gibi sistem dosyalarına doğrudan erişemeyiz.

Başka teknikler kullanmadan önce çeşitli bypass yönetmelerini deneyelim. İlk olarak aşağıdaki payloadı gönderelim. php[:]//filter açıksa, dosyaları Base64 olarak okuyabiliriz.

php[:]//filter/convert.base64-encode/resource=index.php

Evet veriyi base64 olarak başarılı bir şekilde aldık. Şimdi decode edip kontrol edelim.

Evet veriyi decode ettik ve config[.]php hemen gözümüze çarpıyor. Şimdi de bu kritik dosyayı okumaya çalışalım.

Görüldüğü üzere başarılı bir şekilde config dosyasını da okuduk. Hemen decode edip inceleyelim.

Decode ettikten sqlite veri tabanı bilgilerini görebiliyoruz. Burada admin kullanıcısının default_password kullandığını görüyoruz. Bu verilerin çekildiği “db4realiste.sqlite” veri tabanını okuyup parola hash değerini elde etmemiz gerekiyor.

Elde ettiğimiz base64 veriyi okuyalım ve hash değerini elde edelim.

Admin kullanıcısının parola hash değerini elde ettik. Hızlı bir şekilde bu md5 hash verisini kıralım.

Parolayı elde ettik. Şimdi bu bilgilerle login olalım.

Bilgileri elde ederek admin panele giriş yaptık ve sorunun çözümünü tamamladık. Başka sorularda görüşmek üzere.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu