1. Anasayfa
  2. Astronomi

XSS Nedir? Nerede Kullanılır?

XSS Nedir? Nerede Kullanılır?
1

XSS Nedir? Siteler arası komut dosyası çalıştırma (XSS olarak da bilinir), bir saldırganın, kullanıcıların savunmasız bir uygulamayla olan etkileşimlerini tehlikeye atmasına olanak tanıyan bir web güvenlik açığıdır. Bir saldırganın, farklı web sitelerini birbirinden ayırmak için tasarlanmış aynı kaynak politikasını atlatmasına olanak tanır. Siteler arası komut dosyası çalıştırma güvenlik açıkları normalde bir saldırganın kurban kullanıcı gibi görünmesine, kullanıcının gerçekleştirebileceği tüm eylemleri gerçekleştirmesine ve kullanıcının herhangi bir verisine erişmesine olanak tanır. Kurban kullanıcı uygulama içinde ayrıcalıklı erişime sahipse, saldırgan uygulamanın tüm işlevleri ve verileri üzerinde tam kontrol sahibi olabilir.

XSS nasıl çalışır?

Siteler arası komut dosyası oluşturma, güvenlik açığı bulunan bir web sitesini, kullanıcılara kötü amaçlı JavaScript döndürmesi için manipüle ederek çalışır. Kötü amaçlı kod bir kurbanın tarayıcısında yürütüldüğünde, saldırgan uygulama ile etkileşimini tamamen tehlikeye atabilir.

XSS konsept kanıtı

Kendi tarayıcınızın bazı rastgele JavaScript’leri yürütmesine neden olan bir yük enjekte ederek çoğu XSS güvenlik açığı türünü onaylayabilirsiniz. İşlevi bu amaç için kullanmak uzun zamandır yaygın bir uygulamadır alert()çünkü kısa, zararsızdır ve başarıyla çağrıldığında gözden kaçırılması oldukça zordur. Aslında, XSS laboratuvarlarımızın çoğunu, alert()simüle edilmiş bir kurbanın tarayıcısını çağırarak çözersiniz.

Ne yazık ki, Chrome kullanıyorsanız küçük bir aksaklık var. 92 sürümünden itibaren (20 Temmuz 2021), çapraz kaynaklı iframe’lerin alert(). Bunlar, daha gelişmiş XSS saldırılarından bazılarını oluşturmak için kullanıldığından, bazen alternatif bir PoC yükü kullanmanız gerekir. print()Bu senaryoda, işlevi öneririz . Bu değişiklik ve neden hoşlandığımız hakkında daha fazla bilgi edinmek istiyorsanız print(), konuyla ilgili blog yazımıza göz atın.

Laboratuvarlarımızdaki simülasyon kurbanı Chrome kullandığından, etkilenen laboratuvarları kullanarak da çözülebilecekleri şekilde değiştirdik print(). Bunu ilgili yerlerde talimatlarda belirttik.

XSS saldırı türleri nelerdir?

Üç ana XSS saldırısı türü vardır. Bunlar:

  • Kötü amaçlı komut dosyasının geçerli HTTP isteğinden geldiği reflected XSS .
  • Saklanan XSS , burada kötü amaçlı komut dosyası web sitesinin veritabanından gelir.
  • Güvenlik açığının sunucu tarafı kodu yerine istemci tarafı kodunda bulunduğu DOM tabanlı XSS ​​.

Yansıyan siteler arası komut dosyası oluşturma

Reflected XSS , siteler arası komut dosyası oluşturmanın en basit çeşididir. Bir uygulama bir HTTP isteğinde veri aldığında ortaya çıkar ve bu verileri güvenli olmayan bir şekilde anında yanıta dahil eder.

Yansıtılan bir XSS güvenlik açığının basit bir örneği :

https://insecure-website.com/status?message=All+is+well.
<p>Status: All is well.</p>

Uygulama, verileri başka bir şekilde işlemez, bu nedenle bir saldırgan aşağıdaki gibi bir saldırıyı kolayca oluşturabilir:

>/*+Bad+stuff+here...+*/</script>
<p>Status: <script>/* Bad stuff here... */</script></p>

Kullanıcı, saldırgan tarafından oluşturulan URL’yi ziyaret ederse, saldırganın komut dosyası, kullanıcının uygulama ile oturumu bağlamında kullanıcının tarayıcısında yürütülür. Bu noktada, komut dosyası herhangi bir eylemi gerçekleştirebilir ve kullanıcının erişimi olan herhangi bir veriyi alabilir.

Depolanan siteler arası komut dosyası

Saklanan XSS (kalıcı veya ikinci dereceden XSS olarak da bilinir), bir uygulama güvenilmeyen bir kaynaktan veri aldığında ve bu verileri daha sonraki HTTP yanıtlarına güvenli olmayan bir şekilde dahil ettiğinde ortaya çıkar.

Söz konusu veriler HTTP istekleri aracılığıyla uygulamaya gönderilebilir; örneğin, bir blog gönderisine yapılan yorumlar, bir sohbet odasındaki kullanıcı takma adları veya bir müşteri siparişindeki iletişim bilgileri. Diğer durumlarda, veriler diğer güvenilmeyen kaynaklardan gelebilir; örneğin, SMTP üzerinden alınan mesajları görüntüleyen bir web posta uygulaması, sosyal medya gönderilerini görüntüleyen bir pazarlama uygulaması veya ağ trafiğinden gelen paket verilerini görüntüleyen bir ağ izleme uygulaması.

İşte saklanan bir XSS güvenlik açığının basit bir örneği . Bir mesaj panosu uygulaması, kullanıcıların diğer kullanıcılara görüntülenen mesajları göndermesine izin verir:

<p>Hello, this is my message!</p>

Uygulama, verilerin başka bir şekilde işlenmesini gerçekleştirmez, bu nedenle bir saldırgan, diğer kullanıcılara saldıran bir mesajı kolayca gönderebilir:

<p><script>/* Bad stuff here... */</script></p>

DOM tabanlı siteler arası komut dosyası oluşturma

DOM tabanlı XSS ​​( DOM XSS olarak da bilinir ), bir uygulama, genellikle verileri DOM’a geri yazarak, güvenilmeyen bir kaynaktan gelen verileri güvenli olmayan bir şekilde işleyen bazı istemci tarafı JavaScript içerdiğinde ortaya çıkar.

Aşağıdaki örnekte, bir uygulama, bir giriş alanındaki değeri okumak ve bu değeri HTML içindeki bir öğeye yazmak için JavaScript kullanır:

var search = document.getElementById('search').value;
var results = document.getElementById('results');
results.innerHTML = 'You searched for: ' + search;

Saldırgan giriş alanının değerini kontrol edebiliyorsa, kendi komut dosyalarının yürütülmesine neden olan kötü amaçlı bir değeri kolayca oluşturabilir:

You searched for: <img src=1 onerror='/* Bad stuff here... */'>

Tipik bir durumda, giriş alanı, bir URL sorgu dizesi parametresi gibi HTTP isteğinin bir kısmından doldurulur ve saldırganın, yansıtılan XSS ile aynı şekilde kötü amaçlı bir URL kullanarak bir saldırı gerçekleştirmesine olanak tanır.

XSS ne için kullanılabilir?

Siteler arası komut dosyası çalıştırma güvenlik açığından yararlanan bir saldırgan genellikle şunları yapabilir:

  • Mağdur kullanıcı olarak taklit edin veya taklit edin.
  • Kullanıcının gerçekleştirebileceği herhangi bir eylemi gerçekleştirin.
  • Kullanıcının erişebildiği tüm verileri okuyun.
  • Kullanıcının oturum açma kimlik bilgilerini yakalayın.
  • Web sitesinin sanal tahrifini gerçekleştirin.
  • Web sitesine truva atı işlevselliği enjekte edin.

XSS güvenlik açıklarının etkisi – XSS Nedir?

Bir XSS saldırısının gerçek etkisi genellikle uygulamanın doğasına, işlevselliğine ve verilerine ve güvenliği ihlal edilmiş kullanıcının durumuna bağlıdır. Örneğin:

  • Tüm kullanıcıların anonim olduğu ve tüm bilgilerin herkese açık olduğu bir broşür uygulamasında, etki genellikle minimum düzeyde olacaktır.
  • Bankacılık işlemleri, e-postalar veya sağlık kayıtları gibi hassas verileri içeren bir uygulamada, etki genellikle ciddi olacaktır.
  • Güvenliği ihlal edilmiş kullanıcının uygulama içinde yükseltilmiş ayrıcalıkları varsa, bu durumda etki genellikle kritik olacaktır ve saldırganın güvenlik açığı bulunan uygulamanın tam kontrolünü ele geçirmesine ve tüm kullanıcıları ve verilerini tehlikeye atmasına olanak tanır.

XSS güvenlik açıkları nasıl bulunur ve test edilir – XSS Nedir?

XSS güvenlik açıklarının büyük çoğunluğu, Burp Suite’in web güvenlik açığı tarayıcısı kullanılarak hızlı ve güvenilir bir şekilde bulunabilir .

Yansıtılan ve depolanan XSS’nin manuel olarak test edilmesi normalde uygulamadaki her giriş noktasına bazı basit benzersiz girdilerin (kısa bir alfasayısal dize gibi) gönderilmesini, gönderilen girdinin HTTP yanıtlarında döndürüldüğü her konumun belirlenmesini ve her konumun bağımsız olarak test edilmesini içerir. İsteğe bağlı JavaScript’i yürütmek için uygun şekilde hazırlanmış girdinin kullanılıp kullanılamayacağı. Bu şekilde, XSS’nin oluştuğu bağlamı belirleyebilir ve bundan yararlanmak için uygun bir yük seçebilirsiniz.

URL parametrelerinden kaynaklanan DOM tabanlı XSS’nin manuel olarak test edilmesi benzer bir süreci içerir: parametreye bazı basit benzersiz girdiler yerleştirmek, bu girdi için DOM’yi aramak için tarayıcının geliştirici araçlarını kullanmak ve kötüye kullanılabilir olup olmadığını belirlemek için her konumu test etmek. Ancak, diğer DOM XSS türlerinin tespit edilmesi daha zordur. URL tabanlı olmayan girdilerdeki ( ) veya HTML tabanlı olmayan havuzlardaki ( gibi ) DOM tabanlı güvenlik açıklarını bulmak için JavaScript kodunu incelemenin yerini hiçbir şey tutamaz ve bu son derece zaman alıcı olabilir. Burp Suite’in web güvenlik açığı tarayıcısı, DOM tabanlı güvenlik açıklarının algılanmasını güvenilir bir şekilde otomatikleştirmek için JavaScript’in statik ve dinamik analizini birleştirir. document.cookiesetTimeout

İçerik güvenliği politikası

İçerik güvenliği politikası ( CSP ), siteler arası komut dosyası çalıştırmanın ve diğer bazı güvenlik açıklarının etkisini azaltmayı amaçlayan bir tarayıcı mekanizmasıdır. CSP kullanan bir uygulama XSS benzeri davranış içeriyorsa, CSP güvenlik açığından yararlanılmasını engelleyebilir veya önleyebilir. Genellikle, temeldeki güvenlik açığından yararlanılmasını sağlamak için CSP atlatılabilir.

Sarkan işaretleme enjeksiyonu

Sarkan işaretleme enjeksiyonu, giriş filtreleri veya diğer savunmalar nedeniyle tam siteler arası komut dosyası çalıştırmanın mümkün olmadığı durumlarda etki alanları arası veri yakalamak için kullanılabilen bir tekniktir. Kullanıcı adına yetkisiz eylemler gerçekleştirmek için kullanılabilecek CSRF belirteçleri de dahil olmak üzere, diğer kullanıcılar tarafından görülebilen hassas bilgileri yakalamak için sıklıkla kullanılabilir.

XSS saldırıları nasıl önlenir – XSS Nedir?

Siteler arası komut dosyası çalıştırmayı önlemek bazı durumlarda önemsizdir ancak uygulamanın karmaşıklığına ve kullanıcı tarafından kontrol edilebilir verileri işleme şekline bağlı olarak çok daha zor olabilir.

Genel olarak, XSS güvenlik açıklarını etkili bir şekilde önlemenin aşağıdaki önlemlerin bir kombinasyonunu içermesi muhtemeldir:

  • Varışta filtre girişi. Kullanıcı girişinin alındığı noktada, beklenen veya geçerli girişe göre mümkün olduğunca katı bir şekilde filtre uygulayın.
  • Çıktıdaki verileri kodlayın. HTTP yanıtlarında kullanıcı tarafından kontrol edilebilen verilerin çıktılandığı noktada, çıktının aktif içerik olarak yorumlanmasını önlemek için çıktıyı kodlayın. Çıktı bağlamına bağlı olarak bu, HTML, URL, JavaScript ve CSS kodlama kombinasyonlarının uygulanmasını gerektirebilir.
  • Uygun yanıt başlıklarını kullanın. Herhangi bir HTML veya JavaScript içermesi amaçlanmayan HTTP yanıtlarında XSS’yi önlemek için tarayıcıların yanıtları istediğiniz şekilde yorumlamasını sağlamak için Content-Typeve başlıklarını kullanabilirsiniz.X-Content-Type-Options
  • İçerik Güvenliği Politikası. Son bir savunma hattı olarak, hala meydana gelen XSS güvenlik açıklarının önem derecesini azaltmak için İçerik Güvenliği Politikası’nı (CSP) kullanabilirsiniz.

Siteler arası komut dosyası çalıştırma hakkında sık sorulan sorular – XSS Nedir?

XSS güvenlik açıkları ne kadar yaygındır? XSS güvenlik açıkları çok yaygındır ve XSS muhtemelen en sık görülen web güvenlik açığıdır.

XSS saldırıları ne kadar yaygındır? Gerçek dünyadaki XSS saldırıları hakkında güvenilir veriler elde etmek zordur, ancak muhtemelen diğer güvenlik açıklarından daha az yararlanılır.

XSS ve CSRF arasındaki fark nedir? XSS, bir web sitesinin kötü amaçlı JavaScript döndürmesine neden olmayı içerirken CSRF, kurban bir kullanıcıyı yapmak istemediği eylemleri gerçekleştirmeye teşvik etmeyi içerir.

XSS ve SQL enjeksiyonu arasındaki fark nedir? XSS, diğer uygulama kullanıcılarını hedefleyen bir istemci tarafı güvenlik açığı iken, SQL enjeksiyonu, uygulamanın veritabanını hedefleyen sunucu tarafı bir güvenlik açığıdır.

PHP’de XSS’yi nasıl önleyebilirim? Girdilerinizi izin verilen karakterlerden oluşan bir beyaz listeyle filtreleyin ve tür ipuçlarını veya tür yayınlamayı kullanın. Çıktılarınızdan HTML bağlamları için htmlentitiesveya ENT_QUOTESHTML bağlamları için veya JavaScript bağlamları için JavaScript Unicode kaçışlarından kaçın.

Java’da XSS’yi nasıl önleyebilirim? Girdilerinizi izin verilen karakterlerden oluşan bir beyaz listeyle filtreleyin ve çıktınızı HTML bağlamları için HTML kodlamak için Google Guava gibi bir kitaplık kullanın veya JavaScript bağlamları için JavaScript Unicode çıkışlarını kullanın.

Bunlara da Göz atabilirsiniz:

İlginizi Çekebilir