- 15 Ocak 2019
- 303
- 71
Merhaba, bu konuda SSRF nedir nasıl sömürülür ve örnek lablar ile açıklamaya çalışacağım. Zafiyet bir web uygulamasının içeride kendi sistemlerini check ederken,veya veri alırken bu durumu manipüle edip farklı kaynaklara istek gönderme hatta servis içindeki dosya kaynaklarını okumanızı sağlayabilir.
Portswigger üzerinden ilk örneğimizi çözelim. (wienereter)
İLK LABARATUAR
Portswigger üzerinden ilk örneğimizi çözelim. (wienereter)
İLK LABARATUAR
Gördüğünüz gibi stock check üzerinde direkt olarak bir url belirli buradan veriyi toplayıp içeride kaç tane olduğunu gösteriyor. Biz ise bu durumu manipüle edip sistem içindeki /admin/ pathine gireceğiz. Pekala bu durumu lokalde deneyeceğiz http://localhost/admin
Artık herhangi bir auth. vermeden sistem üzerinde admin paneline erişebiliyoruz. Sistemin bizden istediği şey admin paneline girip carlos adlı müşteriyi silmek. Bunun için /admin/delete?username=carlos diyerek testi tamamlıyoruz. 302 found verdikten sonra tekrar /admin e gidip kontrol edebilirsiniz.
İKİNCİ LABARATUAR
Bu örnekte bizden ssrf açığı yardımı ile hedef server'a ait ip range kısmını bulmamız vu bu bulduğumuz ip adreslerinden admin klasörüne gidip carlosu silmemizi istiyor. Önce lab ı aktif hale getiriyorum ve yine stock check kısmına girişiyorum.
İlk örnekteki gibi direk localhost diye girişirsek muhtemelen bizi patlatacak, bunun için 192.168.0.1/24 lük bir test yapmamız lazım, inturder üzerinden 200 veya 401 mesajları bizim önemli, illa ki 200 mesajı dönmesi gerekmez şuan için sadece ip nin var olup olmadığını bulmamız gerkiyor. İnturder > Payloads > Numbers > From: 1 - To: 254 - Step: 1
Gördüğünüz gibi 192.168.0.163 açık adres olarak karşımıza çıktı, http response değerlerini iyi okumalı ve ona göre testlerimizi yapmalıyız. Şimdi az önceki işlemin aynısını verek carlos adlı kullanıcıyı sileceğiz. /admin/delete?username=carlos yazarak kişinin hesabını siliyoruz.
ÜÇÜNCÜ LABARATUAR
Bu labaratuar örneğinde ilk yaptığımız ile aynı işlemi yapacağız ama sizde göreceksiniz ki bizden bypass işlemi gerektirecek bir parametre gerekiyor. Bu durumu belki localhost kısaltmaları ile kırabilirsiniz örneğin ; iken http://0.0.0.0 http://127.127.127.127 gibi örnekler ile karşımıza çıkabilir.
Buraya kadar anladık, bizden herhangi bir path kısıtlaması v.s vermemiş eğer ki durum böyle olsaydı url encoding ve php bypass konuları girebilirdi örnek olarak %2fadmin veya http://dreambully.com@http//127:80/admin verebiliriz. Şimdi ip adresini bypass etmemiz gerek.
Buraya kadar herşey tamam da /admin yazdığımda yine beni waff karşılıyordu, bu sefer yeni lokal host parametreleri aradım ama nafile, bunun yerine olayın /admin/ pathi olduğunu anladım. Bunun için ilk sefer url encode etsem de işe yaramadı. Bende bunun yerine double encodeing denedim ve sonuç....
Bu tür ssrf saldırıları ile beraber sistemde çalışan ip aralıklarını öğrenip atif olan servislerinden dosya okuyup işlemler yapabilir, hatta işi blind tabanına taşıyıp komut çalıştırabiliriz. Cloud servisleri kullanıyorsa api keyleri security cred. larını öğrenebilirsiniz bu denli kritik bir açıktır. Beni okuduğun için teşekkür ederim.