XSS Nedir, Xss Açığı Hakkında Bilgi
Xss nedir, xss açığı nedir, xss saldırısı nasıl yapılır, xss kapatma yolu, xss açığını nasıl kapatabiliriz gibi sorulara gelin hep beraber cevap arayalım.
Xss (Cross Site Scripting) JavaScript ve HTML filtrelerinin eksik olduğu zamanlarda kullanıcının girdileri ile oluşan bir zaafiyettir.
Tam kelime anlamı olarak ise: siteler arası komut çalıştırma / çapraz kod çalıştırma olarak bilinen genelde web uygulamalarında rastlanan, kullanıcıların (saldırganların) tarayıcısında zarar verecek kodları ekleme yaparak oluşan bir saldırıdır.
Javascript, Html ve Css tarayıcı tarafından yorumlanan dillerden olduğu için girdi edilen kod doğrudan diğer kullanıcıları da etkileyebilir ve sisteme ciddi zararlar verebilir !
XSS SALDIRISI – XSS ZAAFİYETİ SÖMÜRME
XSS, en yaygın siber saldırı türlerinden biridir. Kötü amaçlı komut dosyaları genellikle, kurbanın tarayıcısının yürüttüğü JavaScript kodu bitleri biçiminde yapılır. İstismarlar, Java, Ajax ve Köprü Metni Biçimlendirme Dili (HTML) dahil olmak üzere diğer birçok dilde kötü amaçlı yürütülebilir kod içerebilir.
XSS saldırıları ciddi olabilse de, onları etkinleştiren güvenlik açıklarını önlemek nispeten kolaydır.
XSS, bir saldırganın başka bir kullanıcının tarayıcısında kötü amaçlı komut dosyaları yürütmesine olanak tanır. Ancak, kurbana doğrudan saldırmak yerine, saldırgan, kurbanın ziyaret ettiği bir web sitesindeki bir güvenlik açığından yararlanır ve web sitesinin kötü amaçlı komut dosyasını teslim etmesini sağlar.
Örnek bir “dosya upload” kısmında xss açığının .gif şeklinde paylaşımına bakalım:
Saldırganımız bir dosya yükleme scriptine zararlı xss kodlarını gömüyor ve upload ediyor. Karşımıza alert yani xss uyarısı bastırdığını görüyorsunuz. Gelin xss açığının daha derinliklerine inelim.
Xss saldırısı nasıl yapılır?
Xss saldırısı söylediğimiz gibi genellikle input alanlarından yapılmaktadır. Yani girdi elde edilebilen tüm alanlarda yapılır. İnput denilince aklımızda neresi mi geliyor? Bir düşünün bakalım…
İnput alanı bir “search” yani arama kutucuğu olabilir.
Xss saldırısı üyelik sistemi bulunan sistemlerde kullanıcı adı yerine ya da telefon yerine yapılabilir.
En çok xss saldırısı yapılan yer ise iletişim gibi contact formların bulunduğu kısımdır. Hatta wordpress sitelerde olmazsa olmaz eklentilerden “Contact Form 7” eklentisi en az 3 defa XSS Saldırısı yüzünden güncelleme getirmiştir 🙂
Başka neler mi olabilir? Mesela bloglarınızın altında ki yorum kısımları olabilir mi ? Tabii ki.
Yani kısacası sisteminizin her noktasında xss saldırısı yapılabilmektedir.
Bonus Xss Açığı Anlama Yöntemi:
Aşağıda bulunan kodu input alanlarınıza yazdığınızda size “webirinci” yazılı bir kutucuk oluşturuyor mu?
<script>alert(“webirinci”)</script>
Cevabınız evet ise sisteminizde xss açığı, xss zaafiyeti bulunuyor demektir. Yukarıdaki komut xss açığı alert kodu diye geçmektedir.
XSS örnekleri
Spesifik örneklere geçmeden önce önemli bir ayrıma da işaret etmeliyiz. Bazı XSS saldırıları yalnızca bir kez bilgi edinmeyi amaçlar. Bu durumlarda, kurban bilgisayar kötü amaçlı bir komut dosyası yürütür ve çalınan bilgileri saldırgan tarafından kontrol edilen bir sunucuya gönderir.
Bununla birlikte, diğer saldırılar, aşağıdakiler yoluyla tekrarlanan açıklardan yararlanmaya odaklanır:
- Bir kullanıcı oturumunu ele geçirmek ve bilgi toplamak için hesaba giriş yapmak.
- Kimlik avı ve kullanıcı adı ve şifre ile bir hesaba giriş yapmak.
- Kurbanın şifresini değiştirmek. Bu, uygulama eski şifreyi (veya tek seferlik bir kodu) girmek zorunda kalmadan şifrelerin değiştirilmesine veya sıfırlanmasına izin verdiğinde mümkündür.
- Mağdur bunu yapma hakkına sahip olduğunda, yeni bir ayrıcalıklı kullanıcı oluşturmak.
- Bir JavaScript arka kapısı yerleştirme. Bunun için mağdurun sayfa içeriğini düzenleme haklarına sahip olması gerekir. Bu, mağdurun gerekli haklara sahip olması durumunda, sık ziyaret edilen sayfalarda depolanan XSS’yi de içerebilir.
- Kurbanın haklarından yararlanan uygulama saldırıları, WordPress’i (yönetici panelindeki şablon/eklenti düzenleyici aracılığıyla uzaktan kod yürütme [RCE]) ve Joomla’yı (rasgele dosyaların indirilmesi yoluyla RCE) hedef aldı.
XSS 3 FARKLI DALDA İNCELENİR
1-> Reflected XSS
2-> DOM Based XSS
3-> Stored XSS
REFLECTED XSS NEDİR ?
Giriş alanlarına veya url alanlarına yapılan xss saldırısıdır.Bu saldırı sadece saldırgan tarafından görülür ve diğer kullanıcılar bu saldırıyı göremezler. Genellikle reflected xss saldırılarında girdiler veritabanına yazılmaz.
Örnek olarak herhangi bir girdi yazılabilecek url linkine : <script>alert(1)</script> kodu yazarak “1” diye ekrana hata alırız.
DOM BASED XSS NEDİR ?
Dom (Document Object Model) “Belge Nesnesi Modeli” olarak geçmektedir. Yani bir belge içerisinde bulunan nesnelerden kaynaklıdır diyebiliriz bu xss saldırısına. Biraz daha açmak gerekirse: kullandığımız tarayıcılar internetteki sayfaları bil belge olarak görür ve bu sayfaların (belgelerin) içerisinde yer aldığı tüm elemanları da nesne olarak görür. Bu nesnelere örnek vermek gerekirse: resimler, yazılar, formlar, testler gibi tüm elemanlar… Evet bu dom xss bu nesnelere müdahale etmemizi sağlar.
Ancak şunu bilmek de fayda var: DOM tabanlı xss saldırı esnasında HTML kaynağı ve dönen cevap tamamen aynı olacaktır. Çünkü dom xss sayfada bulunmaz – nesne tabanlı xss – sadece runtime esnasında veya sayfaların dom’u incelenirken gözlemlenebilmektedir..
STORED XSS NEDİR ?
Stored xss türünde ise kullanıcının (saldırganın) girdiği zararlı kod veritabanında veya bir sayfada tutulur. Bu kodlar sonrasında bu sayfalar ziyaret edildiğinde çalıştırılmış olur. EN ZARARLI XSS TÜRÜDÜR. Çünkü chrome, firefox gibi bir çok tarayıcı default ayarlarında gerekli önlemleri alamaz. Bu xss türünün genellikle websitelerinin iletişim, kayıt, mesaj formlarında bulunduğunu unutmayalım.
NOT*** : Xss türlerini 2’ye ayıran uzmanlarda vardır. Anlık değişiklik gösteren ya da database, dosya gibi yerlerde tutulan olarak. Ama ben olayın tam anlamıyla anlanması için 3’e ayrılması taraftarıyım.
Xss türlerinden bahsettiğimize göre olayın daha detaylı ve mantığının kavranması gerektiği için Xss ile cookie çalmakdan bahsedeceğim.
XSS İLE COOKİE ÇALMA
Yazımızın başında da söylediğim gibi xss ile javascript çalıştırabiliriz. Yani javascript ile uygulamada-websitesinde neye erişim varsa oraya müdahale edebiliriz. Buna document.cookie nesnesi en iyi örnektir…
** adresine girip üye olduğunuz takdir de size bir çok payloadı hazır halde verir. Burada verdiği “Basic XSS payload” ile bir çok bilgiye ulaşabiliriz. Örnek olması amacıyla bu kodu filtrelenmemiş bir yere atıp yönetici tarafından görüntülendiğin de – çalıştığında – anlık görüntü, cookieler, html kaynak kodu gibi birçok değere ulaşabiliriz ve yönetici yetkisini alabiliriz.
Ama unutulmaması gerekir ki bu site sadece test amaçlı, eğitim amaçlı açılmıştır. Zararlı saldırı girişlerinde üyeliğiniz silinir..
Yukarıda örnek bir kullanıcının cookiesi yani çerezlerinin nasıl xss ile alındığı görünmektedir. PHPSESSID kullanıcının tüm bilgilerini barındırmaktadır. Yani bu kod ile kullanıcı adı ve şifresi olmadan sisteme kolaylıkla giriş yapabilirsiniz.
Cookie nedir başlıklı yazımızda çerezler hakkında daha fazla bilgi edinebilirsiniz.
Bonus : Örnek Xss Açığı
Aşağıdaki örnekler, Positive Research veya MaxPatrol ve PT Application Inspector gibi Positive Technologies güvenlik ürünleri tarafından yapılan otomatik algılamalardan gelmektedir. Önem düzeyleri, güvenlik açığının yayımlanma tarihi itibariyle geçerli olan düzeylerdir.
- Advantech Web Erişimi: CVE-2015-3948
- Severity level: Low
- 8.1’den önceki Advantech WebAccess sürümleri, kimliği doğrulanmış kullanıcılar aracılığıyla rastgele web komut dosyalarının veya HTML’nin uzaktan enjeksiyonuna izin verir. Sonuç olarak, saldırganlar hassas bilgiler elde edebilir.
Xss konusuna genel bir bakış yaptığımızı düşünüyorum bu konuda. İlerleyen günler de daha detaylı makaleleri paylaşacağım. Takip de kalın..
Daha detaylı bilgilendirme için kaynaklar: