#-İçindekiler-#
1- Cross Site Scripting Nedir
1.1- Nasıl Tespit Edilir
1.2- Nerede Görülür
2- Cross Site Scripting Türleri
3- Waf(Güvenlik Duvarı) Atlatma Methodları
4- Zafiyetin Sömürümü
5- Zafiyetin Kapatılması ve Alınabilecek Önemlemler
Merhaba saygıdeğer TürkHackTeam okurları, bu makalemde tüm hatlarıyla Cross Site Scripting(XSS) konusu ele aldım. İlgisi olanlar için faydalı olması dileğiyle.
1.1- Nasıl Tespit Edilir
1.2- Nerede Görülür
2- Cross Site Scripting Türleri
3- Waf(Güvenlik Duvarı) Atlatma Methodları
4- Zafiyetin Sömürümü
5- Zafiyetin Kapatılması ve Alınabilecek Önemlemler
Merhaba saygıdeğer TürkHackTeam okurları, bu makalemde tüm hatlarıyla Cross Site Scripting(XSS) konusu ele aldım. İlgisi olanlar için faydalı olması dileğiyle.
Cross Site Scripting Nedir
Cross Site Scripting diğer bir adıyla XSS zafiyeti, PHP tabanlı kullanıcıdan alınan verilerin gerekli filtrelemeler uygulanmadığı için ortaya çıkan bir zafiyet olup ilk keşfedilip raporlanması Symantec tarafından 2007 tarihinde gerçekleşmiştir.
Sitede betik çalıştırmaya imkan kılan bu zafiyet OWASP TOP 10 zafiyet sıralamasında Injection kategorisinde yedinci sırada yer almaktadır.
Sitede betik çalıştırmaya imkan kılan bu zafiyet OWASP TOP 10 zafiyet sıralamasında Injection kategorisinde yedinci sırada yer almaktadır.
Nasıl Tespit Edilir
Cross Site Scripting zafiyetini tespit etmenin iki yolu bulunmakta:
1. Araç Kullanarak
Cross Site Scripting zafiyeti tespiti için birden fazla araç bulunmakta ama içlerden en çok kullandığım araç XSStrike aracı
XSStrike aracı içinde hali hazırda bulunan payloadları ile site üzerinde otomatik XSS araması yapmakta.
Github Linki
XSStrike aracı içinde hali hazırda bulunan payloadları ile site üzerinde otomatik XSS araması yapmakta.
Github Linki
Araç Python3 yazılmış bir araç olduğu için python3 ile çalıştırmanız gerekmekte !
Örnek Kullanım:
python3 xsstrike.py -u www.site.com/search.php?search=
2. Araç Kullanmadan
Araç kullanmadan bu zafiyeti nasıl tespit edilir o konuya gelelim, bizim javascript bilmemiz kritik önem html bilmemiz ise de bizi XSS zafiyetinin tespitinde önem taşır.
Belirli başlı payload üzerinden mantığını inceleyelim.
# <script>alert(1)</script> #
En temel xss payloadıdır. Mantığı javascriptte bulunan alert() fonksiyonunu kullanarak sayfada bir adet uyarı pop upı çıkarmaktır.
Belirli başlı payload üzerinden mantığını inceleyelim.
# <script>alert(1)</script> #
En temel xss payloadıdır. Mantığı javascriptte bulunan alert() fonksiyonunu kullanarak sayfada bir adet uyarı pop upı çıkarmaktır.
Örnek Görsel:
Nerede Görülür
İlk bakış açımız önemli, web tarafınca en çok kullanıcıdan veri alım şekli arama çubuklarıdır. Genellikle get methodu kullanılarak kullanıcıdan alınan verileri site içerisinde arama yapmak amaçlı kullanılır lakin gerekli güvenlik önlemleri alınmadığı için kolaylıkla xss zafiyeti bulunabilir.
İkinci önemli bakılması gereken yer ise siteye kullanıcı tarafınca siteye yüklenen dosyaların filtresiz bir şekilde yüklenmesi ise kullanıcıdan sitenin içine doğrudan javascript dosyası yükleyerek siteye kalıcı zararlar verebilir.
İkinci önemli bakılması gereken yer ise siteye kullanıcı tarafınca siteye yüklenen dosyaların filtresiz bir şekilde yüklenmesi ise kullanıcıdan sitenin içine doğrudan javascript dosyası yükleyerek siteye kalıcı zararlar verebilir.
Cross Site Scripting Türleri
1- Reflected XSS:
XSS türleri arasında en yaygınıdır. Bu Xss türünde kullanılan payloadlar tarayıcı üzerinden kullanıcıya yansır. En çok görülen yeri ise urllerdir. Temel saldırı senaryosu kurban kullanıcıya atılan zararlı url ile kullanıcının tarayıcısında seri bir xss betiği çalıştırıp ona zarar vermektir.
2- Stored XSS:
En tehlikeli XSS türleriden biridir. İki tip karşılaşılan türü vardır:
1) Dosya Biçiminde: Filtresiz kullanıcıdan alınan dosyalardan veyahut File Upload zafiyetinden yararlanılarak sistemin içine yüklenen zararlı xss kodu içeren dosya ile gerçekleşir.
Örnek Senaryo: Sisteme File Upload zafiyetinden yararlanılarak yüklenen shell aracılığıyla hata anında yönlendirilen 404.php adında bulunan hata indexinin içeriğine zararlı bir payload yükleyerek ve index sayfasında 404.php dosyasına yönlendirecek bir hata çıkartırsak sisteme giriş yapan kullanıcılar bizim zararlı payload yüklediğimiz 404.php sayfasına yönlendirilecek ve zararlı xss kodumuza maruz kalıcaklar.
2) Filtresiz Kullanıcılardan Alınan Girdiler Aracılığıyla: Çoğu sistemde bulunan kullanıcılardan yorum amaçlı girdi alınan yerler mevcuttur ve bu girdileri sistemi ziyaret eden bir çok kullanıcı görmekte. Burada kullanıcılardan girilen yorumların filtrelenmesi hayati önem arz etmekte, eğer ki filtrelenme işlemi yapılmazsa ya da gerekli önlemler alınmazsa ciddi tehlikeler doğurabilir.
Örnek Senaryo: Herkes tarafından okunan bir haber site varsayalım. Bu site için açılan bir yorum sayfasında gerekli önlemler alınmadığını düşünürsek karşılaşabileceğimiz tehlikeler.
1) Siteyi başka bir siteye yönlendiren xss payload'ı yazılabilir.
2) Siteye giriş yapmış bir kullanıcının Cookie bilgisini alan bir xss payload'ı yazılabilir.
1) Dosya Biçiminde: Filtresiz kullanıcıdan alınan dosyalardan veyahut File Upload zafiyetinden yararlanılarak sistemin içine yüklenen zararlı xss kodu içeren dosya ile gerçekleşir.
Örnek Senaryo: Sisteme File Upload zafiyetinden yararlanılarak yüklenen shell aracılığıyla hata anında yönlendirilen 404.php adında bulunan hata indexinin içeriğine zararlı bir payload yükleyerek ve index sayfasında 404.php dosyasına yönlendirecek bir hata çıkartırsak sisteme giriş yapan kullanıcılar bizim zararlı payload yüklediğimiz 404.php sayfasına yönlendirilecek ve zararlı xss kodumuza maruz kalıcaklar.
2) Filtresiz Kullanıcılardan Alınan Girdiler Aracılığıyla: Çoğu sistemde bulunan kullanıcılardan yorum amaçlı girdi alınan yerler mevcuttur ve bu girdileri sistemi ziyaret eden bir çok kullanıcı görmekte. Burada kullanıcılardan girilen yorumların filtrelenmesi hayati önem arz etmekte, eğer ki filtrelenme işlemi yapılmazsa ya da gerekli önlemler alınmazsa ciddi tehlikeler doğurabilir.
Örnek Senaryo: Herkes tarafından okunan bir haber site varsayalım. Bu site için açılan bir yorum sayfasında gerekli önlemler alınmadığını düşünürsek karşılaşabileceğimiz tehlikeler.
1) Siteyi başka bir siteye yönlendiren xss payload'ı yazılabilir.
2) Siteye giriş yapmış bir kullanıcının Cookie bilgisini alan bir xss payload'ı yazılabilir.
3- DOM Tabanlı XSS:
Reflected XSS ile benzerlik taşır. Saldırının temel amacı DOM(Document Object Model)'u değiştirmektir. Tamamen tarayıcı tarafında gerçekleşir. Payloadların başında diğer xss payloadlarına nazaran farklı # görülür. Bunun sebebi ise # karakterinden sonra yazılan herhangi bir yazı HTTP trafiğinde görülmemekte bu durumda server'a iletilmemektedir.
Waf(Güvenlik Duvarı) Atlatma Methodları
Waflar yazılımcılar tarafından en çok kullanılan güvenlik yöntemleridir. Çoğu zaman kullanılan methodlar ile wafları kolaylıkla atlatabilmekteyiz.
Wafları atlatmanın temel iki yöntemi bulunmakta, birincisi araç kullanarak ikincisi ise araç kullanmadan yapmak.
Wafları atlatmanın temel iki yöntemi bulunmakta, birincisi araç kullanarak ikincisi ise araç kullanmadan yapmak.
1- Araç Kullanarak:
Benim sıklıkla tercih ettiğim ve test ettiğim çoğu waf bypass araçları arasında en yararlı olan araçtan bahsedeceğim.
Aracın ismi WafPass.
Aracın içerisinde xss haricinde bir çok zafiyet için waf bypass seçeneği bulunmakta.
Aracın help fonksiyonunu kullandığımız da bize örnek kullanımı ve içinde bulunan fonksiyonlarını basitçe anlatmakta.
Aracın ismi WafPass.
Aracın içerisinde xss haricinde bir çok zafiyet için waf bypass seçeneği bulunmakta.
Aracın help fonksiyonunu kullandığımız da bize örnek kullanımı ve içinde bulunan fonksiyonlarını basitçe anlatmakta.
Örnek Kullanım:
python3 wafpass.py -u URL -t xss
Örnek Görsel:
2- Araç Kullanmadan:
Araç kullanmadan yaptığımız waf bypass methodu kullandığımız payload da değişiklik yapmak. Genellikle yazılımcının belirlediği bir kaç noktalar filtrelenir biz de bunu bulabilmek için ise birden fazla test etmemiz gerekebilir.
Örnek bir uygulama yazdım dilerseniz inceleyelim.
Bu uygulamamız da bizden alınan veriyi ekrana yazıyor ama içinde <script> var ise bunu boşluk ile değiştiriyor.
Gördüğümüz gibi script yazıları boşluk ile değiştiriliyor. Bunu atlatmak için payloadımız da Büyük küçük karakter değişikliliği yapıyoruz.
<ScRipT>alert(1)</ScRipT>
Evet, gördüğümüz üzere bu güvenlik fonksiyonunu başarı ile atlattık. Peki ya daha güçlü bir güvenlik sisteminde ne yapacağız ?
Bu sorunun cevabı çeşitli şifrelemeler ile payloadımızı şifrelemek bu wafın filtreleme esnasında şifrelemelerine dikkat etmemesinden kaynaklanmakta.
Örnek bir uygulama yazdım dilerseniz inceleyelim.
Bu uygulamamız da bizden alınan veriyi ekrana yazıyor ama içinde <script> var ise bunu boşluk ile değiştiriyor.
Gördüğümüz gibi script yazıları boşluk ile değiştiriliyor. Bunu atlatmak için payloadımız da Büyük küçük karakter değişikliliği yapıyoruz.
<ScRipT>alert(1)</ScRipT>
Evet, gördüğümüz üzere bu güvenlik fonksiyonunu başarı ile atlattık. Peki ya daha güçlü bir güvenlik sisteminde ne yapacağız ?
Bu sorunun cevabı çeşitli şifrelemeler ile payloadımızı şifrelemek bu wafın filtreleme esnasında şifrelemelerine dikkat etmemesinden kaynaklanmakta.
Zafiyetin Sömürümü
Zafiyetin sömürümü tarafında kullanılan pek çok araç olsa da en yararlısı BeEF(Browser Exploitation Framework), bu araç sistem için özel payloadlar geliştirip bununla ek olarak backdoor açabilecek gibi ek fonksiyona sahiptir.
Zafiyetin Kapatılması ve Alınabilecek Önemlemler
1- Htmlspecialchars Kullanımı:
Htmlspecialchars fonksiyonunun mantığı kullanıcıdan alınan verileri filtrelemektir. & karakteri, ' ve <> gibi işaretleri html tarafınca uygun hale çevirir.
2- Tarayıcı Güvenlik Duvarı Kullanımı:
Tarayıcı güvenlik duvarının kullanımının önemi siteye giriş esnasında önceden siteyi taraması ve tehdit halinde siteye girişi engellemesi ve sizi uyarmasıdır.
3- Bilmediğiniz ve Güvenmediğiniz Linklere Tıkmamak:
En önemli hususlardan birisidir. Güvenmediğiniz linklere tıklamamanız xss'e maruz kalma riskinizi ciddi oranda etkiler.
Makalemi okuduğunuz için teşekkür ederim. Umarım yararlı olmuştur.
Makalemi okuduğunuz için teşekkür ederim. Umarım yararlı olmuştur.





