"Vatanını en çok seven, görevini en iyi yapandır."


Hoş Geldin, Ziyaretçi!

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı yada giriş yapmalısınız. Forum üye olmak tamamen ücretsizdir.

  • Yeni üyeler Neler Yapmalı, Nasıl Başlamalı? Detaylar için tıklayın
    Rütbeler ve genel görevlendirme konuları hakkında bilgi almak için tıklayın
    Uzmanlık alanları hakkında bildirge için tıklayın
    Güncel forum kuralları için tıklayın

Makale ikonu

CSRF Zaafiyetini Hacklemek Ve Anlamak 2021-02-08

indirmek için izniniz yok
Merhaba konumda CSRF zaafiyetini önce kısaca bahsedip sonra lab üzerinden hackleyip daha sonra yazılımsal mantığını anlatmaya çalışacağım.

Kısaca CSRF

Cookie,session,request'lere dayanan bir açıktır. İnternet dünyasında önemli bir yer taşımaktadır. Bir sistemde bu açık varsa gelen giden istekler manipüle edilerek sistem kandırılır ve sisteme kendimizi başka bir kullanıcıymışız gibi gösterir ve o kullanıcı adına bir yazı paylaşabilir veya o kullanıcının şifresini değiştirebiliriz. CSRF Web sitedeki Cookie mekanizmasının düzgün çalışmaması sonucu oluşur. İstek sahtekarlığı olarak da geçiyor CSRF. Açığın sömürülmesi veya keşfinde iki şey daha çok kullanılıyor. Biri Inspect Element diğeri ise Burp Suite. Burp Suite üzerinden daha rahat olmaktadır. Inspect Element'dan da aynı mantığı göstereceğim az sonra.

DVWA CSRF Low Level Çözümü

Öncelikle Low level'ı göstereceğim. Diğer bir konu da da high anlatırım. nasıl çözebileceğimizi göstereceğim. DVWA'i açıyoruz ve aynı şekilde burp suite yi de açıyoruz. Security nin low olması gerek ilk açıldığında imkansız da gelebilir.


Bu resim yeniden boyutlandırıldı, tam halini görmek için tıklayınız.



Burası bir şifre değiştirme ekranı. Şuanda biz sitenin adminiyiz ve şifre değiştirme ekranındayız admin şifresini değiştireceğiz. Bu arada bunu değiştirince artık dvwa'e girerken o şifre ile gireceksiniz. Önce Inspect Element ile nasıl oluyor göstereyim. Şuan DVWA de yok ama az da olsa anlatmaya çalışacağım. Sayfanın boş bir yerine sağ tıklayıp Inspect Element'a basıyoruz.


Bu resim yeniden boyutlandırıldı, tam halini görmek için tıklayınız.



Storage bölümüne geldik daha sonra burda çalışan bazı şeyleri görüyoruz. Bazen sitelerde çok basitdir ama userıd olabiliyor bu kısımda. O user ıd yi değiştirerek sisteme oymuşsunuz gibi davranabiliyorsunuz o sizi o şekilde kabul ediyor. İD'yi 1 yaptığımızda sistem bizi admin olarak algılayabilir. Aynı şekilde Burp Suite üzerinden de örneğin bir blog yazısı yazdınız intercept on ve yazıyı paylaş'a tıkladınız istek geldi. Ordan da bu istekler de oynayabilirsiniz. Birde Burp üzerinden gösterelim. Burp de Proxy'de Intercept'i açıyoruz. Ve CSRF açığının olduğu bölümde test test olarak şifre değiştirmek istiyoruz.


Bu resim yeniden boyutlandırıldı, tam halini görmek için tıklayınız.



İstek Burp'e bu şekilde bir GET isteği olarak yansıdı.Bu arada POST istekleri CSRF de GET'e göre daha güvenli olabilir ek bir bilgi olsun bu da. Burda değişirken ki url yi, host'u ve gönderilen şifre isteğini burda istek halinde henüz Forward etmedik yani işlem gerçekleşmeden burda görüyoruz. Bu istek üzerinde oynamak için burp de repeater denen bir şey var. İsteğin herhangi bir yerine sağ tıklayıp Send To Repeater diyoruz. Yukarda Repeater turuncu hale gelecek ona tıklıyoruz.


Bu resim yeniden boyutlandırıldı, tam halini görmek için tıklayınız.



Burdaki Response'u görüyoruz. Buna Send dersek arka planda çalışan HTML kodlarını göreceğiz.


Bu resim yeniden boyutlandırıldı, tam halini görmek için tıklayınız.



Bakın burdan şifre değiştirme kısmındaki kodu burda bulduk. Şimdi sol da isteğimiz var test&test olarak. Bunlardan bir tanesini test1 yapalım ve send basalım.


Bu resim yeniden boyutlandırıldı, tam halini görmek için tıklayınız.



Bakın şifre değişmedi dedi. Burası gayet güzel bir şekilde. İstekler üzerinde oynanabilir gibi. Bence keşfetmenin en iyi yolu şu şekilde. Yine istek yolluyoruz test test olarak. Daha sonra isteğe sağ tıklayıp copy url diyoruz ve url yi bakalım google'a yapıştırınca şifremiz değişiyor mu? Eğer ki bu olursa isteği manipüle etmiş oluyoruz. Onu bir şahısa attığımızda hesabının şifresi bu şekilde değişecektir.


Bu resim yeniden boyutlandırıldı, tam halini görmek için tıklayınız.



Bakın bu şekilde şifremiz değişti. Yani bunu biz bir şahısa atarsak o da bu siteye girmişse üyeyse onun da şifresi değişir. Fakat bir sorun var o da bu sayfa. Yani şifre değişti diyor bu sıkıntı yaratır kişiye. Onun için de HTML kodları devreye giriyor. Kendi HTML kodu ile basit bir sayfa yazıp arkada bu kodu çalıştırabiliriz. Ve çalıştığını karşı taraf anlamaz. Şimdi CSRF mantığına geçelim.

Cookie Mekanizmasına Bakmak


Aslında Network'un Web Güvenliğindeki etkisinin de büyük olduğunu burda anlaşılabilir. Şimdi cookie'lerin neye göre çalıştığına vs. burda değineceğiz. Öncelikle browser üzerinde şöyle bir istek yapmış olalım;



Kod:
Please, Giriş yap or Kayıt ol to view codes content!

Kod:
Please, Giriş yap or Kayıt ol to view codes content!

Cookie'yi random attım bu arada diyeyim. Burda bir POST isteği görüyoruz. Hostu görüyoruz. Ve isteği görürouz. HTTP 302'de OK ( loginler 302 de çalışır ) çalıştığıın ve bunun lokasyonunu daha sonrasında bu isteğin Cookie sessionu'nu görüyoruz. Şimdi burayı şu şekilde bağlayacağım. Browser'lar istekler deki bu cookie'leri çerezleri siz temizlemediğiniz sürece bunlar kayıt edilir. Kayıt edilmesinin sebebi de Host'un sizi tanıması protokolün diyelim veya. Protokolün sizi unutmamasını sağlıyor. Login yerlerindeki Beni Hatırla gibi. Siz öyle yapınca artık o isteğin Cookie'si veritabanında kaydediliyor ve artık hep oraya geldiğinizde sizden şifre vs. istemeden sizi siteye login ediyor. Bu cookie'leri çalmak için yöntemler var konunun konusu değil ama o cookie'ler çalınınca haliyle şifreniz de çalınıyor başka biri de login oluyor hesabınıza buna da dikkat etmek gerek. Tabi her web sitesinde olacak diye bir şey yok, güvenli olmayan sitelerde olur.

CSRF mantığı da biraz buna dayalı gibi. İşte biz aslında bu Cookie sistemini kandırarak başkası adına işlem yapıyoruz. Sistem sen kimsin? Diyor sizde ben buyum cookiem'de bu diyorsunuz burda sistemi kandırıyorsunuz. Birde bu cookie'ler diğer isteklere yansımıyor. Yansıması da burda bir problem yaratıyor. Yani aynı şahıs browser'da bir request attığında Browser burda vereceği cookie'yi neye göre veriyor. Yani neden ACOOKİESİ değilde BCOOKİESİ? Sorgulamak istediğimiz bu. Aslında burda bizim browserımız veya veri tabanı bazı değerlere bakıyor. Host'a mı bakıyor değil çünkü şöyle düşünelim. Bir web sitesi olsun;

selenia.com.tr

Bu site içinde de sayfalar var siteler gibi yani birilerinin oluşturduğu vs.

selenia.com.tr/baysiberbela
selenia.com.tr/x4807

Olsun. Eğer sadece host'a bakılsaydı yani selenia.com.tr ye bakılsaydı baysiberbelanın cookie'si x4807'ye de giderdi.
( Selam olsun @x4807
)

Bu durum mantıksız bir olay. Aynı durum IP için de geçerli. Yine domain IP sı işte o zaman aynı durum ortaya çıkar. Path denen bir şey var. O da işte / dan sonrası baysiberbela bir path düşünelim. Yani Browser'da selenia.com.tr nin baysiberbela path'inde çalışan cookie diğer pathleri etkilemez. Yani x4807 pathini etkilemez. Ama yeterli kalmayabilir path. Aslında browser'ların esas baktıkları şeyler Protokol,Domain,Port baktığı üç mevzu bu. Yanında ek olarak Path'de gelebilir.

http://selenia.com.tr:80/

http protokolümüz. selenia.com.tr bizim domainimiz. 80 ise portumuz tabi bu istek de çalışıyor url de değil. Eğer bu mantık olmasaydı bizim browser'ımızdaki cookieler birbirine girer dururdu, her yerde gezerdi cookieler. İstenmemesi gereken bir durum saldırganlar çeşitli zehirleme saldırıları ile bu request'leri kendine alabilir.


Cookieleri sunucuya girişimizi sağlayananahtar, sessionlar ise bu cookielerin tutulduğu yer. Sen cookieni web sitesine gönderiyorsun benim cookiem bu diye o da hemen SELECT * FROM sorguları ile o cookie'yi sorgulatıyor ve var olup olmadığını sorgulatıyor. Bu mekanizma CSRF'i anlamakta önemli.

CSRF Açığının oluşmasında. Şimdi cookie yi sunucu aldı doğruladı seni girdirdi. Bu işlemi yaparken aynı zamanda senin sunucu daki kayıtlı diğer tüm bilgilerini de paket edip sana tekrar veriyor. Eğer sen o paketi kontrol edebilirsen bu açığı sömürürsün bu şekilde. Tabi açık yoksa sömürülmez. Mantık bu şekilde çalışıyor. Bu cookie mekanizmasının düzgün çalışmaması durumunda CSRF zaafiyeti oluşuyor.


Konum bu kadardı. CSRF devam edecek. Bundan bir sonraki konuda Browser daki mantıkdan CSRF'e bağlanacağız. Ve biraz da açığın nasıl kapatıldığı hakkında konu yazacağım. İyi forumlar dilerim.
Yazar
SE7EN
İndirilme
0
İlk Yayınlama
Son Güncelleme
Değerlendirme
0.00 yıldız(lar) 0 rating
Üst