D P U S E C

XSS Zafiyeti ve Türleri

Merhabalar, ben Eren Can Özmen, sizlere bu yazımda XSS zafiyeti nedir ? türleri nelerdir ? anlatmaya çalışacak ve bu türler üzerinden bazı case’ler gösteceğim. Anlatcak olduğum case’lere bu site üzerinden ulaşabilirsiniz: http://159.89.22.234 . İyi okumalar dilerim.

İlk Adım VPS Deploy Etme

Öncelikle, VPS’i deploy edeceğiniz platformu seçmek gerekiyor. Ben, tamamen bir arkadaşımın tavsiyesi üzerine Digital Ocean’dan VPS deploy ettim. 2 ay kadar kullanabileceğiniz 200 dolar ücretsiz bakiye veriyor. Kurulum işleminde ise sağ üstten “Create” tuşuna basıp basitçe VPS deploy edebilirsiniz. Burada dağıtım olarak LAMP seçmeniz sizin için kolaylık sağlayacaktır. LAMP, size Apache Server, MySQL gibi işinize yarayacak yazılımları paket halinde sunan bir framework’tür.

Nedir Bu XSS

Kısaca cevap verecek olursam, açılımı Cross-Site Scripting olup, anlamı siteler arası komut dosyası çalıştırma denebilir. Zafiyet, kullanıcı girdilerinin doğrulanmaması veya filtrelenmemesi ve diğer kullanıcıların bu girdiler sonucu mağdur olmasıdır. Genelde JavaScript kodlarından kaynaklanan bu durum, çerezlerin ve kredi kartı bilgilerinin çalınması, oturum bilgilerinin ele geçirilmesi gibi ciddi sonuçlar doğurabilmektedir. Genel anlamda üç kategoriye ayrılabilirler:

  • – Reflected XSS
  • – Stored XSS
  • – DOM-based XSS
 

Reflected XSS

Zararlı kodların bir veritabanı vb. bir yapıda saklanmadığı, doğrudan tetiklendiği XSS türüdür. Saldırıda, saldırgan zararlı kodu web sitesine gönderir ve bu kod hemen kullanıcıya geri yansıtılır. Kabaca bir örnekle, normal bir insanın canı lahmacun çeker ve arama yerine girerek bu aramayı yapar. Ancak kötü niyetli bir kişi arama yerine zararlı kod yazar ve ardından ulaştığı sonucu size gönderir. Bir tıkla istersen 🙂 https://tls.tc/R81dS

Reflected XSS GET isteği ile:

Görüleceği üzere herhangi bir filtreleme veya doğrulama yok. Bu ne demek? Arama yerine yazacağınız zararlı kod çalışacak. Basitçe, input olarak <script>alert(1)</script> yazabilirsiniz ya da yaratıcı biriyseniz baya eğlenebilirsiniz. Bu örnekte GET isteği ile bunu gerçekleştirdim. Farklı durumlara bakacak olursak…

Reflected XSS POST isteği ile:

GET isteğinden farklı olarak Farklı olarak POST isteği ile girdiler gönderilir ve işlenir.

Reflected XSS Header ile:

Burada giden isteğe Burp Suit ile giden isteği manipüle edecek olursak ve user-agnet bilgisini javascript kodu ile değiştirirsek tetikleyebilirsiniz.

                                                                               

Stored XSS

Reflected XSS’den farklı olarak, bu sefer yazılan zararlı kodlar bir veritabanında tutulur ve sitede kalıcıdır. Bu tür, en korkunçlarından biridir. Şöyle düşünün, bir kişi bu zafiyeti tespit etti ve söz konusu sayfaya zararlı kodunu enjekte etti. Bundan habersiz ziyaretçilerin hepsi, meşru olan bu siteyi ziyaret ettiklerinde zarar görecekler.Bu kod, kalp emojisini gören herkesin bu tweeti retweet etmesine yol açan bir stored XSS örneğidir.Bunu retweetleyen 40.000 kişi ise sadece bu tweeti gördükleri için zincirleme olarak retweet (ettiler belki daha fazladır). Neyse ki, Andy sadece eğlenmek istemiş.

                                                           
GET Stored XSS
Bu örnek GET isteği ile kullanıcıdan site kullanıcı adını ve mesajını alıyor ve siteye işliyor ardından filtreleme işlemi olmadığı için güvenlik zafiyeti yaşanacak. Reflected’dan farklı olarak, bu girdiler veri tabanına kaydediliyor.
POST Stored XSS
Önceki örnekten farklı olarak, bu sefer POST isteği kullanıyor ardından kullanıcıdan isim ve mesaj bilgisi alıyorum, veri tabanına kaydediyor ve siteye işliyorum.
HEADER STORED XSS
Burada, header üzerinden injection mümkündür. Burp Suite ile araya girip request’e baktığımızda, response’un en altında username ve message bilgisini değiştirip zararlı kodumuzu yazarsak injection işlemini başarıyla tamamlarız.

DOM XSS

DOM Tabanlı XSS (Cross-Site Scripting), geleneksel saldırılarından farklı olarak istemci tarafında gerçekleşir. Bu tür saldırılar doğrudan kullanıcı tarayıcısında çalışır. Zararlı komut dosyaları, web sayfasının Document Object Model’ine (DOM) enjekte edilir.
 
Reflecte ile DOM XSS farkı
Reflected XSS, kullanıcıdan gelen verilerin sunucuya gönderilip anında geri dönmesiyle oluşur. Kullanıcı form doldurur veya URL’deki parametreleri gönderir. Sunucu bu verileri kontrol etmeden geri gönderir ardından tarayıcı bu yanıtı alarak zararlı kodu çalıştırır. DOM XSS ise tamamen istemci tarafında gerçekleşir. Sunucu bu sürece dahil olmaz. Kullanıcı, tarayıcıda URL parametreleri veya diğer giriş yöntemleriyle veri girer. JavaScript bu verileri alır ardından doğrudan DOM üzerinde işlem yapar. Eğer JavaScript bu verileri güvenli işleyemezse, zararlı kod kullanıcı tarayıcısında çalışır.
GET DOM XSS
POST STORED XSS
 
HEADER STORED XSS

Buraya kadar okuduysanız teşekkür ederim. umarım faydalı olabilmişimdir iyi çalışmalar dilerim.

Sosyal Medyada Paylaş