Yavuzlar
Ana sayfaTelegram
  • Yavuzlar
  • VulnLab
  • CodinLab
  • 📚EĞİTİM
    • PHP
      • XAMPP kurulumu
      • VS Code Kurulum
      • 1.0 PHP Nedir
      • 1.1 Dosya Oluşturma
      • 1.2 Syntax (Yazım Kuralları)
      • 1.3 PHP'de Echo ve Print
      • 1.4 PHP'deki yorumlar
      • 1.5 PHP Değişkenleri
      • 1.6 Operatörler (Operators)
      • 1.7 Veri Türünü Alma
      • 1.8 PHP'de String
      • 1.9 PHP'de Sabitler
      • 2.0 PHP'de If Else Elseif
      • 2.1 Switch Case
      • 2.2 PHP'de Döngüler
      • 2.3 PHP'de Diziler (Arrays)
      • 2.4 PHP'de Süper Global Değişkenleri
      • 2.5 PHP'de Cookie (Çerez) Ve Session (Oturum) Yöntemleri
      • 2.6 Form işlemleri
    • C++
      • 1.0 Temeller
        • 1.1 Dosya Oluşturma
        • 1.2 Syntax (Yazım Kuralları)
        • 1.3 Yorum Satırları
        • 1.4 C++ Değişkenleri
          • 1.4.1 Değişken Türleri
        • 1.5 Operatörler (Operators)
        • 1.6 Namespace
        • 1.7 Kullanıcı Girdisi (User Input)
        • 1.8 C++ Stringleri (C++ Strings)
        • 1.9 Matematik (Math) Fonksiyonları
        • 1.10 Booleans
        • 1.11 If Else
        • 1.12 Switch
        • 1.13 While Döngüsü
          • 1.13.1 Do While Döngüsü
        • 1.14 For Döngüsü
        • 1.15 Break/Continue
        • 1.16 Diziler
        • 1.17 Structures
        • 1.18 Enums
        • 1.19 References
        • 1.20 Pointers
      • 2.0 Fonksiyonlar
      • 3.0 Sınıflar
        • 3.1 OOP
        • 3.2 Sınıflar ve Objeler
        • 3.3 Sınıf Methodları
        • 3.4 Yapıcılar (Constructors)
        • 3.5 Erişim Belirleyicileri (Access Specifiers)
        • 3.6 Kapsülleme (Encapsulation)
        • 3.7 Inheritance
        • 3.8 Polimorfizm (Polymorphism)
        • 3.9 Dosyalar (Files)
        • 3.10 İstisnalar (Exceptions)
        • 3.11 Tarih ve Zaman (Date and Time)
      • 4.0 Veri Yapıları (Data Structures)
        • 4.1 Veri Yapıları ve STL
        • 4.2 Vektörler (Vectors)
        • 4.3 Listeler (Lists)
        • 4.4 Yığınlar (Stacks)
        • 4.5 Kuyruklar (Queues)
        • 4.6 Deque (Çift Uçlu Kuyruk)
        • 4.7 Küme (Set)
        • 4.8 Maps
        • 4.9 Iterator
        • 4.10 Algoritmalar
  • 🛠️ARAÇLAR
    • Aircrack-ng
    • Airgeddon
    • Arjun
    • BeEF
    • Bettercap
    • Docker
    • Gelişmiş Wireshark Kullanımı (Advanced Wireshark Usage)
    • Google Dorks
    • Hping3
    • John the Ripper
    • Metasploit Framework
    • Netcat
    • Nmap
    • OSINT Framework
    • PEASS-ng
    • Sublist3r
    • XSS Scanner
    • Wireshark
    • ZAP
    • HYDRA
  • 🖥️İŞLETİM SİSTEMLERİ
    • Linux101
    • MBR
  • 🔑KRİPTOLOJİ
    • Dijital Sertifika ve İmzalar
    • Sezar Şifrelemesi
    • Steganografi
    • Veri Şifreleme (Data Encryption)
  • 🔏Network
    • Domain Name Server (DNS)
    • Firewall Nedir? Nasıl Çalışır ?
    • Ortadaki Adam Saldırısı (Man In The Middle Attack)
    • OSI Modeli
    • Sanal Özel Ağlar (VPN)
    • World Wide Web (WWW)
  • 🔐PRIVILEGED
    • Docker Escape
  • 📨Protokoller
    • ARP
    • DHCP
    • FTP
    • HTTP/HTTPS
    • SSH
    • TCP/IP
    • UDP
    • Wİ-Fİ Güvenlik Protokolleri (WEP/WPA/WPA2/WPA3)
  • 💻SİBER TEHDİT İSTİHBARATI
    • Gelişmiş Siber Tehdit İstihbaratı Nedir?
  • 🔒WEB GÜVENLİĞİ
    • 403 ByPass
    • API Güvenliği (API Security)
    • Broken Access Control
    • Bulut Güvenliği (Cloud Security)
    • Command Injection
    • Cross Origin Resource Sharing
    • Cross Site Request Forgery (CSRF)
    • Cyber Kill Chain
    • DDoS Saldırıları
    • File Upload Zafiyeti Nedir?
    • HTTP Request Smuggling
    • Insecure Direct Object Reference (IDOR)
    • Incident Response
    • Local File Inclusion (LFI)
    • NoSQL Injection
    • Pentest 101
    • Race Condition
    • Server Side Request Forgery (SSRF)
    • Server Side Template Injection (SSTI)
    • Spring4Shell
    • Two Factor Authentication Bypass
    • XML External Entity Attack (XEE)
  • 🤖YAPAY ZEKA
    • ChatGPT for Hacking
    • Siber Güvenlik ve Yapay Zeka
    • Yapay Zeka ile Sahte Fotoğraf Tespiti
  • 🌐YAZILIM
    • Düzenli İfadeler (Regular Expressions)
    • Elasticsearch Nedir?
    • Front-end Teknolojileri
    • Golang'da Arayüzler (Interfaces)
    • Go'da Concurrency ve Uygulamaları
    • Güvenli Kodlama (Secure Coding)
    • Java Overloading vs Overriding
    • JSON Web Token (JWT)
    • Material-UI
    • NextJS Nedir?
    • ReactJS Kancalar (Hooks)
    • ReactJS Nedir?
    • Redux Toolkit
    • SOLID Yazılım Geliştirme Prensipleri
    • SQL 101
    • UI / UX Nedir?
    • Veri Taşıma Nedir? (Database Migration)
    • Versiyon Kontrol Sistemleri ve GIT
  • 🔷DİĞER
    • Bug Bounty (Hata Ödülü) Nedir?
    • Popüler Yazılımların Kurulumları
      • Ubuntu Server 24.04 LTS Kurulumu
      • Ubuntu için Güncel Docker Engine Kurlumu
    • Güvenlik Operasyonları Merkezi Nedir?
    • Honeypot (Bal Küpü)
    • IoT Güvenliği Nedir?
    • ShellShock Exploit
    • Yük Dengeleyici (Load Balancer) Nedir?
Powered by GitBook
On this page
  • Cross Site Request Forgery (CSRF)
  • CSRF Zafiyetine Karşı Alınabilecek Önlemler

Was this helpful?

  1. WEB GÜVENLİĞİ

Cross Site Request Forgery (CSRF)

PreviousCross Origin Resource SharingNextCyber Kill Chain

Last updated 4 months ago

Was this helpful?

Cross Site Request Forgery (CSRF)

İnternetin yaygınlaştığı bu günlerde e-ticaret de insanlar için olmazsa olmaz haline geldi. E-ticaret sayesinde alıcılar, istedikleri ürüne daha kolay, daha hızlı ve daha uygun fiyata ulaşabilirler. Satıcılar ise daha geniş bir kitleye ulaşabilir, rekabet güçlerini artırabilir ve işletme maliyetlerini azaltabilirler.

E-ticaretin önemi kadar, web sitelerinin güvenliği de çok önemlidir. Çünkü e-ticaret siteleri, alıcıların kişisel ve finansal bilgilerini saklar ve işler. Bu bilgilerin korunması, hem alıcıların hem de satıcıların haklarını ve itibarlarını korumak için gereklidir.

Web siteleri, hem kullanıcılara daha iyi hizmet sunabilmek için hem de daha fazla satış yapabilmek için çerez (cookie) dediğimiz verileri kullanır. Çerezler, web sitesine girdiğimizde bize özel ayarları saklar. Çerezler kimlik bilgileri gibi değerli veriler sakladığı için güvenlik açısından önemlidir.

CSRF zafiyeti, saldırganın, kullanıcının oturum açtığı bir web uygulamasına, kullanıcının isteği dışında istek göndermesine neden olan bir güvenlik açığıdır. Saldırgan, kullanıcıyı kendi hazırladığı zararlı bir web sitesine yönlendirir veya bir bağlantıya tıklattırır. Bu web sitesi, kullanıcının farkında olmadan web uygulamasına istek gönderir. Bu istek, kullanıcının tarayıcısında saklanan cookieleri de içerir. Web uygulaması, cookieleri doğrulayarak isteği kullanıcının yaptığını varsayar ve isteği işler. Böylece saldırgan, kullanıcının adına web uygulamasında izinsiz işlem yapabilir.

Örneğin, kullanıcı bir web sitesine girdi ve farklı bir sayfaya erişmek istiyor. Kullanıcıya web sitesinden “Bu web sitesi çerezlerden yararlanmak istiyor. Onaylıyor musunuz?” bildirimi geliyor. Kullanıcı bildirimi onayladığında çerezleri kabul ettiğini varsayıyor. Eğer bu sitede CSRF zafiyeti var ise ve bir saldırgan bunu kullanıyorsa, çerezleri onaylayan kullanıcının şifresini ve kullanıcı adını ele geçirebilir.

Zafiyetin pekişmesi için Portswigger’daki labdan bir örnek çözelim. Labdaki senaryomuzda kullanıcının web sitesinde kayıtlı olan e-mail adresini değiştirmeyi hedefliyoruz. İlk olarak update email butonuna tıklayarak isteği yakalıyoruz.

Burp Suite toolunun bize verdiği özelliği kullanarak yakalanan isteği HTML kodlarına çevirelim. Bunun için engagement tools seçeneklerinden “Generate CSRF PoC” seçeneğini seçiyoruz.

Oluşturulan HTML kodunda daha önce belirlemiş olduğumuz e-mail adresini değiştirerek kopyalamış olduğumuz kodu HTML uzantılı bir dosya yardımıyla hedefe iletiyoruz.

Böylelikle labı tamamlamış oluyoruz.

CSRF Zafiyetine Karşı Alınabilecek Önlemler

Web uygulamalarının güvenliğini sağlamak için en güvenli yöntem token kullanmaktır. Token, web uygulamasına gelen istekleri doğrulamak için kullanılan rastgele bir değerdir. Token, web uygulaması tarafından üretilir ve kullanıcıya özeldir. Kullanıcı, web uygulamasına istek gönderirken, token değerini de gönderir. Web uygulaması, gelen istekteki token değerini, kullanıcının oturumundaki token değeri ile karşılaştırır. Eğer değerler uyuşursa, istek kabul edilir. Eğer değerler uyuşmazsa, istek reddedilir. Bu sayede saldırganların, kullanıcının adına sahte istekler göndermesi engellenir. Token kullanımıyla ilgili aşağıda bir kod bloğu örneği göstereceğim.

<?php
session_start();
$token = bin2hex(random_bytes(32));
$_SESSION['token'] = $token;
?>
<form action="siberv4t4n.php" method="POST">
  <input type="hidden" name="token" value="<?php echo $token; ?>">
  <input type="text" name="name" placeholder="Adınız">
  <input type="email" name="email" placeholder="E-posta adresiniz">
  <input type="submit" value="Gönder">
</form>
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
  $form_token = $_POST['token'];
  $session_token = $_SESSION['token'];
  if ($form_token == $session_token) {
    echo "Form başarıyla gönderildi.";
  } else {
    echo "CSRF saldırısı tespit edildi!";
  }
}
?>
🔒
ilkerbingoll59 - OverviewGitHub
Bu yazı İlker Bingöl tarafından hazırlanmıştır.
Logo