Cross-Site Request Forgery (CSRF) Zafiyeti

Yayınlayan
Editör
Yayınlanma tarihi
26-02-2022
Okuma süresi
10 DK

Cross-Site Request Forgery (CSRF) Zafiyeti

 

CSRF (Cross Site Request Forgery) yani Türkçe karşılığı ile Siteler Arası İstek Sahtekarlığı,  herhangi bir web uygulamasında oturum açmış bir kullanıcının oturumunu kullanarak kullanıcının istekleri dışında işlemler yapılmasıdır.

Uygulamaya giden isteklerin hangi kaynaktan ve nasıl gönderildiğinin kontrol edilmeyen sistemlerde bu zafiyet meydana gelir. Saldırganların kullanıcının oturumuna erişebilmeleri için sadece phising saldırılarına gerek yoktur kullanıcının zararlı bağlantıya tıklaması yeterlidir.

Yani günün sonunda saldırgan, son kullanıcının haberi olmadan onun kullandığı uygulamaya farklı işlemler ile müdahale edebilir.

Aşağıdaki örnek, web sitesi sahiplerine yorum yapmak için kullanılan basit bir HTML formu içermektedir.

Cross-Site-Request-Forgery-Zafiyeti-3

Daha sonra blogları görüntüle dediğimde “deneme2” olarak açtığım bloğun eklenmiş olduğunu gördüm

Cross-Site-Request-Forgery-Zafiyeti-4

Şimdi en basit yöntem ile HTML enjeksiyon kullanarak sistemdeki CSRF zafiyetini exploit edebilirim.

Bizden blog mesajı istediği girdi alanına yukarıdaki html form kodlarını ekledim ve en aşağı satıra javascript ile bir event yerleştirdim eventin görevi fare her konu üzerine geldiğinde kendi kendine başlık3 adında bir blog daha açacak.

Cross-Site-Request-Forgery-Zafiyeti-5

Yukarıda görüldüğü üzere italik metin parametresi arasına javascript kodumuzu ekledik bu kısımdaki gerçekleştirilen işlem ise fare her “Zafiyet yaratacak başlığımız burada”  başlığına geldiğinde tıklanmasına gerek kalmadan sistemde form ID değeri f olan formu post isteği ile yollayacak böylelikle sürekli başlık3 adında yeni blog oluşacak.

Cross-Site-Request-Forgery-Zafiyeti-5

Blog başlığı üzerine gelindiğinde aşağıda görüldüğü gibi sisteme post metodu ile isteği yolluyor.

Cross-Site-Request-Forgery-Zafiyetİ-6

Blogları görüntülediğimizde yine üzerine geldiğimizde aynı şekilde post metodu ile istek yapıyor.

Cross-Site-Request-Forgery-Zafiyeti-7

Burada token güvenliğinin sağlanmamasından, girdi alanının kontrol edilmemesinden kaynaklı CSRF zafiyetini istismar edebilir hale geliyoruz.  Mağdurlar bloğu ziyaret etmek istediğinde blog eklemek yerine oturumlarını çalabilecek daha tehlikeli kodlar çalıştırılabilir.

CSRF Zafiyetinin Önlenmesi

CSRF zafiyetinin hem kullanıcı hem sistem tarafında alınabileceği önlemleri vardır.

Kullanıcı Tarafındaki Önlemler
  • En önemli ve sürekli ifade edilen önlemlerden bir tanesi olan kaynağın güvenliği doğrulanmamış bağlantılara tıklamamak gerekmektedir. Kimden geldiğinden emin olamadığınız maillerdeki bağlantılara tıklamayınız.
  • Bağlantıları zararlı analiz platformlarında taratarak ve domaini kontrol ederek giriş sağlayınız.
  • Ön belleğe verileri düzenli olarak temizleyiniz. (çerez, site verileri)
Sistem Tarafındaki Önlemler
  • Kullanıcıların gerçekleştirdiği talepler POST metodu ile alınmalıdır.
  • Kullanıcıya özel olarak üretilmiş tokenler ile CSRF in önüne geçilmiş olur. Bu token her işlemde tekrar üretilir ve formda saklanır böylelikle saldırganın bu tokeni tahmin etmesi imkansız hale gelir. Bu kısımda önemli olan şey ise token üretirken doğru bir patern ve güvenilir kriptografi yöntemleri kullanılmasıdır. Birden fazla token yöntemi oluşturma yöntemi vardır.
CSRF Token Nedir?

İlk olarak ifade etmek gerekirse CSRF zafiyetinin önlenmesi açısından en önemli ve popüler yöntemdir.  CSRF Token yöntemi temelde benzersiz ve gizli bir değer alarak formlara gömülen ve bu sayede kullanıcının başarıyla oturum açma işleminden sonra oluşturulan değerdir. Bu değer patern yöntemlerine göre farklı şekillerde saklanabilir. Aşağıda bununla ilgili örnek eklenmiştir.

Cross-Site-Request-Forgery-Zafiyeti-8

Token Patern Yöntemleri
1.CSRF Synchronizer Token Pattern Yöntemi

Her istek için gizli ve benzersiz değer yani token tüm formlara gömülür ve sunucu tarafında işlem yapılır. Genel olarak kullanılan token yöntemidir. Bir giriş formunda post isteği ile kimlik bilgileri gönderilir, kullanıcı başarıyla oturum açarsa benzersiz bir oturum kimliği ve token oluşturulur. Oluşturulan token istemci tarafında çerezlerde saklanır, aynı zamanda sunucu tarafında da tutulur.

Özellikleri
  • Her oturum için özel ve benzersizdir.
  • Yüksek karakter sayısı ile rastgele değer alarak tahmin edilerek bypass edilmesinin önüne geçilir.
  • Doğrulama işleminde başarısız olunduğunda işlem reddedilir.
2.Double Submit Cookie Pattern Yöntemi

Çift çerez gönderme yöntemi hem çerezde hemde istek parametresinde rastgele bir değer gönderme olarak tanımlanabilir. Kullanıcıların oturum açma talebi sistemde doğrulandığında sistem istemci tarafında oturum ID si oluşturur ve çerezlere kaydeder. Bunun yanında token oluşturur ve kullanıcının makinesinde ayrı bir çerez olarak saklar. Sunucunun bu çerezi kaydetmesi gerekmez. Çerezler httponly olarak etiketlenemez.

Bu çerez, istemcilerin buna erişmesi gerektiği için HttpOnly olarak ayarlanamaz, sunucu bu oturum için oluşturulan belirteç kaydına sahip değildir.

Ardından kullanıcı güvenli bir form gönderdiğinde bu token girdi alanlarına gömülür.

Sunucu, form parametresi olarak gönderilen tokeni, çerez değerine bakarak doğrular ve tamamlanacak işlemi yetkilendirir. Çapraz kökenli bir saldırgan, aynı kökenden gelen ilkeye göre sunucudan gönderilen verileri okuyamaz veya çerez değerlerini değiştiremez.

Aşağıda Double Submit Cookie Pattern Yönteminin çalışma mantığı ile ilgili şema eklenmiştir.

Cross-Site-Request-Forgery-Zafiyeti-10

Daha önce iki farklı cookie’nin tutulduğunu söylemiştim bu 2 farklı cookie aşağıdaki gibi saklanmaktadır.

Cross-Site-Request-Forgery-Zafiyeti-11

İki Pattern Yönteminin Karşılaştırılması

İki yöntemde de tasarım ve güvenlik sorunları mevcuttur. Two Cookie pattern yöntemi  Synchronizer Token Pattern  yönteminden daha hafif ve kullanışlıdır.

Double Submit Cookie Pattern Yönteminin Bypass Edilmesi

Bu yöntemin ne olduğunu yukarda anlatmıştım. Şimdi ise bu yöntemin nasıl bypass edilebileceğine değinelim.

Çerez Tespiti

Eğer saldırgan CSRF çerezlerini ayarlayabilirse bypass işlemini gerçekleştirebilir. Çerez tespitinin birden fazla yolu vardır bunlar;

  • Subdomainleri exploit etme.
  • Ortadaki adam saldırısı ile HTTP bağlantıların takibi
Subdomainleri Exploit Etme

İlk atak vektörümüz kötü amaçlarla subdomainlerin kullanılmasıdır. Örneğin example.com domaininin bir subdomainini saldırganların ele geçirdiğini varsayalım. Bu durumda saldırganlar aslında ana domain için çerezleri ayarlayabilir ve bu durumda sunucu tarafında “set cookie” değerini yanıtlayabilir ve kabul edebilirler.

Bu çerezlerin yanıtlanması için belli bir sayfa kullanılır aşağıda görüldüğü üzere submit sayfası ile işlem yapıyor.

Cross-Site-Request-Forgery-Zafiyeti-12

Saldırganlar aşağıda görüldüğü üzere submit adresine gönderilen çerezleri kontrol edebilir ve izleyebilir bir hale geldi.

Cross-Site-Request-Forgery-Zafiyeti-13

Tüm subdomainleri kontrol etmek güvenliği tam olarak sağlamaz çünkü ;

  1. Herhangi bir subdomainde bulunan XSS zafiyetinden yararlanılabilir. Örnek vermek gerekirse aşağıdaki payload yardımıyla CSRF zafiyeti tetiklenebilir.

  1. Çerezler meta tagleri kullanarak oluşturulup kullanılabildiği için meta taglari yardımıyla zafiyet yine tetiklenebilir.

    

Man İn The Middle Saldırısı İle Çerez Tespiti

Saldırganlar çerezlerin üzerine kendi tokenlerini yazabilirler. HTTP ile HTTPS için çerezler oluşturabilir yani güvenli çerezlerin üzerine yazma işlemi gerçekleştirebilirler.

Saldırı Nasıl İşler?

Aşağıya çalışma mantığı şeması eklenmiştir.

Cross-Site-Request-Forgery-Zafiyeti-14

Bugün Cross Site Request Forgery yani CSRF zafiyetinin ortaya çıkma nedenlerinden başlayarak, alınabilecek önlemler, önlem paternleri ve zafiyetin istismarı gibi önemli konu başlıklarını işledik.

Diğer Blog Yazıları_

Sosyal Medya Kullanımının Riskleri
Sosyal Medya Kullanımının Riskleri
Infraskope Server ve Özellikleri
Infraskope Server ve Özellikleri
Kritik Sunucular Üzerindeki Aktivitelerin Loglanması
Kritik Sunucular Üzerindeki Aktivitelerin Loglanması
Kurumlarda Ağ Güvenlik Stratejileri
Kurumlarda Ağ Güvenlik Stratejileri
WPA-WPA2 Güvenlik Standartlarına Yönelik Saldırı: KRACK (KEY-REINSTALLATION-ATTACK)
WPA-WPA2 Güvenlik Standartlarına Yönelik Saldırı: KRACK (KEY-REINSTALLATION-ATTACK)
Log Yönetiminde Ajanlı/Ajansız Çözümler
Log Yönetiminde Ajanlı/Ajansız Çözümler
Herkesin aklındaki soru: Yapay Zeka Nedir?
Herkesin aklındaki soru: Yapay Zeka Nedir?
Discovery of DLL Hijack on Trend Micro AntiVirus+ | CVE-2018-18333
Discovery of DLL Hijack on Trend Micro AntiVirus+ | CVE-2018-18333
Web Cache Poisoning
Web Cache Poisoning
XML EXTERNAL ENTITY INJECTION AND OOB (OUT-OF-BAND) DATA RETRIEVAL
XML EXTERNAL ENTITY INJECTION AND OOB (OUT-OF-BAND) DATA RETRIEVAL
ARP Poisoning
ARP Poisoning
Cross-Site Request Forgery (CSRF) Zafiyeti
Cross-Site Request Forgery (CSRF) Zafiyeti
SSRF (Server Side Request Forgery)
SSRF (Server Side Request Forgery)
BlueBorne
BlueBorne
Server Side Template Injection Nedir?
Server Side Template Injection Nedir?
Linux Restricted Shell Atlatma Teknikleri
Linux Restricted Shell Atlatma Teknikleri
Discovery of Sandbox Escape on Comodo Container(Antivirus&Firewall)
Discovery of Sandbox Escape on Comodo Container(Antivirus&Firewall)
SDR-Sharp Kullanımı
SDR-Sharp Kullanımı
Log Yönetimi | Log Management | Veritabanı Log | Siem
Log Yönetimi | Log Management | Veritabanı Log | Siem
Cyber Kill Chain, Bir Siber Saldırının Yaşam Döngüsü
Cyber Kill Chain, Bir Siber Saldırının Yaşam Döngüsü
Phishing Nedir?
Phishing Nedir?
“GOLD” Affix Phishing Attack
“GOLD” Affix Phishing Attack
Sızma Testi ve Ödül Avcılığı Hizmetleri
Sızma Testi ve Ödül Avcılığı Hizmetleri
Güvenilir Olarak CAPTCHA Yapılandırılması
Güvenilir Olarak CAPTCHA Yapılandırılması
Basit Kriptolojiden Günümüze Evrilişi
Basit Kriptolojiden Günümüze Evrilişi
Dosya Sistem Analizinin Önemi
Dosya Sistem Analizinin Önemi
HTTP Request Smuggling (HTTP İstek Kaçakcılığı) Nedir?
HTTP Request Smuggling (HTTP İstek Kaçakcılığı) Nedir?
KVKK Kapsamında Veri Keşfi Maskeleme ve Şifreleme
KVKK Kapsamında Veri Keşfi Maskeleme ve Şifreleme
Sosyal Medya Kullanımının Riskleri
Sosyal Medya Kullanımının Riskleri
Sızma (Penetrasyon) Testi Nedir?
Sızma (Penetrasyon) Testi Nedir?
Start Up Kültürü
Start Up Kültürü
Sigma Kuralları ile SIEM Ürünlerinde Tehdit Avı
Sigma Kuralları ile SIEM Ürünlerinde Tehdit Avı
Kritik Altyapılar ve SCADA Güvenliği
Kritik Altyapılar ve SCADA Güvenliği
Zararlı Yazılım Analiz Teknikleri
Zararlı Yazılım Analiz Teknikleri
Uzaktan Çalışma Modellerinde Siber Güvenlik Riskleri
Uzaktan Çalışma Modellerinde Siber Güvenlik Riskleri
Pandemi Sürecinde Siber Güvenlik Riskleri
Pandemi Sürecinde Siber Güvenlik Riskleri
SOC Nedir ve SOC Merkezleri Nasıl Çalışır?
SOC Nedir ve SOC Merkezleri Nasıl Çalışır?
PHISHING Hakkında Her şey
PHISHING Hakkında Her şey
Sosyal Mühendislik Nedir?
Sosyal Mühendislik Nedir?
Siber Hijyen
Siber Hijyen
Adli Bilişim (Digital Forensic) Nedir?
Adli Bilişim (Digital Forensic) Nedir?
DHCP Spoofing Saldırısı Nedir, Nasıl Yapılır?
DHCP Spoofing Saldırısı Nedir, Nasıl Yapılır?
FAIL2BAN İLE SSH BRUTE FORCE SALDIRILARINI ÖNLEME
FAIL2BAN İLE SSH BRUTE FORCE SALDIRILARINI ÖNLEME
BULK EXTRACTOR ARACIYLA DİSK İNCELEME
BULK EXTRACTOR ARACIYLA DİSK İNCELEME
SolarWinds Vaka Analizi
SolarWinds Vaka Analizi
Frida ile SSL Pinning Bypass
Frida ile SSL Pinning Bypass
COOKİE Nedir? Nasıl Çalışır?
COOKİE Nedir? Nasıl Çalışır?
Bilgi Güvenliği Test ve Değerlendirmeleri Teknik Kılavuzu
Bilgi Güvenliği Test ve Değerlendirmeleri Teknik Kılavuzu
Dridex Bankacılık Trojanı Teknik Analiz Raporu (TR)
Dridex Bankacılık Trojanı Teknik Analiz Raporu (TR)
Adwind Rat Technical Analysis Report (ENG)
Adwind Rat Technical Analysis Report (ENG)
SOC Nedir, Firmalar İçin Neden Önemlidir?
SOC Nedir, Firmalar İçin Neden Önemlidir?
Blockchain Nedir?
Blockchain Nedir?
İşlemcilerin Koruma Mekanizması ve Koruma Mekanizmasının Atlatılması
İşlemcilerin Koruma Mekanizması ve Koruma Mekanizmasının Atlatılması
Active Directory Güvenlik İpuçları
Active Directory Güvenlik İpuçları
Nisan 2022 Siber Güvenlik Bülteni
Nisan 2022 Siber Güvenlik Bülteni
Mavi Takım Üyeleri İçin Windows Core Process
Mavi Takım Üyeleri İçin Windows Core Process
Kişiler İçin Bilgi Güvenliği Rehberi
Kişiler İçin Bilgi Güvenliği Rehberi
DDoS Nedir?
DDoS Nedir?
C Dilinde Dosya Yönlendirmeleri (IO Redirection)
C Dilinde Dosya Yönlendirmeleri (IO Redirection)
Microsoft Teams — Cross Site Scripting (XSS) Bypass CSP Report
Microsoft Teams — Cross Site Scripting (XSS) Bypass CSP Report
Siber İstihbarat ve Siber Tehdit İstihbaratı
Siber İstihbarat ve Siber Tehdit İstihbaratı
JWT Saldırıları
JWT Saldırıları
CVE-2022–36446 — Webmin 1.996 — Remote Code Execution (RCE — Authenticated) During Install New Packages
CVE-2022–36446 — Webmin 1.996 — Remote Code Execution (RCE — Authenticated) During Install New Packages