[TR] Cross-site scripting Nedir?

Categories: Siber Güvenlik, web uygulama güvenliği

Cross-site scripting (XSS olarak da bilinir) zafiyeti, client-side bir kod injection zafiyetidir. Uzun yıllardır OWASP Top 10’da bulunmaktadır. Çok önemsenmeyen bir zafiyet gibi dursada tüm web saldırılarının %12’sini Cross-site scripting zafiyeti oluşturur ve farklı durumlarda kritik etkileri bulunmaktadır. Hâlâ Facebook, Twitter, Paypal gibi bir çok büyük firmada Cross-site scripting zafiyetine rastlanmaktadır.

Saldırganlar, Cross-site scripting zafiyetini kullanarak, website kullanıcılarının tarayıcılarında birtakım zararlı kodlar çalıştırabilir. Bunun sonucunda saldırgan, farklı bir domain üzerinden(aynı da olabilir), hedef kişiye ait, oturum bilgileri, tarayıcı bilgileri ve bunlar gibi birtakım hassas bilgileri ele geçirebilir.

Peki Cross-site scripting Zafiyeti Nasıl Çalışır?

1.Adım#: Saldırganlar, belirlediği hedef için, zararlı bir script dosyası hazırlarlar.

2.Adım#: Saldırganlar, oluşturdukları script dosyasını birtakım payloadlar ile bu script dosyasını hedef siteye yerleştirirler. Bunu çoğunlukla javascript kodları ile yaparlar, fakat farklı yöntemleri de bulunmakta ve bunun için farklı zafiyetler kullanılmakta.

3.Adım#: Saldırganlar siteye yerleştirdikleri zararlı script dosyasıyla kullanıcıyı etkileşime sokmak için bir yol belirler. Örnek olarak link’e tıklandığında çekiliş hakkı sağlanması gibi.

Cross-site scripting Zafiyeti Türleri Nelerdir?

Cross-site scripting Zafiyeti kendi içinde 3’e ayrılır:

# Reflected XSS: Kullanıcıdan alınacak olan verinin girildiği alana zararlı kod yazılarak gerçekleştirilen Cross-site scripting türüdür. Çoğu zaman kullanıcı durumun farkında olmaz. Kullanıcıya ait hassas veriler ele geçirilebilir.

# Stored XSS: Adından da anlaşılacağı gibi, Reflected XSS’den farklı olarak, saldırgan zararlı kodu zafiyetli site içine kalıcı olarak ekleyebilir. Örnek verecek olursak;

“?uyeAdi=” adlı bir parametreye zararlı kod girersek, girdiğimiz zararlı kod çok yüksek ihtimal veritabanına işlenecektir. ve biz ne zaman zararlı kodu girdiğimiz kullanıcının sayfasını ziyaret edersek o zaman Cross-site scripting zafiyetinden etkilenmiş oluruz.

Veya bir blog sayfasında olduğumuzu düşünelim ve yazılan yazının altında düşüncelerimizi ifade edebileceğimiz bir yorum alanı olsun. Biz burada düşüncelerimiz yerine zararlı kodlaları yazdığımızda, yorumumuz veritabanı veya farklı yöntemlerle sayfada kalıcı hâle gelecek ve yazılan yazıyı okumak isteyen herkes Cross-site scripting zafiyetinden etkilenecek.

# DOM Based XSS: DOM’lardan kaynaklanan XSS türüdür. Alınan verinin kontrol edilmeden DOM ile dışarıya yansıtılmasıyla oluşur. En tehlikeli XSS türü olarak geçer.

Cross-site scripting Zafiyeti Ne Tür Zararlara Yol Açar?

# Saldırganlar, hedef kullanıcıya ait oturum bilgilerini ele geçirebilir.
# Saldırganlar, yetkisiz olarak kullanıcılara ait verileri okuyabilir.
# Saldırganlar, hedef kullanıcının tarayıcısında keylogger çalıştırabilir.
# Ve çok daha fazlası…

Cross-site scripting Zafiyeti İçin Hangi Önlemler Alınmalıdır?

1# Blacklist yöntemi kullanılabilir;
– alert
– script
– prompt
– javascript
– onerror, onload
– confirm …

2# Kaçış Dizilerini Ve Encode Yöntemlerini kullanın;
– Tırnak(‘) işaretinden sonra Ters slash(\) işareti kullanmak gibi.
– <script> olarak girilen değeri &#x3C;script&#x3E; şeklinde encode ederek kullanın.

3# Büyük-küçük harf kullanımını kontrol edin;
– <script> olarak engellenen tag’i <ScrIpT> şeklinde yazarak blacklist bypass edilebilir.

4# HTTP Only Flag’ini kullanın;
– Bu sayede zararlı script kodları çerez bilgilerine erişemez.

5# Content Security Policy(CSP) Kullanın ve kendinize güvenilir kaynaklar seçin;
– Bu sayede belirlediğiniz kaynaklar dışında bir kaynak size zarar veremez.

Yazan: Arif Emre Demir:

Kaynakça:
1. https://owasp.org/www-project-top-ten/
2. https://portswigger.net/web-security/cross-site-scripting
3. https://omercitak.com/dom-based-xssi-anlamak/
4. https://www.acunetix.com/websitesecurity/cross-site-scripting/
5. https://owasp.org/www-community/attacks/xss/

»

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir