12 minute read

Cross Site Scripting, saldırganın, zafiyetli bir web uygulaması kullanan kullanıcıyı tehlikeye atmasına olanak tanıyan bir web uygulama güvenlik açığıdır. Saldırgan SOP atlatabilir, legit bir kullanıcı gibi görünebilir, kullanıcının tüm eylemlerini gerçekleştirebilir ve kullanıcının herhangi bir verisine erişebilir.

Cross-Site Scripting, zafiyetli web uygulaması manipüle edilerek kullanıcıya zararlı JavaScript döndürmesiyle oluşmaktadır.

3 çeşit XSS bulunmaktadır.

Reflected Cross-Site Scripting (XSS) nedir ?

Reflected XSS, kullanıcıdan veri aldığında ve alınan veriyi güvenli olmayan şekilde anında yanıta dahil ettiği durumlarda gerçekleşmektedir. Saldırgan böyle bir ayrıcalığa sahip olduğu durumlarda hedef kullanıcıyı bütünüyle istismar edebilmektedir. Ayrıca saldırgan,

  • Kullanıcının gerçekleştirebildiği bütün eylemleri gerçekleştirme.
  • Kullanıcının görüntüleyebildiği bütün verileri görüntüleme.
  • Kullanıcının değiştirebildiği bütün verileri değiştirebilme.
  • Diğer kullanıcılarla istismar edilmiş ilk kullanıcı gibi görünerek etkileşime girme.

Saldırganın, Reflected XSS saldırısı gerçekleştirebilmek için hedef kullanıcının manipüle edilen bir istek oluşturması için kullanabileceği bir çok yol bulunmaktadır. Bu yollardan bazıları şunlardır, saldırgan tarafından kontrol edilen bir web sitesi, içeriğinin oluşturulmasına izin verilen bir web sitesi veya e-posta, tweet veya başka türlü mesaj gönderme yöntemleriyle link gönderilmesidir. Saldırı, spesifik olarak bir kullanıcıyı hedef alabilir yada herhangi bir kullanıcıyı hedef alabilir.

Stored Cross-Site Scripting (XSS) nedir ?

Stored XSS bir web uygulamasının, kullanıcıdan gelen verileri alıp, depolayıp daha sonra HTTP yanıtında güvenilmeyen bir şekilde dahil ettiğinde oluşmaktadır. Örneğin, kullanıcı bir paylaşıma yorum yapmak istemektedir. Uygulama, kullanıcıdan aldığı yorumu herhangi bir kontrolden geçirmeden paylaşımın yorumunda tutmaktadır. Saldırgan yorum yapma kısmını kullanarak zararlı bir komut eklediğinde, ilgili paylaşımı ziyaret eden herhangi bir kullanıcı bu zararlı komuttan etkilenmektedir.

Reflected XSS ile Stored XSS arasındaki temel fark, Stored XSS güvenlik zafiyetinde zararlı payload (Reflected XSS’in aksine) uygulamanın içinde depolanmaktadır. Reflected XSS’de saldırgan, hedef kullanıcıları ilgili payload’a istek yapması için teşfik etmesi gerekmektedir. Stored XSS de ise saldırgan payloadı yerleştirdikten sonra sadece kullanıcıların ilgili payload’ı ziyaret etmesini beklemektedir.

Saldırgan Stored XSS saldırısı gerçekleştirebildiği durumlarda genellikle ilgili kullanıcıyı tamamen istismar edebilmektedir. Saldırgan, Reflected XSS güvenlik zafiyetinde gerçekleştirebildiği bütün eylemleri Stored XSS zafiyetinde de gerçekleştirebilmektedir.

DOM-Based XSS nedir ?

DOM-Based XSS güvenlik zafiyeti uygulamanın, kullanıcıdan JavaScript komutları aldığı ve bu komutları dinamik komut çalıştıran eval() yada innerHTML gibi fonksiyonlar içerisinde çalıştırdığı durumlarda gerçekleşmektedir. Bu durum saldırganların diğer kullanıcıların hesabını ele geçirmesine olanak tanıyan zararlı JavaScript komutları yürütülmesine olanak sağlamaktadır.

Lab 1 Lab 2 Lab 3 Lab 4 Lab 5 Lab 6 Lab 7 Lab 8 Lab 9 Lab 10 Lab 11 Lab 12 Lab 13 Lab 14 Lab 15 Lab 16 Lab 17 Lab 18 Lab 19 Lab 20 Lab 21 Lab 22 Lab 23 Lab 24 Lab 25 Lab 26 Lab 27 Lab 28 Lab 29 Lab 30

Lab-1 Reflected XSS into HTML context with nothing encoded

Bu laboratuvarda basit bir reflected XSS bulunmaktadır.

<script>alert(1)</script>

image-center

Lab-2 Stored XSS into HTML context with nothing encoded

Bu laboratuvardaki yorum yapma fonksiyonunda basit bir stored XSS bulunmaktadır.

image-center

Yoruma zararlı JS kodu yazıldıktan sonra ilgili postu tekrar ziyaret ettiğimizde alert görüntülenecektir.

image-center

Lab-3 DOM XSS in document.write sink using source location.search

Bu laboratuvarın query tracking fonksiyonunda DOM-based cross-site scripting bulunmaktadır. JavaScript document.write fonksiyonu ile sayfaya veri yazdırılmaktadır. Document.write fonksiyonu, web sitesi URL’sini kullanarak kontrol edebileceğiniz location.search’ten gelen verilerle çağrılır.

Rastgele string değerler kullanarak aratma yaptığımızda string değer img src değerine yerleştirildiği gözlemlenmektedir.

image-center

Ayrıca document.write fonksiyonu location.search’den gelen veri ile çağırılmaktadır.

image-center

Aşağıdaki payload yazılarak “ ve < karakterleri atlatılarak

"><svg onload=alert(1)>

image-center

image-center

Lab-4 DOM XSS in innerHTML sink using source location.search

Bu laboratuvarın search blog fonksiyonunda DOM based cross-site scripting zafiyeti bulunmaktadır. Uygulama, location.search’den gelen veriyi kullanarak div’in HTML içeriğini değiştiren bir innerHTML fonksiyonu kullanmaktadır

image-center

innerHTML script veya svg onload elementini kabul etmemektedir. Bu yüzden img veya iframe gibi alternatif bir yolllar gerekmektedir. onload veya onerror gibi fonksiyonlar bu bağlamda kullanılabilmektedir.

<img src=1 onerror=alert(1)> --> src=1 src link ister int girildiğinden hata verecektir
																  hata verdiğinde ise oneror tetiklenecektir.

image-center

Lab-5 DOM XSS in jQuery anchor href attribute sink using location.search source

Modern web uygulamaları, genellikle geliştiriciler için ek işlevsel ve yetenekler sağlayan bir düzü third-party kütüphane ve framework’ü kullanılarak oluşuturulmaktadır. Bunlardan bazıları DOM XSS için potansiyel source’lar ve sink’ler oluşturmaktadır.

jQuery gibi bir kütüphane kullanılıyorsa sayfadaki DOM öğelerini değiştirebilecek sink’ler dikkat edilmelidir. Örneğin jQuery’nin attr() fonksiyonu DOM öğelerinin özniteliğini değiştirebilmektedir. Veriler kullanıcı tarafından kontrol edilen yerden alınır ve attr() fonksiyonuna iletilirse girdiler XSS’e neden olabilecek şekilde değiştirilebilmektedir.

Bu laboratuvarım geri bildiğim sayfasında DOM-based XSS bulunmaktadır. Bir anchor element bulmak için jQuery kütüphanesinin $ selector fonksiyonunu kullanmaktadır ve location.search’teki verileri kullanarak href niteliğini değiştirmektedir.

returnPath değişkeni butonun hangi konuma gideceğini göstermektedir. Üzerinde değişiklik yapılırsa DOM’un kendisinde de değişiklilik gözlemlenmektedir.

attr() fonksiyonu kullanıcıdan aldığı girdiyle bağlantı elementi olan href’i değiştirmektedir.

image-center

image-center

image-center

Kullanıcı girdisi manipüle edilerek cookie bilgisi okunabilmektedir.

image-center

image-center

image-center

Lab-6 DOM XSS in jQuery selector sink using a hashchange event

Bu laboratuvarın Home sayfasında DOM-based XSS bulunmaktadır. Uygulama JQuery’nin $() fonksiyonunu başlığı location.hash olarak iletilen belirli bir gönderiye otomatik olarak kaydırmak için kullanmaktadır.

$() fonksiypnu, location.hash ile birlikte animasyonlar için veya otomatik kaydırma için kullanılmaktadır. Bu davranış genellikle hashchange event handler kullanılarak uygulanmaktadır.

image-center

$() fonksiyon XSS enjekte etmek için kullanılabilmektedir. Bunun için hashchange event’ini tetiklenmenin yolu bulunmalıdır. En kolay yollarından biri iframe ile tetiklemektedir.

Exploit server kullanılarak payload yerleştirilir ve hedef uygulamaya gönderilir.

image-center

Payload’ın çalıştığını kontrol etmek için exploit görüntülenir ve print fonksiyonu çalıştığı gözlemlenmektedir.

image-center

Son olarak kurbana ileterek exploit gerçekleştirilir.

image-center

Lab-7 Reflected XSS into attribute with angle brackets HTML-encoded

Bu laboratuvarın açılı ayracın HTML-encoded olduğu blog arama fonksiyonunda Reflected XSS bulunmktadır. Lab’ın çözülmesi için XSS saldırısı gerçekleştirilmeli ve alert fonksiyonu tetiklenmelidir.

Açılı ayraç kullandığımızda uygulama HTML-encoded gerçekleştirerek eklemektedir. Bu yüzden payload açılı ayraç içermeyen bir payload olmalıdır. Arama kısmında deneme yaptığımızda yazılan şeyin “<” içerisine yansıtıldığı gözlemlenmektedir. Bu yüzden arama fonksiyonu “<” ihtiyacını ortadan kaldırmaktadır..

image-center

Lab-7 Reflected XSS into attribute with angle brackets HTML-encoded

“onmouseover=”alert(1) payloadı kullanılarak XSS eklenmektedir.

image-center

image-center

Lab-8 Stored XSS into anchor href attribute with double quotes HTML-encoded

Bu laboratuvarın yorum yapma fonksiyonunda Stored XSS bulunmaktadır. Lab yorum yazarı adına tıklandığında alert fonksiyonunun tetiklenmesini istemektedir.

Yorum yapıldığında kullanıcı adı ve yapılan yorum görüntülenmektedir. Fakat yorum yapan kişinin ismine tıklandığında ilgili kişinin web sitesine gitmektedir. İncelendiğinde web sitesi href özniteliğine yansıtılmaktadır.

image-center

Yorum yaparken web sitesi kısmına payload eklediğimizde kişi ismine tıklandığında payloadın gerçekleşmesi beklenmektedir.

image-center

image-center

Lab-9 Reflected XSS into a JavaScript string with angle brackets HTML encoded

Bu laboratuvardaki query tracking fonksiyonunda Reflected XSS bulunmaktadır. Lab, XSS saldırısı gerçekleştirilmesini ve alert fonksiyonunun tetiklenmesini istemektedir.

Arama kısmına girilen veri tekrar bize yansıtılmaktadır.

image-center

İlgili payload’ı yerleştirerek istek yapılmaktadır.

image-center

image-center

image-center

Lab-10 DOM XSS in document.write sink using source location.search inside a select element

Bu laboratuvardaki stok kontrol fonksiyonunda DOM-based XSS bulunmaktadır. Uygulama veri göstermek için document.write fonksiyonunu kullanmaktadır. document.write foksiyonu veriyi location.search’den almaktadır. Lab’ın çözümü için XSS gerçekleştirip alert fonksiyonu tetiklenmelidir.

Burp ile requesti yakaladığımızda productId ve storeId değerlerinin iletildiği görüntülenmektedir.

image-center

Uygulama aldığı productId ve storeId değerlerini location.search ile alıp document.write ile işlemektedir.

image-center

Eğer istek üzerinde değişiklilik yapılırsa ve storeId değiştirip bir payload yerleştirilirse document.write bu payloadı işleyecektir.

image-center

image-center

Zararlı payload ile denenirse:

image-center

image-center

image-center

Lab-11 DOM XSS in AngularJS expression with angle brackets and double quotes HTML-encoded

Bu laboratuvardaki arama fonksiyonunda bulunan AngularJS ifadesinde DOM-based XSS güvenlik zafiyeti bulunmaktadır.

AngularJS, AngularJS directive olarak da bilinen ng-app niteliğini içeren HTML düğümlerini tarayan popüler bir JavaScript kütüphanesidir. HTML koduna bir directive eklendiğinde JavaScript ifadeleri double curly braces ile çalıştırılabilinmektedir. Bu teknik açılı ayraçlar encoded hale getirildiği durumlarda kullanışlıdır.

image-center

image-center

Lab-12 Reflected DOM XSS

Bu laboratuvarda Reflected DOM XSS bulunmaktadır. Sunucu tarafı uygulama istekten gelen verileri işlediğinde ve yanıta yansıttığında Reflected DOM XSS oluşmaktadır.

Arama kısmından bir istek yapıldığında response JSON olarak dönmektedir.

image-center

JSON response eval() fonksiyonu ile gerçekleşmektedir.

image-center

Gerekli payload eklenmektedir.

image-center

Eğik ters çizgi enjekte edildiğinde uygulama ondan kaçamamaktadır. JSON respons’u tırnak işaretinden kaçmak için ikinci bir eğik çizgi ekler ve çift ters eğik çizgi uygulamanın payload’dan kaçmasının önüne geçmiş olur. Payload’ın son hali.

image-center

image-center

Lab-13 Stored DOM XSS

Bu laboratuvardaki yorum yapma fonksiyonunda DOM-based XSS bulunmaktadır.

Uygulama XSS’i önlemek amacıyla açılı ayraçları engellemektedir.

image-center

<> yazdıktan sonra payload eklenirse eğer escapeHTML fonksiyonundan kaçılabilmektedir.

image-center

image-center

image-center

Lab-14 Exploiting cross-site scripting to steal cookies

Bu laboratuvarın yorum fonksiyonunda stored XSS bulunmaktadır. Lab XSS zafiyetini kullanarak kurbanın cookie bilgilerinin ele geçirilip kurbanın hesabına erişilmesini istemektedir.

Lab’daki paylaşımların yorum yapma fonksiyonunda script>alert(1)</script> payload’u çalıştırılarak XSS güvenlik zafiyeti tespit edilmektedir. Lab’ın istediği gibi kurbanın cookie bilgilerini ele geçirebilmek için BurpSuite’in pro versionunda bulunan Burp Collaborator istemcisinin yardımıyla aşağıda görünen payload hedef uygulamaya gönderilmektedir.

image-center

Daha sonrasında hedef kişi ilgili yorumları gözlemlediğinde XSS tetiklenerek kurbanın cookie bilgilerini bize göndermektedir.

image-center

Daha sonrasında My Account tab’ına gönderilen istek yakalanarak cookie bilgisi kurbanın cookie bilgisi ile değiştirilerek kurban taklit edilmektedir.

image-center

image-center

Lab-15 Exploiting cross-site scripting to capture passwords

Bu laboratuvarın yorum yapma fonksiyonunda Stored XSS bulunmaktadır. Lab kurbanın kullanıcı adı ve parolasını XSS güvenlik zafiyeti yardımıyla ele geçirerek kurbanın hesabına erişilmesini istemektedir.

Kurbanın ıd-pw bilgileri Burp Collaborator’a göndermesi için aşağıdaki payload yerleştirilmektedir.

image-center

image-center

image-center

Lab-16 Exploiting XSS to perform CSRF

Bu laboratuvardaki yorum yapma fonksiyonunda Stored XSS bulunmaktadır. Lab’ın tamamlanması için güvenlik zafiyetini sömürerek CSRF zafiyeti gerçekleştirilmektedir.

wiener:peter bilgileri ile giriş yaptıktan sonra sayfanın kaynak kodu incelendiğinde e-posta değiştirme için kullanılan ve CSRF token bulunan bir POST request oluşturma bilgisi görüntülenmektedir.

image-center

Aşağıdaki payload yorum olarak eklendiğinde ilgili sayfaya gelen her kullanıcının CSRF token bilgisi ele geçirilerek daha önce tespit edilen e-posta değiştirme requesti içerisine bahsi geçen token bilgisi eklenerek kurbanın e-posta bilgisi değiştirilmektedir.

image-center

image-center

Lab-17 Reflected XSS into HTML context with most tags and attributes blocked

Bu laboratuvardaki arama fonksiyonunda Reflected XSS bulunmaktadır fakat uygulama WAF ile XSS saldırılarına karşı korunmaktadır. Lab WAF’ı atlatarak print() fonksiyonu çalıştırıldığında tamamlanmaktadır.

Basit bir payload denendiğinde WAF’ın tag’leri engellendiği gözlemlenmektedir.

image-center

Intruder ile hangi tag’lerin engelleri hangi tag’lerin izin verilen olduğunu tespit etmek için XSS cheat sheet yardımıyla tagler denenmektedir.

image-center

image-center

Tag’ler alınarak Intruder’ın listesine eklenmektedir.

image-center

WAF’ın body tag’ine izin verdiği gözlemlenmektedir.

image-center

image-center

print fonksiyonunu çalıştırabilmek için bir attribute’e ihtiyaç olduğundan hangi eventlerin engelli olduğu tespit edilmektedir.

image-center

WAF onresize eventini engellememektedir.

image-center

Uygulamanın çözümü user interact gerektirdiğinden lab’ın sunduğu exploit server kullanılarak print fonksiyonunu çalıştıracak payload yazılmaktadır.

image-center

image-center

Lab-18 Reflected XSS into HTML context with all tags blocked except custom ones

Laboratuvar özel tag’ler hariç bütün HTML taglerini engellemektedir. Lab, XSS saldırısı gerçekleştirerek document.cookie bilgisinin ele geçirilmesini istemektedir.

image-center

Decode edilmiş hali

<xss+id=x+onfocus=alert(document.cookie) tabindex=1>#x

İncelemek istendiğinde,

xss —> özel olarak yaratılacak tag’in ismi

id=x —> xss tag’inin id değeri

onfocus=alert(document.cookie) —> xss tag’i fokus aldığında alert fonksiyonu çalışacak

tabindex=1 —> Gezinmek için tab düğmesi kullanıldığında temel olarak HTML öğesinin sekme sırasını belirtir.

#x —>Payload enjekte edildiğinde x’in karşılığı olan tag fokus alacaktır ve ilgili alert fonksiyonu çalışacaktır.

Payload kurbana iletildiğinde lab çözülmektedir.

image-center

Lab-19 Reflected XSS with some SVG markup allowed

Bu laboratuvarda Reflected XSS bulunmaktadır. Uygulama yaygın bir çok tag’i engellemiştir fakat bazı SVG taglerini ve eventlerini engellememektedir.

Basit bir payload denendiğinde tag’in engelli olduğu gözlemlenmektedir.

image-center

Bir önceki lab da kullanılan Intruder yaklaşımı burda da kullanılarak hangi tag’lerin izin verildiği tespit edilmektedir.

image-center

Daha sonrasında izin verilen tagler ile hangi eventlerin izin verildiğinin tespitini yapmak için kullanılan Cluster bomb saldırısı için aşağıdaki işaretleme ve payload list işlemleri yapılmaktadır.

image-center

image-center

image-center

onbegin eventi tespit edilen diğer tag’ler için kullanılabilir olduğu tespit edilmektedir.

image-center

Aşağıdaki payload search kısmına yazılarak XSS gerçekleştirilmektedir.

%22%3E%3Csvg%3E%3Canimatetransform%20onbegin=alert(1)%3E

image-center

Bu laboratuvarda Reflected XSS bulunmaktadır. Tarayıcı klavye kısa yolları yardımıyla XSS gerçekleştirilmektedir.

encode bir şekilde URL’e aşağıdaki payload eklenmektedir.

?%27accesskey=%27x%27onclick=%27alert(1)

Payload, x tuşuna atanan bir onclick eventidir. Alt+Shift+X tuşlarına basarak XSS tetiklenmektedir.

image-center

Lab-21 Reflected XSS into a JavaScript string with single quote and backslash escaped

Bu laboratuvardaki search query tracking fonksiyonunda Reflected XSS bulunmaktadır. Ayrıca uygulama ‘ ve \ karakterlerinden kaçmaktadır. Lab çözümü için alert fonksiyonunun çağırılması gerekmektedir.

Uygulamanın tırnak işaretinden nasıl kaçtığı aşağıda görüntülenmektedir.

image-center

Ayrıca görselde script tag’inin kapatılabildiği de gözlemlenmektedir. Bu yüzden önce tag’i kapatıp sonra tekrar tag’i oluşturarak alert fonksiyonu çalıştırılmaktadır.

image-center

image-center

Lab-22 Reflected XSS into a JavaScript string with angle brackets and double quotes HTML-encoded and single quotes escaped

Bu laboratuvardaki arama fonksiyonunda Reflected XSS bulunmaktadır. Lab, alert fonksiyonu çağırıldığında tamamlanmaktadır.

alert(1) çalıştırmak için search kısmına yazıldığında tırnak işaretleri arasında kaldığından çalışmamaktadır. ‘ alert(1) denendiğinde ise uygulama tırnak işaretinden \ ile kaçmaktradır.

image-center

\ işaretinden kaçarak payload eklenmektedir.

image-center

image-center

Lab-23 Stored XSS into onclick event with angle brackets and double quotes HTML-encoded and single quotes and backslash escaped

Bu laboratuvardaki yorum yapma fonksiyonunda Stored XSS bulunmaktadır. Lab, yorum sahibinin adına tıklandığında XSS saldırısı gerçekleştirerek alert fonksiyonunun çağırılmasını istemektedir.

Yorum yapma fonksiyonunu anlamak için deneme yapıldığında yorum sahibinin isminin bir onclick eventi ile yorum yaparken girilen web sitesi bilgisine gittiği gözlemlenmektedir.

image-center

Web sitesi kısmına ilgili payload yazılarak XSS saldırısı denenebilmektedir.

image-center

image-center

Lab-24 Reflected XSS into a template literal with angle brackets, single, double quotes, backslash and backticks Unicode-escaped

Bu laboratuvardaki blog arama fonksiyonunda Reflected XSS bulunmaktadır. Uygulama bir çok karakterden ve yaklaşımdan kaçmaktadır. Lab, alert fonksiyonu çağırıldığında tamamlanmaktadır.

Deneme amaçlı aratma yapıldığında girilen inputun ters tırnak işareti ile eklendiği gözlemlenmektedir.

image-center

Ters çift tırnak Javascript’te template string oluştururken kullanılmaktadır. Biraz inceleme yapıldığında ${komut} yaklaşımı ile istenilen işlemin yapılabildiği gözlemlenmektedir.

image-center

image-center

Lab-25 Reflected XSS with event handlers and href attributes blocked

Laboratuvarda bazı beyaz listeye alınmış tag’ler Reflected XSS saldırısı için kullanılabilmektedir ancak tüm eventler ve href attribute’leri engellenmektedir. Lab’ın tamamlanması için tıklandığında alert fonksiyonunu çağıran bir element enjekte etmek için XSS saldırısı gerçekleştirilmektedir.

search fonksiyonuna aşağıdaki komut yazılmaktadır.

%3Csvg%3E%3Ca%3E%3Canimate+attributeName%3Dhref+values%3Djavascript%3Aalert(1)+%2F%3E%3Ctext+x%3D20+y%3D20%3EClick%20me%3C%2Ftext%3E%3C%2Fa%3E

Komut enjekte edildikten sonra bir Click me dizesi oluşmaktadır ve tıklandığında XSS gerçekleşmektedir.

image-center

Lab-26 Reflected XSS in a JavaScript URL with some characters blocked

Bu laboratuvar inputları JavaScript URL’ine yansıtmaktadır. Uygulama XSS saldırılarını engellemek için bazı karakterleri engellemektedir. Lab’ın tamamlanması için alert mesajının bir yerinde bulunan 1337 dizesiyle alert işlevini çağıran bir XSS saldırısı gerçekleştirilmelidir.

Bir post’u görüntüledikten sonra postId değerinin devamına aşağıdaki komut yazılıp gönderilmektedir.

&%27},x=x=%3E{throw/**/onerror=alert,1337},toString=x,window%2b%27%27,{x:%27

Bloğa dön’e tıklandığında payload tetiklenip alert çağırılacaktır. Payload alert fonksiyonunu argümanlarla çalıştırmak için exception handling kullanmaktadır. Boşluk kısıtlamalarını aşmak için throw statement kullanılmaktadır. Alert fonksiyonu onerror exception handler’e atanmaktadır.

image-center

Lab-27 Reflected XSS with AngularJS sandbox escape without strings

AngularJS zararlı komutları çalıştırmayı engellemek için sandbox kullanmaktadır. Sandbox window veya document gibi nesnelere ve özelliklere erişimi engelllemektedir. Aşağıdaki payload kullanılarak lab tamamlanmaktadır.

post?postId=2&toString().constructor.prototype.charAt%3d[].join;[1]|orderBy:toString().constructor.fromCharCode(120,61,97,108,101,114,116,40,49,41)=1

image-center

Lab-28 Reflected XSS with AngularJS sandbox escape and CSP

Bu laboratuvar Content Security Policy (CSP) ve AngularJS kullanılmaktadır. Lab’ın tamamlanması için CSP ve AngularJS sandbox atlatılıp document.cookie bilgilerine erişilmelidir.

image-center

Payload CSP atlatmak için AngularJS’deki ng-focus eventini kullanmaktadır. Ayrıca AngularJS değişkeni olan $event’i kullanmaktadır. Path özelliği Chrome’a özeldir ve eventi tetikleyen element dizisi içermektedir. Son element window nesnesini içermektedir.

Pipe Karakteri AngularJS’de orderBy komutuyla bir filtre yapılacağını gösterir. İki nokta üst üste (:), filtreye gönderilen argümanı belirtir. Argümanda, alert işlevini doğrudan çağırmak yerine, onu z değişkenine atıyoruz. Alert işlevi yalnızca orderBy işlemi $event.path dizisindeki window nesnesine ulaştığında çalışmaktadır.

image-center

Lab-29 Reflected XSS protected by very strict CSP, with dangling markup attack

Bu laboratuvar dış web sitelerine giden istekleri engelleyen bir CSP kullanmaktadır. Lab’ın tamamlanması için CSP atlatılmalı ve hedef kullanıcının CSRF tokenını ele geçirmek için XSS saldırısı gerçekleştirilmelidir. Daha sonrasında kurbanın e-posta adresi CSRF token kullanılarak değiştirilmelidir.

Exploit server kullanılarak kurbanın CSRF tokeni ele geçirmek için XSS güvenlik zafiyeti barındıran bir web sitesi oluşturulmaktadır. Kurban bu siteyi ziyaret etmektedir.

image-center

Burp Collaborator ile kurbanın CSRF tokeni ele geçirilmektedir.

image-center

Daha sonra weiner:peter ıd,pw ile bağlandığımız hesaptan e-posta değiştirme requesti ele geçirerek kendi belirlediğimiz e-posta yazılmaktadır ve CSRF PoC generator ile token bilgisi kurbandan ele geçirdiğimiz token bilgisi ile değiştirilmektedir.

image-center

Daha sonrasında hazırlanan ikinci zararlı web sitesi kurbana iletildiğinde ve kurban bu siteyi ziyaret ettiğinde kullanıcının e-posta bilgisi değişmektedir.

image-center

image-center

Lab-30 Reflected XSS protected by CSP, with CSP bypass

Bu laboratuvar CSP kullanmaktadır ve Reflected XSS güvenlik zafiyeti barındırmaktadır. Lab’ın tamamlanması için CSP atlatılıp alert fonksiyonu çağıran bir XSS saldırısı gerçekleştirilmelidir.

Aşağıdaki komut enjekte edilmesine rağmen alert çalışmamaktadır çünkü CSP bunu engellemektedir.

'<img src=1 onerror=alert(1)>'</h1>

image-center

Response’da CSP header’ında report-uri bir token içermektedir. Bu token parametresini kontrol edebildiğimiz için kendi CSP isteklerimizi policy’e enjekte edebiliriz.

image-center

Enjeksiyon, CSP’de script-src-elem yönergesini kullanmaktadır. Bu yönerge yalnızca komut dosyası öğelerini hedeflemeye olanak tanımaktadır.

image-center