Herkese merhabalar arkadaşlar.
[P]Bugün sizlere OAuth[/FONT] nedir, OAuth[/FONT] zafiyetlerinin oluşma sebeplerini ve bu zafiyetleri nasıl sömürebileceğimizi anlatacağım.[/P]
OAuth Nedir?
OAuth, servisler veya sunucular arasında kimlik doğrulamasına yarayan, Google, Facebook gibi hesaplarla kritik bilgiler verilmeden third party (3. parti) web siteleri, uygulamalarına erişimi sağlamaya yarayan protokoldür.
Örneğin bir e-ticaret sitesine giriş yapmak istediğinizde sosyal medya hesapları ile giriş yapabilmeniz OAuth protokolü sayesinde gerçekleşir.
Şimdi OAuth nedirin temel mantığını kavradığımıza göre, OAuth zafiyeti nedir ve temelde zafiyetin oluşma sebepleri nelerdir biraz bunlardan bahsedelim.
OAuth Zafiyeti nedir ve temelde oluşma sebepleri nelerdir ?
Şimdi sizlere zafiyeti bir örnek üzerinden anlatacağım.
Öncelikle bizim bir web sitemiz olsun ve bize sosyal medya ile giriş olanağı sağlasın. Herhangi bir sosyal medya veya OAuth desteği veren herhangi bir provider olabilir.
Şimdi sosyal medya ile giriş yapmak istediğimizdeki seneryoyu kafamızda oluşturalım.
İlk önce biz web site üzerinden hangi sosyal medya ile giriş yapmak istiyorsak onu seçiyoruz. Biz burada Google’yi örnek alacağız.
Seçimimizi yaptıktan sonra web site bizi provider e yani Google’ye redirect ediyor.
Biz provider tarafında authentication ımızı tamamladığımızda bu providerin bizi web sitesine geri yönlendirmesi gerekiyor. Ondan da önce doğrulamayı yapıp yapmadığımızın kontrolünü için web sitesini geri yönlendirme esnasında bir de request e token set ediliyor. Geri döndüğümüzde de web sitesi getirdiğimiz token e bakarak provider tarafında girişin yapıldığını doğruluyor ve bizi içeri alıyor.
Şimdi OAuth un temel işleyişini az da olsa anladığımıza göre zafiyetin oluştuğu noktayı anlatmaya geçebiliriz.
Zafiyeti daha iyi anlayabilmek adına sizlere örnek üzerinden anlatım yapacağım.
OAuth Zafiyeti Lab Çözüm Anlatımı
Örnek labları PortSwigger WebAcademy de bulabilirsiniz. Gayet faydalı ve yararlı içerikler mevcut. Kesinlikle tavsiye ediyorum ve proxy aracı olarak da Burp Suite kullanmaktayım.
Labımıza geçelim:
Öncelikle bizden ne istediğini anlayalım.
OAuth ile giriş sağlayabilen bir sistem var ve bu sistemde yapılan eksik veya hatalı validasyonlardan ve konfigürasyonlardan dolayı başka kullanıcıların hesaplarını şifrelerini bilmeden giriş yapılabiliyor. Bizden görev olarak e-posta adresi [email protected] olan hesaba giriş yapmamızı istiyor. Credentials olarak da wiener:peter ‘ i vermiş
Şimdi labı başlatalım.
Evet siteyi çalıştırdığımızda bizleri böyle bir ekran karşılamakta. Sağ üst menüde My account kısmına geliyorum.
My Account kısmına tıkladığım zaman beni otomatik olarak Sosyal medya girişine yönlendiriyor.
Şimdi normal olarak bize verilen credential lar ile giriş yapalım.
Bilgilerimi girip giriş yapmak istediğim zaman karşıma böyle bir Authorize formu çıkıyor. Burada bana WeLikeToBlog.com sitesi senin Profile ve Email bilgilerine erişim sağlayacak izin veriyor musun diye soruyor.
Continue dediğim zaman da normal olarak sisteme giriş yapmış oluyorum.
Evet şimdi çıkış yapıp, aynı işlemleri proxy miz aktifken tekrarlayalım.
bilgilerimi girip giriş yapa bastıktan sonra giden istekte gördüğünüz gibi bir token var. Bu token sayesinde geri dönüş yapacağımızı anlıyor. Devam edelim;
Şimdi izin ekranına geldiğimiz zaman burada izinleri onaylama kısmına basalım ve giden gelen isteği inceleyelim.
burada sistem izni de kabul etti ve oauth-callback endpointine otomatik bir istek attı. Devam edelim.
Eveeet !! Şimdi burada işler değişiyor. Burayı dikkatlice anlamamız gerekiyor. Az önce gerçekleşen işlemleri bir anlatalım.
Şimdi burada ilk önce biz sosyal medya hesabı ile giriş yaptık. Provider bizi doğruladı, ardından bilgi paylaşımı için izin istedi. Biz bu izni verdikten sonra Provider tarafında işimiz bitmiş oluyor. Sonraki süreçte Provider bizi web sitesine geri gönderiyor. Fakat burada işlemlerin başarı ile sonuçlandığını belirtmek için bize bir token veriyor ve biz de bu tokeni web sitemize gösterip yapmış olduğumuz girişin doğruluğunu kanıtlıyoruz. Fakat burada farkettiyseniz kullanıcı e-postası da client tarafından web sitesine geri dönüyor. Web sitesinin bundan sonra yapacağı işlem ise gelen tokenin doğrulamasını yapmaktır.
Yani o birazdan göndereceğimiz istekteki email, username gibi datalar gerekli validasyonlardan geçilmediyse email ve kullanıcı adını bildiğimiz hesaplara giriş yapabiliriz. Vakit kaybetmeden deneyelim.
Başta bizden [email protected] hesabı ile giriş yapmamızı istemişti. Şimdi email kısmına bunu yazalım.
Evet. Böylece labımızı da çözmüş olduk .
Elimden geldiğince açıklayıcı olmaya çalıştım. Umarım faydalı olmuştur. Okuduğunuz için teşekkür ederim. İyi günler.