~Tanım~
CSRF (Cross-Site Request Forgery), kötü niyetli bir kullanıcının bir web uygulamasında yetkisi olmayan işlemleri gerçekleştirmek üzere kullanıcının tarayıcısını kandırmasını amaçlayan bir saldırı türüdür. Bu saldırı türünde, saldırgan, hedef web uygulamasına, hedef kullanıcının kimliğiyle doğru şekilde yapılandırılmış bir HTTP isteği gönderir. Bu istek, hedef kullanıcının tarayıcısında, önceden yetkilendirilmiş bir kullanıcı işlemi gibi görünür.
Bir CSRF saldırısı gerçekleştirmek için, saldırgan, hedef web uygulamasının işlevselliğini anlamak ve bir istek yapmak için gereken parametreleri belirlemek zorundadır. Daha sonra saldırgan, bu parametreleri içeren bir HTML veya JavaScript kodu oluşturur ve hedef kullanıcıya, örneğin bir e-posta veya forum mesajı aracılığıyla, bu kodu tıklaması için yönlendirir. Hedef kullanıcı, kodu tıkladığında, tarayıcısı aracılığıyla, hedef web uygulamasına, saldırganın gönderdiği isteği gönderir.
~Uygulama~
Önümüze bu şekilde sayfa açılıyor. Normal bir kullanıcı gibi yorum yapalım.
Gönder butonuna tıkladıktan sonra,
Mesajımızın kayıt olduğunu görmek için log dosyamıza giriyorum.
Burada mesajımızın kayıt olduğunu görüyorum.
burada kaynak koduna bakarak kendime bir poc dosyası yazdım.
Burada otomatik islem.php dosyasına istediğim yazıyı yazdıracak şekilde bir html sayfası yazdım dosyayı bir tarayıcı ile açtıktan sonra log dosyasına tekrar bakalım.
1.html dosyamızı açtıktan sonra yine aynı doğrulamayı aldık.
Görüldüğü üzere yazılan mesaj sistemin log dosyasına düşmüş.
~Zafiyetin Kaynaklandığı Yer~
Bu kodda CSRF zafiyeti bulunmaktadır. Zira, bu kodda geleneksel bir CSRF koruması yoktur. CSRF, saldırganların kullanıcıların kimliği doğrulanmamış oturumlarını kullanarak istenmeyen işlemler yapmasına izin veren bir saldırıdır. Bu saldırı türü genellikle, kullanıcının web sitesinde oturum açtığı bir tarayıcıda aktifken, başka bir tarayıcı sekmesinde bir saldırganın oluşturduğu ve kullanıcının istemeden yürüttüğü bir istekle gerçekleştirilir.
CSRF zafiyetini önlemek için, web uygulaması gelen isteklerin doğru kaynaklardan geldiğini kontrol etmelidir. Bunun için, web uygulaması, formu gönderen kullanıcının kimliğini doğrulamalıdır. Bunun için, web uygulaması, her form isteğinde bir özel anahtar veya token oluşturabilir ve bu anahtarı formda gizli bir alanda saklayabilir. Sunucuya gönderilen form isteği, bu özel anahtar veya token ile birlikte gönderilmelidir. Sunucu, bu anahtar veya tokenun doğru olup olmadığını kontrol ederek, isteği doğrular ve yalnızca doğru olanları işleme koyar.
Labı Yazarken Emekleri Geçtikleri İçin Çok Teşekkür Ederim.
@The Golge @'CaptainKanka
Okuduğunuz İçin Teşekkürler
Son düzenleme: