Merhaba arkadaşlar Tarafımca bulunmuş Tumblr CSRF açığı hakkında bir makale yazmak istedim açık fixlendi ancak sizlere bir kaç şey öğretmek amacıyla paylaşıyorum.
İlk önce csrf'den bahsedeyim;
Açılımı "Cross site request forgery" yani siteler arası istek sahteciliği.Biraz Açarmısın Kardeşim?
-Tabi,Normalde Websitesi yapılan her işlem için bize bir token değeri verir.Bu token değeriyle işlem yaparız ve bu token değeri başkası üzerinde çalışmaz ve bu token değeri sadece o kullanıcıda çalışır buda csrf saldırısını engeller.
Eğer kullanıcı saldırgan tarafından herhangi bir token değeri olmayan bir linke tıkladığında aynı işlem hedef kullanıcıda gerçekleşecektir.
İllaki Bir linkemi tıklaması lazım hayır.Mesela Burda bir POST metod örneği var.:
Hedef Kullanıcı bu html kodlarını içeren bir siteye giriş yaptı diyelim.
Tarayıcı "https://www.csrfacigi.com/sifre/degistir" isteğini okuyacak ve şifre Balamir97 olarak değişmiş hemde kullanıcının hiç farkında olmadan şifresi değişmiş olacaktı.
Neyse ilgili açığa geçelim.
Tumblr size birini takip etmek istediğiniz zaman şöyle bir URL veriyordu(normalde bu url yi veriyor ancak ben açık ararken giriş yapmamıştım. http://tumblr.com/login/follow/hacker)
http://tumblr.com/login/follow/hacker
Burada tumblr'a giriş yaptıktan sonra hacker kullanıcısını takip et mesajını gönderiyorduk servere
Ancak sıkıntı işte tam burdaydı.
Ben hedef kullanıcıya bu linki atıp kullanıcı giriş yaptıktan sonra herhangi bir soru ile karşılaşmadan hedef kullanıcı "hacker" kullanıcısını takip ediyordu.
Örnek atak senaryosu:
1)Kullanıcı "http://tumblr.com/login/follow/hacker" Linkini hedef kullanıcıya gönderir yalnız burda dikkat etmek gereken bir nokta var hedef kullanıcı giriş yapmamış olması gerekiyor.
2)Kullanıcı giriş yaptıktan sonra herhangibir soru ile karşılaşmadan ve farkında olmadan Hacker adlı kullanıcıyı takip ediyor
Az önce dediğimiz gibi hedef kullanıcı giriş yapmamış olması gerekiyor.Peki Ya giriş yapmış olsaydı yani şu URL'yi göndereseydik ?
http://tumblr.com/follow/hacker
Gördüğünüz gibi giriş yapmış olsaydık bize bu soruyu soracaktı.Ve hedef kullanıcı durumu fark edecekti.Zaten CSRF açığının amacıda budur.Hedef kullanıcıya fark ettirmeden ona kendi istediğimiz komutu vs uygulattırmak.
Açık 2 gün içinde fixlendi ve 200$ Ödül verdiler
İlk önce csrf'den bahsedeyim;
Açılımı "Cross site request forgery" yani siteler arası istek sahteciliği.Biraz Açarmısın Kardeşim?
-Tabi,Normalde Websitesi yapılan her işlem için bize bir token değeri verir.Bu token değeriyle işlem yaparız ve bu token değeri başkası üzerinde çalışmaz ve bu token değeri sadece o kullanıcıda çalışır buda csrf saldırısını engeller.
Eğer kullanıcı saldırgan tarafından herhangi bir token değeri olmayan bir linke tıkladığında aynı işlem hedef kullanıcıda gerçekleşecektir.
İllaki Bir linkemi tıklaması lazım hayır.Mesela Burda bir POST metod örneği var.:
Kod:
<html>
<body>
<form action="https://www.csrfacigi.com/sifre/degistir" method="POST">
<input type="hidden" name="sync" value="true" />
<input type="hidden" name="********String" value="Balamir97" />
<input type="hidden" name="name" value="home" />
<input type="submit" value="Submit request" />
</form>
</body>
</html>
Hedef Kullanıcı bu html kodlarını içeren bir siteye giriş yaptı diyelim.
Tarayıcı "https://www.csrfacigi.com/sifre/degistir" isteğini okuyacak ve şifre Balamir97 olarak değişmiş hemde kullanıcının hiç farkında olmadan şifresi değişmiş olacaktı.
Neyse ilgili açığa geçelim.
Tumblr size birini takip etmek istediğiniz zaman şöyle bir URL veriyordu(normalde bu url yi veriyor ancak ben açık ararken giriş yapmamıştım. http://tumblr.com/login/follow/hacker)
http://tumblr.com/login/follow/hacker
Burada tumblr'a giriş yaptıktan sonra hacker kullanıcısını takip et mesajını gönderiyorduk servere
Ancak sıkıntı işte tam burdaydı.
Ben hedef kullanıcıya bu linki atıp kullanıcı giriş yaptıktan sonra herhangi bir soru ile karşılaşmadan hedef kullanıcı "hacker" kullanıcısını takip ediyordu.
Örnek atak senaryosu:
1)Kullanıcı "http://tumblr.com/login/follow/hacker" Linkini hedef kullanıcıya gönderir yalnız burda dikkat etmek gereken bir nokta var hedef kullanıcı giriş yapmamış olması gerekiyor.
2)Kullanıcı giriş yaptıktan sonra herhangibir soru ile karşılaşmadan ve farkında olmadan Hacker adlı kullanıcıyı takip ediyor
Az önce dediğimiz gibi hedef kullanıcı giriş yapmamış olması gerekiyor.Peki Ya giriş yapmış olsaydı yani şu URL'yi göndereseydik ?
http://tumblr.com/follow/hacker
Gördüğünüz gibi giriş yapmış olsaydık bize bu soruyu soracaktı.Ve hedef kullanıcı durumu fark edecekti.Zaten CSRF açığının amacıda budur.Hedef kullanıcıya fark ettirmeden ona kendi istediğimiz komutu vs uygulattırmak.
Açık 2 gün içinde fixlendi ve 200$ Ödül verdiler