Root Me Web-Server Write Up 2

PwnLab.Me

Admin
Katılım
21 Ocak 2024
Mesajlar
202
Tepkime puanı
9
Puanları
18
Anıl Doğan tarafından yazılmıştır.

[TR] Root Me Web-Server Write Up 2​

HTTP – Verb ta mpering​


Start the challenge dedikten sonra karşımıza bi alert geliyor.


11.Soru

Burp ile araya girip baktığımda sonuç odaklı bir şey yoktu. Bir şeyleri değiştirip request ettim fakat herhangi bir sonuç alamadım. Daha sonra ” headers ” kısmında bir ipucu yakaladım. HTTP’de ki istekler ile ilgili olduğunu anladım. GET veya POST ile değil de aynı sonucu çıkartan fakat işlem gidişatı farklı olan diğer istekleri yazdım (CONNECT) ve flagi bana verdi.

11.soru flag
11.soru flag

flag = a23e$dme96d3saez$$prap



Install files​


Karşımıza boş bir sayfa çıkıyor. İlk işlem olarak kaynak koduna baktığımız zaman bize bir ipucu veriyor.

<!– /web-serveur/ch6/phpbb –>

Phpbb’yi internette arattığım zaman kurulumu hakkında bilgi veriyor bana.

12.soru
12.soru

Daha sonra bu kurulumu kendime göre derleyip istenilen şeyi yaptığımız da flag karşımıza çıkıyor.

12.soru flag
12.soru flag

flag = karambar

CRLF​


Soruda bizden istediği şey sorunun adında verilmiş zaten. CRLF; carriage return(satır başı) ve line feed(yeni satır) anlamına gelmektedir. Windows işletim sistemlerin de CRLF karakterleri kullanılır fakat Linux & Unix de ise sadece LF karakteri kullanılır. İsminden de geldiği gibi CR ( \r ) ve LF (\n) karakterleri kullanılarak sunucudan gelen yanıtın değiştirilmesiyle ilişkilidir. Çok önemli bir zafiyettir, overflow gibi zaafiyetlere yol açabiliyor. Bu karakterleri kullanarak, web önbelleğini zehirleyebilir, web güvenlik duvarlarını
atlayabilir ve daha fazlasını yapabilirsiniz. Soruya geçersek;

13.soru
13.soru

İlk başta sürekli yaptığımız username ve password kısmına ‘admin’ yazıp denedikten sonra
alt kısımda girdiğimiz kullanıcı adının yazısını bize gösteriyor. Ne girersek girelim bize o girdiğimiz yazıyı gösteriyor. Bu sebepten ötürü Repeater kısmında GET bölümü ve HTTP/1.1 ‘ in arasına KİMLİK DOĞRULAMA İSTEĞİ YAPMAK İÇİN username=admin&password=admin2 yazıp tekrar deniyoruz durum değişecek mi diye.
Tekrar Repeat attıktan sonra tekrar aynı şey geliyor. Kullanıcı adını geçersiz kimlik
doğrulama mesajından ayırmak için satır sonu karakterleri koymaya çalışıyoruz. Tekrar denedikten
sonra Admin1 den sonra ki mesajın alt satıra geçtiğini yani bir açık olduğunu görüyoruz.

13.soru CRLF
13.soru CRLF

Şimdi o boşluğu bir ileti mesajı yani aynı hata mesajı ile doldurmaya çalışacağız fakat bunu
yaparken kullanıcı kimliği olarak username=’admin‘ yazıp bir istekte bulunacağız.

13.soru flag
13.soru flag

flag = rFSP&G0p&5uAg1%



File upload – Double extensions​


Bizden dosya yükleyip o dosyayı çalıştırmamızı istiyor fakat dosya formatının jpeg vb. olmasını koşul sunuyor.

14.soru
14.soru

File upload gibi sorularda her zaman yapıldığı gibi shell.php dosyası yükleyip onu çalıştırmamız ve sonrasında passwd klasörüne gidip flagi almamızı istiyor. Burada soru başlığında söylenildiği gibi çift uzantı diyor normalde shell.php yükeyip content-type değiştirseydik direk çalışırdı fakat burada fotoğrafın içine passwd klasörüne giden kısa bir kod yazıp kaydedeceğiz. Herhangi bir resim dosyasını txt ile açıp sonuna veya başına hiç farketmez istediğiniz yere altta verdiğim kodu yazıp kaydedip çıkıyoruz.



14 resmin içine php
14 resmin içine php

<?php
$output = shell_exec(‘cat ../../../.passwd’);
echo “<pre>$output</pre>”;
?>

Dosyayı upload ediyoruz ve karşımıza dosyanın adresini veriyor. Yüklediğimiz dosyaya gitmek için adrese basıyoruz ve flag karşımıza geliyor.

14 flag
14 flag

flag = Gg9LRz-hWSxqqUKd77-_q-6G8

File upload – MIME type​


Burada ise bir önceki soru da göstermiş olduğum uzantıyı png olarak değil de burp ile araya girip direkt olarak yükleyebiliyorsunuz. Dolayısıyla shell.php dosyasını indirmek zorundasınız.

https://raw.githubusercontent.com/flozz/p0wny-shell/master/shell.php kaydedip devam edelim.

15 upload shell
15 upload shell

shell.php dosyasını yüklerken araya giriyoruz ve karşımıza bu ekran çıkıyor. Bu ekranda png yerini bypass etmek için aşağıda verilen Content-Type kısmını image/jpeg&png ile değiştiriyoruz ve ardından forward ettiğimiz zaman dosya yüklenmiş olacaktır.

15.soru uploaded
15.soru uploaded

Burada yüklediğiniz dosyaya bastığınız zaman yüklemiş olduğunuz shell’e gönderecektir sizi. Bir önceki soru da vermiş olduğum kodda otomatik olarak .passwd klasörüne gidip bize flagi veriyordu şimdi ise kendimiz yapacağız.

15.soru flag
15.soru flag

flag = a7n4nizpgQgnPERy89uanf6T4



HTTP – Cookies​


Soruyu inceliyoruz ve saved mail dediğimiz zaman admin olmamız gerektiğini söylüyor ve ne yazarsak yazalım kayıt edildi diye bir bilgi dönüyor.

16.soru
16.soru

İster firefox ile ister burp ile araya girip visiteur kısmını admin ile değiştirip istek attıktan sonra flag karşımıza çıkıyor.

16.soru flag
16.soru flag

flag = ml-SYM

Insecure Code Management​


Karşımıza tek çıkan şey HR Database ve bir login ekranı.

17.soru
17.soru

Database’e erişim için git kullanarak alt dizinlerdeki dosyalara ulaşacağız.

17.soru git
17.soru git

index’in içinde config.php diye bir dosya var ona erişip içinde ki flagi almamız lazım, bu dosyalara erişim için hepsini indirmemiz lazım.

17.soru file uploaded
17.soru file uploaded

Dosyalar geldi ve log kayıtlarına bakıyoruz değişiklik ne olmuş diye.

17.soru log
17.soru log

Log kayıtların da karşımıza ” changed password ” diye bir şey çıktı ve girip baktığımız da flag karşımıza çıkıyor.

17.soru flag
17.soru flag

flag = s3cureP@ssw0rd

JSON Web Token (JWT) – Introduction​


Soruyu biraz kurcaladıktan sonra ” Login As Guest ” kısmın da cookies de bir jwt yani json web token görüyoruz.

18.soru cookie
18.soru cookie

Bu tokeni imza kısmı hariç base64 decode ettikten sonra değiştirmemiz gereken yerleri anlıyoruz.

18soru decode
18soru decode

base64 işleminin sonucun da karşımıza çıkan isimlerde; alg=none ve guest=admin olacak. Bunları tek tek yapıp imza hariç birleştiriyoruz ve cookie value değerine yazıp isteğimizi gönderiyoruz ve flag karşımıza çıkıyor.

18.soru flag
18.soru flag



flag = S1gn4tuR3_v3r1f1c4t10N_1S_1MP0Rt4n7



Directory traversal​




19.soru
19.soru

İçerikte herhangi bir şey dikkatimizi çekmiyor, url kısmına baktığımız da neye basarsak basalım hepsinin adı bize gözüküyor.

19.soru url
19.soru url

” galerie= ” sağ tarafını siliyoruz ve resimler kırık bir şekilde karşımıza çıkıyor. Bu resimlerin üstünde resimlerden farklı bir dosya çıkıyor karşımıza. Ögeyi inceleden klasörün adını alıp ” galeri= ” sağ kısmına yapıştırıyoruz.

19.soru ögeyi denetle
19.soru ögeyi denetle

passwd diye bir dosya çıkıyor bu dosyayı yeni sekmede açıyoruz ve flag karşımızda.

19.soru flag
19.soru flag



flag = kcb$!Bx@v4Gs9Ez

File upload – Null byte​


Yukarıda çözdüğüm MIME type sorusunda yaptığımız işlemlerle tek farkı Null byte kullanmamız olucak.

20.soru
20.soru

Upload ederken aynı işlemleri gerçekleştiriyoruz(shell.php yüklüyoruz) ve burp ile araya giriyoruz. Content-Type değiştirdikten sonra yüklediğimiz dosyanın sonuna Null byte (%00) yazıyoruz.

20.soru upload
20.soru upload

düzenlemeler bitti ve forward ettikten sonra shell dosyamız yüklenmiş oluyor. Yüklediğimiz dosyayı yeni sekmede açıyoruz ve flag karşımıza geliyor.

20.soru flag
20.soru flag

flag = YPNchi2NmTwygr2dgCCF
 
Moderatör tarafında düzenlendi:
Geri
Üst