Cross-Site Scripting Güvenlik Açığı

Cross-Site Scripting Güvenlik Açığı

Bu bölümde, Cross-Site Scripting’in ne olduğunu, Cross-Site Scripting güvenlik açıklarının farklı çeşitlerini ve Cross-Site Scripting’in nasıl bulunacağını ve önleneceğini açıklayacağız.

Cross-Site Scripting (XSS) nedir?

Cross-Site Scripting (XSS olarak da bilinir), bir saldırganın, kullanıcıların güvenlik açığı bulunan 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. Cross-Site Scripting 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 denetim sahibi olabilir.

XSS nasıl çalışır?

Cross-Site Scripting, savunmasız 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. alert()Kısa, zararsız ve başarıyla çağrıldığında gözden kaçırılması oldukça zor olduğu için işlevi bu amaç için kullanmak uzun zamandır yaygın bir uygulamadır . 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. Bu senaryoda, print()işlevi öneririz .

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 yansıtılan XSS .
  • Saklanan XSS , kötü amaçlı komut dosyasının web sitesinin veritabanından geldiği yer.
  • Güvenlik açığının sunucu tarafı kodu yerine istemci tarafı kodunda bulunduğu DOM tabanlı XSS .

Yansıyan Cross-Site Scripting oluşturma

Reflected XSS , Cross-Site Scripting’in 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 :

<p>Status: All is well.</p>

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

<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 Cross-Site Scripting

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ı Cross-Site Scripting 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?

Cross-Site Scripting güvenlik açığından yararlanan bir saldırgan genellikle şunları yapabilir:

  • Kurban kullanıcı kimliğine bürünün veya maskeli balo yapın.
  • 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

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 edilen kullanıcının durumuna bağlıdır. Örneğin:

  • Tüm kullanıcıların anonim 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 tutan bir uygulamada, etki genellikle ciddi olacaktır.
  • Güvenliği ihlal edilen kullanıcının uygulama içinde yükseltilmiş ayrıcalıkları varsa, 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 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 girdilerde ( ) veya HTML tabanlı olmayan havuzlarda ( 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 ), Cross-Site Scripting 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 Cross-Site Scripting’in 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

Cross-Site Scripting’i ö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 X-Content-Type-Optionsbaşlıklarını kullanabilirsiniz .
  • İç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 İlkesi’ni (CSP) kullanabilirsiniz.

Cross-Site Scripting hakkında sık sorulan sorular

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 önlerim? Girdilerinizi izin verilen karakterlerden oluşan bir beyaz listeyle filtreleyin ve tür ipuçlarını veya tür yayınlamayı kullanın. İle çıkışlarını Escape htmlentitiesve ENT_QUOTESHTML bağlamlarda için veya JavaScript Unicode JavaScript bağlamlar için kaçar.

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.

İlginizi Çekebilecek Makaleler​

LLM (Large Language Models) Nedir?

Günümüzde yapay zeka ve makine öğrenmesi, teknolojinin birçok alanında devrim niteliğinde ilerlemeler kaydetmiştir. Bu ilerlemelerin merkezinde yer alan büyük dil modelleri (LLM – Large Language

Devamı »
Message Broker Nedir?

Message broker, birçok farklı uygulama veya sistem arasında iletişim kurmak için kullanılan bir yazılım aracıdır. Bu araç, bir uygulama tarafından gönderilen mesajları bir veya daha

Devamı »
Loglama Nedir?

Loglama, bilgisayar sistemlerindeki olayları, hataları ve diğer önemli durumları kaydetme işlemidir. Bu kayıtlar, sistem yöneticileri ve geliştiriciler tarafından, sistemlerin işleyişini anlamak, hataları tespit etmek ve

Devamı »
Vcenter Üzerinden ESXI Upgrade’i Nasıl Yapılır?

Öncelikle herkese merhaba arkadaşlar, sizlere Vcenter üzerinde ESXI hostunuzu nasıl upgrade edeceğinizi anlatacağım. Öncelikle hangi versiyona yükselteceksek o versiyonun ISO dosyasını indiriyoruz. Ardından Vcenter’ımızı açıyoruz.

Devamı »