SlideShare a Scribd company logo
1 of 19
Download to read offline
HTML CROSS-SITE SCRIPTING CHECK
NETSCALER APPLICATION FIREWALL
FEBRUARY 18, 2016
VELİ ANLAMA
Senior Security Engineer
HTML Cross-Site Scripting Check
HTML Cross-Site Scripting (XSS), kullanıcı isteklerinin header ve POST body’lerinin her ikisini
olası cross-site scripting atakları için kontrol eder. Eğer bir cross-site script bulursa saldırıyı
zararsız hale getirmek için ya isteği değiştirir yada bloklar.
Korunan web sitelerinde ki güvenliği ihlal eden scriptlerin kötüye kullanımını önlemek için, HTML
Cross-Site Scripting kontrolü same origin kuralına uymayan scripteri bloklar. Same origin kuralı
script’lerin bulunduğu sunucu dışında ki sunucularda sunucu içeriğine erişilmesini ve
değiştirmesini önler. Same origin kuralına uymayan herhangi bir script cross-site script olarak
adlandırılır ve başka bir sunucu üzerinde ki içeriğe erişmeki veya değiştirmek için bu script’in
pratik kullanımı cross-stite scripting olarak adlandırılır.
Same origin rule
Cross-site scripting’in bir güvenlik sorunu olmasının sebebi cross-site scripting’e izin veren bir
web sunucusu’nun bu web sunucusu üzerinde bulunmayan ama farklı bir web sunucusu
üzerinde bulunan ve saldırganın sahip olduğu ve onun trafından kontrol edilen bir script
tarafından saldırıya maruz kalabilmesidir.
Malesef çoğu şirketler same origin kuralını ihlal eden Javascript tabanlı gerliştirilmiş web
içeriklerine sahiptirler. Eğer bu gibi sitelerde HTML Cross-Site Scipting aktif edilirse bu kontrolün
meşru aktiviteleri bloklamaması için istisnalar tanımlanmalıdır.
False positive’lerden kaçınmak için relaxation rule’lar (muaf kuralları) oluşturabilirsiniz.
Application Firewall koruması’nın öğrenme motoru (learning engine) relaxation rule’ları
ayarlamak için tavsiyeler sağlayabilir.
Citrix uygulama güvenlik duvarı HTML Cross-Site Scirpting koruması’nı uygularken aşağıda ki
eylem seçeneklerini sunar;
 Block: Block etkinleştirilirse, eğer XSS tag’leri istemci isteğinde bulunursa block eylemi
tettiklenir.
 Log: Eğer log özelliği etkinleştirilirse, HTML Cross-Site Scripting koruması bu korumanın
aldığı eylemi gösteren log mesajları üretir. Eğer block devre dışı bırakıldıysa XSS
ihlalinin saptandığı herbir form alanı veya header için ayrı bir log mesajı oluşturulur. Bu
arada istek blok’landığında sadece tek bir mesaj üretilir. Benzer bir şekilde transform
operasyonu için XSS tag’ları birden fazla alanda dönüştürüldüyse bile istek başına bir
log mesajı üretilir. Meşru isteklere verilen yanıtların bloklanıp bloklanmadığını
belirlermek için log’lar incelenebilir. Log sayılarında ki dramatik yükselişler bir saldırıyı
başlatma teşbbüslerini işaret edebilir.
 Stats: Eğer aktif edilirse stat özelliği ihlaller ve loglar hakkında istatistikleri toplar. Stat
counter’larında ki beklenmeyen bir dalgalanma uygulamanın saldırı altında olduğunu
işaret edebilir.Eğer meşru istemciler bloklanıyorsa yeni relaxation rule’ları eklenmeli veya
varolan bir tanesi değiştirilmelidir.
 Learn:Eğer ideal olarak relaxation rule’larının hangilerinin uygulama için uygun
olduğundan emin değilseniz öğrenilen veriye dayalı HTML Cross-Site Scipting kural
tavsiyeleri türetmek için Application Firewall’un öğrenme özeliğini kullanabilirsiniz.
Application Firewall öğrenme motoru trafiği izler ve gözlemlenen değerlere dayalı
learning tavsiyeleri sağlar. Performansı tehlikeye atmadan en uygun yararın alınması
kısa süreliğine learn seçeneğini aktif ederek kuralların temsili bir örneğini elde
edinilmesiyle sağlanabilir. Sonra bu kurallar deploy edilerek relaxation rule’lara
tanımlanmalı ve learning kapatılmalıdır.
Transform cross-site scripts:Aktif edilirse application firewall isteklerde HTML Cross-
Site Script ile karşılaştığında aşağıda ki değişilikleri yapar:
 Küçüktür işareti (<) HTML kakaterlernden (&lt;) e dönüştürülür.
 Büyüktür işareti (>) HTML karekterlerinden (&gt;) e dönüştürülür.
Bu internet tarayıcılarının <script> gibi tehlikeli html tag’larını yorumlanmamasını garanti
eder ve dolayısıyla zararlı kodlarının çalıştırılmasını önlemiş olur. Eğer request-header
checking ve transformation her ikisi aktfi edilirse request headerlar’da bulunan
herhangibir özel karakter yukarıda bahsedildiği gibi dönüştürülerek zararsız hale getirilir.
Eğer korunaklı web sitenizde bulunan sciptler cross-site scripting özelliği içeriyorsa fakat
siteniz doğru çalışması için bu scritp’lere bağımlı değilse güvenle bloklamayı devre dışı
bırakabilir ve transformation’ı aktif edebilirsiniz. Bu konfigürasyon potansiyel cross-site
scripting saldırlarını durdururken meşru web trafiğinin bloklanmamasını garanti eder
Check comlete URLs for cross-site-script: Eğer bütün URL’in kontrolü aktifse
application firewall HTML cross-site scripting saldırları için URL’in sadece sorgu
kısmını kontrol etmek yerine URL’in bütününü kontrol eder.
Check Request headers:Eğer Request header checking aktifse application firewall
HTML crosstie scripting saldırıları için sadece URL yerine request header’larına kontrol
eder.
Note:Netscaler 10.5 versiyonununda AppFW tekil olarak (<) küçüktür işareti, (>) büyüktür
işaretini veya her iki küçüktür ve büyüktür işareti (<>) gördüğünde Cross-site Scripting olarak
algılar. Ama Netscaler 11 versiyonunda AppFW sadece küçüktür işaretini (<) ve bunu
izleyen büyüktür işaretini (>) gördüğünde Cross-site Scripting olarak algılar
XSS Relaxation
Application Firewall’da belirli form alanı, header veya Cookie’nın cross-site scripting
inceleme kontrolüne girmesini engelleyebiliriz. Relaxation kuralları ayarlayarak bunun gibi
bir veya daha fazla alanın denetlenmesini tamamen bypass edebiliriz.
Application Firewall ile relaxation kurallar üzerinde ince ayarlar yaparak daha sıkı güvelik
uygulayabiliriz. Belirli pattern’lere izin vermek için application firewall’u belki daha esnek
ayarlamanız gerekebilir. Ama güvenlik incelemesini bypass etmek için relaxation kuralların
tanınması uygulamayı sadırılara karşı savunmasız bırakabilir. Çünkü hedef alan herhangi
cross-site scripting saldırı patterni incelemesinden muaf tutulacaktır. Belirli attribute, tag ve
pattern’lere izin vererek cross-site scripting relaxation kurallarını ayrıntılı olarak
belirleyebiliriz. Geri kalan attribute, tag ve pattern’ler bloklanır. Örneğin varsayılan olarak
application firewall güncel 125’den fazla engelleme patern’ine sahiptir. Bilgisayar korsanları
bu patern’leri Cross-site script saldırılarında kullanabildiğinden dolayı application firewall
onları potansiyel tehdit olarak işaretler. Belirli lokasyonlar için bir veya daha fala paternin
güvenli olduğu duüşünülerek relexation kurallarına tanımlanabilir. Potansiyel olarak tehlikeli
XSS patern’lerinin kalanları hedef lokasyonlar için hala kontrol edilir ve herhangi bir
güvenlik ihlali bulunduğunda koruma tetiklenir.
İzin verilen XSS attribute veya tag’lerinin varsayılan listesini özelleştirebilirsiniz.Varsayılan
liste Application Firewall>Signatures>Default Signatures’de bulunmaktadır.Eğer herhangi
signature nesnesini appfw profile’ınıza bağlamazsanız Cross-Site Scripting security check
işlemi için Default Signature nesnesinde belirtilen varsayılan XSS izin verilenler ve
engellenenler listesi kullanılır.
Application Firewall Builtin XSS listesi;
 XSS izin verilen Attribute’ler: Abbr, accesskey, align, alt, axis, bgcolor, border,
cellpadding, cellspacing, char, charoff, charset v.b.gibi 53 tane varsayılan olarak izin
verilen attribute bulunuyor.
 XSS izin verilen Tag’ler: Address, basefont, bgsound, big, blockquote, bg, br,
caption, center, cite, dd, del v.b gibi 47 tane varsayılan izin verilen attribute
bulunuyor
 XSS Engellenen Pattern’ler: FSCommand, javascript:, onAbort, onActivate v.b gibi
129 tane engellenen pattern bulunuyor.
Gözönünde bulundurulması gereken noktalar:
 Value expression isteğe bağlı bir argüman. Field name herhangi bir value
expression’a sahip olmayabilir.
 Bir field nae birden fazla value expression’a bağlanabilir.
 Value expression bir value type’ine atanması gerekir. XSS value type’lar 1) Tag,
2) Attribute veya 3) Pattern olabilir.
 Form filed ve action URL büyük küçük harf duyarlılığı yoktur.
HTML Cross-Site Scripting Relaxation Kural Tanımlama
Netscaler 11 versiyonunda şimdi daha sıkı kontrolere sahipsiniz. Bu versiyonda relaxation
kurallar tanımlamak için Value Type ve Value Expression gibi iseğe bağlı parametreler
bulunuyor. Value type alanı boş bırakılabilirsiniz veya Tag, Attribute, Pattern değerlerini
seçebilirsiniz. Eğer Value Type alanı boş bırakılırsa bu, belirtilen URL’in konfigure edilen
alanı Cross-Site Scripting incelemesinden muaf tutulur. Eğer bir value type seçilirse bir
değer ifadesi belirtilmelidir. Bu değer ifadesi bir regex olacağı gibi bir karakter kalıbıda
olabilir. Bu alana girilen değer izin verilen ve yasaklanan listed ki bir değerle eşleştiğinde
yalnızca relaxation kurallarında ayarlanan bu ifade muaf tutulur.
GUI
1. Security>Application Firewall > Profiles gidip WAF profile’ımız seçip Edit’e tıklayalım.
2. Advanced Settings panosu’ndan Learned Rules’a tıklayalım.
3. Learned Rules’dan HTML Cross-Site Scripting’e çift tıklayalım.
4. Relaxation rule’lara tanımlamak isteğimiz öğrenilen kuralı seçip Edit&Deploy’a
tıklayalım.
5. Kuralı gördükten sonra Ok’e tıklarak relaxation rule’lara tanımlayalım.
Netscaler 10.5 versiyonunda HTML Cross-Site Scripting korumasında Value Type
ve Value Expression alanine bulunmamaktadır.
6. Bu kural learned rule’dan silinecek ve Advaced Setting >Relaxation Rules
tabında’da bulunan relaxation rule’larına aşağıda şekilde görüldüğü gibi
eklenecektir.
HTML Cross-Site Scripting kontrolünün ayarlanması.
1. Security>Application Firewall > Profiles gidip WAF profile’ımız seçip Edit’e tıklayalım.
2. Advanced Settings panosu’ndan Security Checks’e tıklayalım.
3. Security Check tablosu bütün security check’ler için güncel olarak ayarlanan aksiyon
ayarlarını gösterir. Konfigürasyon için aşağıda ki iki seçenek bulunmaktadır.
a. Eğer HTML Cross-Site Scripting için sadece Block, Log, Stat ve Learn aksiyon’larını
enable veya disable etmek istiyorsanız taboda ki check kontrollerini seçebilir veya
check’leri temizleyebilirsiniz. Sonrasında OK’e tıklanmalı ve Save and Close’a
tıklanarak Securit Check kapatılmaldır.
b. Eğer HTML Cross-Site-Scripting için ek seçenekler ayarlanacaksa aşağıda ki
seçenekleri görebilmek için HTML Cross-Site Scripting’e çift tıklanmalıdır:
4. Yukarda ki ayarlardan herhangi birini değiştirdikten sonra değişiklikleri kaydetmek
için Ok’e tıklayınız.
Eğer HTML Cross-Site Scripting kotrolü request Header’larda da yapılmak
isteniyorsa Advanced Settings panosu’ndan Profile Settings’e tıklanmalı ve Common
Settings’de Check Request Headers alanı seçilmelidir.
HTML Cross-Site Scripting loglaması
Log aktif edildiğinde HTML Cross-Site Script security check ihlalleri audit log’da APPFW_XSS
olarak loglanır. Application Firewall CEF ve Native log formatının her ikisini desteklerKomut
satırını kullanarak aşağı daki şekilde APPFW_XSS loglarına ulaşabilirsiniz.
> Shell
> tail -f /var/log/ns.log | grep APPFW_XSS
CEF log format
Jul 11 00:45:51 <local0.info> 10.217.31.98
CEF:0|Citrix|NetScaler|NS11.0|APPFW|APPFW_XSS|6|src=10.217.253.62
geolocation=Unknown spt=4840 method=GET
request=http://aaron.stratum8.net/FFC/CreditCardMind.html?abc=%3Cdef%3E msg=Cross-site
script check failed for field abc="Bad tag: def" cn1=133 cn2=294 cs1=pr_ffc cs2=PPE1
cs3=eUljypvLa0BbabwfGVE52Sewg9U0001 cs4=ALERT cs5=2015 act=not blocked
Native log format
Jul 11 01:00:28 <local0.info> 10.217.31.98 07/11/2015:01:00:28 GMT ns 0-PPE-0 : default
APPFW APPFW_XSS 132 0 : 10.217.253.62 392-PPE0
eUljypvLa0BbabwfGVE52Sewg9U0001 pr_ffc
http://aaron.stratum8.net/FFC/login.php?login_name=%3CBOB%3E&passwd=&drinking_pref=
on
&text_area=&loginButton=ClickToLogin&as_sfid=AAAAAAVFqmYL68IGvkrcn2pzehjfIkm5
E6EZ9FL8YLvIW_41AvAATuKYe9N7uGThSpEAxbb0iBx55jyvqOZNiVK_XwEPstMYvWH
xfUWl62WINwRMrKsEDil-FC4llF Cross-site script special characters seen in fields
<transformed>
Netscaler GUI’yi kullanarak aşağıda ki şekilde loglara ulaşabilirsiniz.
1. Security>Application Firewall’dan Change Engine Settings seçilmelidir.
2. CEF logging seçilmelidir.
3. Security>Application Firewall>Profiles’dan Application Firewall Profile’ımızı seçip Edit
butonuna tıklayalım. Security Checks’den HTML Cross-Site-Scripting’i seçip Logs
butonuna tıklayalım.
4. Logs butonuna tıklandığında otomatik olarak Filter By>Module’den APPFW, File
alanından en yeni ns.log dosyası ve Event Type alanından APPFW_XSS seçilerek
Search alanına’da appfw profile’ın adı yazılarak bu profile ile ilgili loglar karşımıza
gelecektir.
5. Eğer false positive bloklanmış legal http isteklerini search etmek istiyorsak Search
alanına act=blocked yazıp Go butonuna tıklamalıyız. Karşıma blocked’lanan http istekleri
çıkacaktır. False-positve olan legal isteğin log’unun sağında olan kutucuğu seçip Action
menüsünden Deploy’a tıklayarak relaxation’a tanımlayabiliriz.
Bloklanan false-positive içeriğin deploy (relaxation’a tanımlama) edilebilmasi için log
mesaj’ı CEF log formatında olmalıdır. Click to deploy fonksiyonu blocked veya not
blocked action’larıyla oluşturulan log mesajları için yapılabilir.Ama transform operation’ı
için oluşturulan bir log mesajı için buarada relaxation tanımlanamaz.
HTML Cross-Site Scripting violation İstatistikleri
Stat action’ı enabled olduğunda, HTML Cross-Site Scripting check’in counteru application
firewall’un bu security check için aldığı her action için birer artar.İstatistikler rate için ve
Traffic,Violation’lar ve Log’lar için toplam sayısı için toplanır. Log counter’unun artış miktarı
konfigure edilen ayarlara göre değişir. Örneğin , eğer block action’ı enable ise 3 HTML
Cross-Site Scripting violation içeren bir sayfaya yapılan istek stat counter’unu tek arttırır.
Çünkü ilk violation tespit edilir edilmez sayfa bloklanmıştır. Bu arada eğer block disabled ise
aynı request’i processing etmek istatistik counter’larını ve log’u üçe arttırır. Çünkü herbir
violation ayr bir log oluşturur.
HTML Cross-Site Scripting check istatistiklerini command line kullanarak görmek
Command prompt’da aşağıdaki komutu yazalım:
> sh appfw stats
Belirli bir profile için istatistikleri göstermek için aşağıda ki komutu kullan:
> stat appfw profile <profile name>
HTML Cross-Site Scripting check istatistiklerini Netscaler GUI’den görmek
1. System > Security > Application Firewall’ a gidelim.
2. Sağ panoda, Statistics Link’ine tıklayalım.
3. HTML Cross-Site Scripting violation’larıyla iligli istatistikleri ve log’ları görmek için Scroll
bar’ı kullanarak aşağıda doğru inelim. İstatislik tablosu real-time’dır ve 7 saniyede bir
güncellenir
Webgoat ile Stored Cross-Site Scripting Testi
1. Sol tarafta ki menüden Cross-Site Scripting (XSS)’ı aç ve Stored XSS Attacks’a
tıkla. Bu vulnerability’i için Webgoat bir
For this vulnerability, WebGoat saldırganın yararlanabileceği bir text alan girişi
kullanıyor ve malicious scripts’i bu bu site üzerinde bu alana yerşeltiriyor.
2. Başıl olarak Win and iPad yazalım
JavaScipt XSS atağını simüle etmek için aşağıda ki satırı Mesaj body’isne girelim ve
Summit’s tıklayalım
<script type="text/javascript">alert ("Script Executed")</script>
3. Mesajınızın bir likle başlıkta yer aldığını göreceksiniz.
Win and iPad linkine tıklayınız. Script’in çalıştırıldığına dair bir uyarı mesajı
göreceksiniz. Ok’e tıklayın ve mesajı kapatın
Neyse ki uyarı vermekten başka bir şey yapmadı. Ancak başka script’ler çok arkadaş
canlısı olmayabilir.
4. Security>Application Firewall> Profiles’dan application firewall profile’ımızı
açalım. Security Checks’e tıklayıp HTML Cross-Site Scripting’ın block’unu
enable edelim ve Ok’e tıklayalım.
5. WebGoat’a tekrar gidip 1, 2, ve 3 adımlarını tekrar yapalım.
6. Application Firewall tarafından bloklanacaksınız ve aşağıda ki custom olarak
oluşturduğumuz bloklama sayfasını göreceksiniz.
Netscaler WAF XSS

More Related Content

What's hot

OOPs Concepts - Android Programming
OOPs Concepts - Android ProgrammingOOPs Concepts - Android Programming
OOPs Concepts - Android ProgrammingPurvik Rana
 
Oracle Veritabanı Güvenlik Testi Çalışmaları
Oracle Veritabanı Güvenlik Testi ÇalışmalarıOracle Veritabanı Güvenlik Testi Çalışmaları
Oracle Veritabanı Güvenlik Testi ÇalışmalarıBGA Cyber Security
 
Bir Ransomware Saldırısının Anatomisi. A'dan Z'ye Ransomware Saldırıları
Bir Ransomware Saldırısının Anatomisi. A'dan Z'ye Ransomware SaldırılarıBir Ransomware Saldırısının Anatomisi. A'dan Z'ye Ransomware Saldırıları
Bir Ransomware Saldırısının Anatomisi. A'dan Z'ye Ransomware SaldırılarıBGA Cyber Security
 
Siber Güvenlik Eğitimleri | SPARTA BİLİŞİM
Siber Güvenlik Eğitimleri | SPARTA BİLİŞİMSiber Güvenlik Eğitimleri | SPARTA BİLİŞİM
Siber Güvenlik Eğitimleri | SPARTA BİLİŞİMSparta Bilişim
 
Automating security test using Selenium and OWASP ZAP - Practical DevSecOps
Automating security test using Selenium and OWASP ZAP - Practical DevSecOpsAutomating security test using Selenium and OWASP ZAP - Practical DevSecOps
Automating security test using Selenium and OWASP ZAP - Practical DevSecOpsMohammed A. Imran
 
Sandbox Atlatma Teknikleri ve Öneriler
Sandbox Atlatma Teknikleri ve ÖnerilerSandbox Atlatma Teknikleri ve Öneriler
Sandbox Atlatma Teknikleri ve ÖnerilerBGA Cyber Security
 
Pentesting Using Burp Suite
Pentesting Using Burp SuitePentesting Using Burp Suite
Pentesting Using Burp Suitejasonhaddix
 
Xml web services
Xml web servicesXml web services
Xml web servicesRaghu nath
 
Multithreading In Java
Multithreading In JavaMultithreading In Java
Multithreading In Javaparag
 
Concurrency in Java
Concurrency in  JavaConcurrency in  Java
Concurrency in JavaAllan Huang
 
Wrapper class (130240116056)
Wrapper class (130240116056)Wrapper class (130240116056)
Wrapper class (130240116056)Akshay soni
 
Same Origin Policy Weaknesses
Same Origin Policy WeaknessesSame Origin Policy Weaknesses
Same Origin Policy Weaknesseskuza55
 

What's hot (20)

OOPs Concepts - Android Programming
OOPs Concepts - Android ProgrammingOOPs Concepts - Android Programming
OOPs Concepts - Android Programming
 
BGA Eğitim Sunum
BGA Eğitim SunumBGA Eğitim Sunum
BGA Eğitim Sunum
 
Timer control
Timer controlTimer control
Timer control
 
Core Java
Core JavaCore Java
Core Java
 
Oscp preparation
Oscp preparationOscp preparation
Oscp preparation
 
Oracle Veritabanı Güvenlik Testi Çalışmaları
Oracle Veritabanı Güvenlik Testi ÇalışmalarıOracle Veritabanı Güvenlik Testi Çalışmaları
Oracle Veritabanı Güvenlik Testi Çalışmaları
 
Bir Ransomware Saldırısının Anatomisi. A'dan Z'ye Ransomware Saldırıları
Bir Ransomware Saldırısının Anatomisi. A'dan Z'ye Ransomware SaldırılarıBir Ransomware Saldırısının Anatomisi. A'dan Z'ye Ransomware Saldırıları
Bir Ransomware Saldırısının Anatomisi. A'dan Z'ye Ransomware Saldırıları
 
Siber Güvenlik Eğitimleri | SPARTA BİLİŞİM
Siber Güvenlik Eğitimleri | SPARTA BİLİŞİMSiber Güvenlik Eğitimleri | SPARTA BİLİŞİM
Siber Güvenlik Eğitimleri | SPARTA BİLİŞİM
 
JAVA PROGRAMMING- GUI Programming with Swing - The Swing Buttons
JAVA PROGRAMMING- GUI Programming with Swing - The Swing ButtonsJAVA PROGRAMMING- GUI Programming with Swing - The Swing Buttons
JAVA PROGRAMMING- GUI Programming with Swing - The Swing Buttons
 
Java 8 streams
Java 8 streamsJava 8 streams
Java 8 streams
 
Automating security test using Selenium and OWASP ZAP - Practical DevSecOps
Automating security test using Selenium and OWASP ZAP - Practical DevSecOpsAutomating security test using Selenium and OWASP ZAP - Practical DevSecOps
Automating security test using Selenium and OWASP ZAP - Practical DevSecOps
 
xaml overview
xaml overviewxaml overview
xaml overview
 
Sandbox Atlatma Teknikleri ve Öneriler
Sandbox Atlatma Teknikleri ve ÖnerilerSandbox Atlatma Teknikleri ve Öneriler
Sandbox Atlatma Teknikleri ve Öneriler
 
EXPLOIT POST EXPLOITATION
EXPLOIT POST EXPLOITATIONEXPLOIT POST EXPLOITATION
EXPLOIT POST EXPLOITATION
 
Pentesting Using Burp Suite
Pentesting Using Burp SuitePentesting Using Burp Suite
Pentesting Using Burp Suite
 
Xml web services
Xml web servicesXml web services
Xml web services
 
Multithreading In Java
Multithreading In JavaMultithreading In Java
Multithreading In Java
 
Concurrency in Java
Concurrency in  JavaConcurrency in  Java
Concurrency in Java
 
Wrapper class (130240116056)
Wrapper class (130240116056)Wrapper class (130240116056)
Wrapper class (130240116056)
 
Same Origin Policy Weaknesses
Same Origin Policy WeaknessesSame Origin Policy Weaknesses
Same Origin Policy Weaknesses
 

Similar to Netscaler WAF XSS

SINIFLANDIRMA TEMELLİ KORELASYON YAKLAŞIMI
SINIFLANDIRMA TEMELLİ KORELASYON YAKLAŞIMISINIFLANDIRMA TEMELLİ KORELASYON YAKLAŞIMI
SINIFLANDIRMA TEMELLİ KORELASYON YAKLAŞIMIErtugrul Akbas
 
Security Misconfiguration (Güvenlik Yalnış Yapılandırma)
Security Misconfiguration (Güvenlik Yalnış Yapılandırma)Security Misconfiguration (Güvenlik Yalnış Yapılandırma)
Security Misconfiguration (Güvenlik Yalnış Yapılandırma)Abdullah Celik
 
Web Application Firewall Tercih Rehberi
Web Application Firewall Tercih RehberiWeb Application Firewall Tercih Rehberi
Web Application Firewall Tercih RehberiBGA Cyber Security
 
Web servisi güvenliği
Web servisi güvenliğiWeb servisi güvenliği
Web servisi güvenliğiEmrah Gürcan
 
Writing Secure Code With .Net
Writing Secure Code With .NetWriting Secure Code With .Net
Writing Secure Code With .NetElif Bayrakdar
 
Guvenli Flash Uygulamalari
Guvenli Flash UygulamalariGuvenli Flash Uygulamalari
Guvenli Flash UygulamalariFerruh Mavituna
 
[OWASP-TR Uygulama Güvenliği Günü 2016] Emre Kısa - HTTP Güvenlik Başlıkları ...
[OWASP-TR Uygulama Güvenliği Günü 2016] Emre Kısa - HTTP Güvenlik Başlıkları ...[OWASP-TR Uygulama Güvenliği Günü 2016] Emre Kısa - HTTP Güvenlik Başlıkları ...
[OWASP-TR Uygulama Güvenliği Günü 2016] Emre Kısa - HTTP Güvenlik Başlıkları ...OWASP Turkiye
 
Web Application Security
Web Application SecurityWeb Application Security
Web Application Securitycanyoupwn.me
 
45965 php-source-code-analysis
45965 php-source-code-analysis45965 php-source-code-analysis
45965 php-source-code-analysisAttaporn Ninsuwan
 
SSL-TLS Guvenlik
SSL-TLS GuvenlikSSL-TLS Guvenlik
SSL-TLS GuvenlikFevziye Tas
 
Mobil Uygulama Güvenlik Testlerinde Sertifika Sabitleme Özelliğinin Atlatılması
Mobil Uygulama Güvenlik Testlerinde Sertifika Sabitleme Özelliğinin AtlatılmasıMobil Uygulama Güvenlik Testlerinde Sertifika Sabitleme Özelliğinin Atlatılması
Mobil Uygulama Güvenlik Testlerinde Sertifika Sabitleme Özelliğinin AtlatılmasıBGA Cyber Security
 

Similar to Netscaler WAF XSS (13)

Netscaler WAF XSS
Netscaler WAF XSSNetscaler WAF XSS
Netscaler WAF XSS
 
SINIFLANDIRMA TEMELLİ KORELASYON YAKLAŞIMI
SINIFLANDIRMA TEMELLİ KORELASYON YAKLAŞIMISINIFLANDIRMA TEMELLİ KORELASYON YAKLAŞIMI
SINIFLANDIRMA TEMELLİ KORELASYON YAKLAŞIMI
 
Security Misconfiguration (Güvenlik Yalnış Yapılandırma)
Security Misconfiguration (Güvenlik Yalnış Yapılandırma)Security Misconfiguration (Güvenlik Yalnış Yapılandırma)
Security Misconfiguration (Güvenlik Yalnış Yapılandırma)
 
Web Application Firewall Tercih Rehberi
Web Application Firewall Tercih RehberiWeb Application Firewall Tercih Rehberi
Web Application Firewall Tercih Rehberi
 
Web servisi güvenliği
Web servisi güvenliğiWeb servisi güvenliği
Web servisi güvenliği
 
Writing Secure Code With .Net
Writing Secure Code With .NetWriting Secure Code With .Net
Writing Secure Code With .Net
 
Guvenli Flash Uygulamalari
Guvenli Flash UygulamalariGuvenli Flash Uygulamalari
Guvenli Flash Uygulamalari
 
[OWASP-TR Uygulama Güvenliği Günü 2016] Emre Kısa - HTTP Güvenlik Başlıkları ...
[OWASP-TR Uygulama Güvenliği Günü 2016] Emre Kısa - HTTP Güvenlik Başlıkları ...[OWASP-TR Uygulama Güvenliği Günü 2016] Emre Kısa - HTTP Güvenlik Başlıkları ...
[OWASP-TR Uygulama Güvenliği Günü 2016] Emre Kısa - HTTP Güvenlik Başlıkları ...
 
Web Application Security
Web Application SecurityWeb Application Security
Web Application Security
 
45965 php-source-code-analysis
45965 php-source-code-analysis45965 php-source-code-analysis
45965 php-source-code-analysis
 
IIS
IISIIS
IIS
 
SSL-TLS Guvenlik
SSL-TLS GuvenlikSSL-TLS Guvenlik
SSL-TLS Guvenlik
 
Mobil Uygulama Güvenlik Testlerinde Sertifika Sabitleme Özelliğinin Atlatılması
Mobil Uygulama Güvenlik Testlerinde Sertifika Sabitleme Özelliğinin AtlatılmasıMobil Uygulama Güvenlik Testlerinde Sertifika Sabitleme Özelliğinin Atlatılması
Mobil Uygulama Güvenlik Testlerinde Sertifika Sabitleme Özelliğinin Atlatılması
 

Netscaler WAF XSS

  • 1. HTML CROSS-SITE SCRIPTING CHECK NETSCALER APPLICATION FIREWALL FEBRUARY 18, 2016 VELİ ANLAMA Senior Security Engineer
  • 2. HTML Cross-Site Scripting Check HTML Cross-Site Scripting (XSS), kullanıcı isteklerinin header ve POST body’lerinin her ikisini olası cross-site scripting atakları için kontrol eder. Eğer bir cross-site script bulursa saldırıyı zararsız hale getirmek için ya isteği değiştirir yada bloklar. Korunan web sitelerinde ki güvenliği ihlal eden scriptlerin kötüye kullanımını önlemek için, HTML Cross-Site Scripting kontrolü same origin kuralına uymayan scripteri bloklar. Same origin kuralı script’lerin bulunduğu sunucu dışında ki sunucularda sunucu içeriğine erişilmesini ve değiştirmesini önler. Same origin kuralına uymayan herhangi bir script cross-site script olarak adlandırılır ve başka bir sunucu üzerinde ki içeriğe erişmeki veya değiştirmek için bu script’in pratik kullanımı cross-stite scripting olarak adlandırılır. Same origin rule
  • 3. Cross-site scripting’in bir güvenlik sorunu olmasının sebebi cross-site scripting’e izin veren bir web sunucusu’nun bu web sunucusu üzerinde bulunmayan ama farklı bir web sunucusu üzerinde bulunan ve saldırganın sahip olduğu ve onun trafından kontrol edilen bir script tarafından saldırıya maruz kalabilmesidir. Malesef çoğu şirketler same origin kuralını ihlal eden Javascript tabanlı gerliştirilmiş web içeriklerine sahiptirler. Eğer bu gibi sitelerde HTML Cross-Site Scipting aktif edilirse bu kontrolün meşru aktiviteleri bloklamaması için istisnalar tanımlanmalıdır. False positive’lerden kaçınmak için relaxation rule’lar (muaf kuralları) oluşturabilirsiniz. Application Firewall koruması’nın öğrenme motoru (learning engine) relaxation rule’ları ayarlamak için tavsiyeler sağlayabilir. Citrix uygulama güvenlik duvarı HTML Cross-Site Scirpting koruması’nı uygularken aşağıda ki eylem seçeneklerini sunar;  Block: Block etkinleştirilirse, eğer XSS tag’leri istemci isteğinde bulunursa block eylemi tettiklenir.  Log: Eğer log özelliği etkinleştirilirse, HTML Cross-Site Scripting koruması bu korumanın aldığı eylemi gösteren log mesajları üretir. Eğer block devre dışı bırakıldıysa XSS ihlalinin saptandığı herbir form alanı veya header için ayrı bir log mesajı oluşturulur. Bu arada istek blok’landığında sadece tek bir mesaj üretilir. Benzer bir şekilde transform operasyonu için XSS tag’ları birden fazla alanda dönüştürüldüyse bile istek başına bir log mesajı üretilir. Meşru isteklere verilen yanıtların bloklanıp bloklanmadığını belirlermek için log’lar incelenebilir. Log sayılarında ki dramatik yükselişler bir saldırıyı başlatma teşbbüslerini işaret edebilir.
  • 4.  Stats: Eğer aktif edilirse stat özelliği ihlaller ve loglar hakkında istatistikleri toplar. Stat counter’larında ki beklenmeyen bir dalgalanma uygulamanın saldırı altında olduğunu işaret edebilir.Eğer meşru istemciler bloklanıyorsa yeni relaxation rule’ları eklenmeli veya varolan bir tanesi değiştirilmelidir.  Learn:Eğer ideal olarak relaxation rule’larının hangilerinin uygulama için uygun olduğundan emin değilseniz öğrenilen veriye dayalı HTML Cross-Site Scipting kural tavsiyeleri türetmek için Application Firewall’un öğrenme özeliğini kullanabilirsiniz. Application Firewall öğrenme motoru trafiği izler ve gözlemlenen değerlere dayalı learning tavsiyeleri sağlar. Performansı tehlikeye atmadan en uygun yararın alınması kısa süreliğine learn seçeneğini aktif ederek kuralların temsili bir örneğini elde edinilmesiyle sağlanabilir. Sonra bu kurallar deploy edilerek relaxation rule’lara tanımlanmalı ve learning kapatılmalıdır. Transform cross-site scripts:Aktif edilirse application firewall isteklerde HTML Cross- Site Script ile karşılaştığında aşağıda ki değişilikleri yapar:  Küçüktür işareti (<) HTML kakaterlernden (&lt;) e dönüştürülür.  Büyüktür işareti (>) HTML karekterlerinden (&gt;) e dönüştürülür. Bu internet tarayıcılarının <script> gibi tehlikeli html tag’larını yorumlanmamasını garanti eder ve dolayısıyla zararlı kodlarının çalıştırılmasını önlemiş olur. Eğer request-header checking ve transformation her ikisi aktfi edilirse request headerlar’da bulunan herhangibir özel karakter yukarıda bahsedildiği gibi dönüştürülerek zararsız hale getirilir. Eğer korunaklı web sitenizde bulunan sciptler cross-site scripting özelliği içeriyorsa fakat siteniz doğru çalışması için bu scritp’lere bağımlı değilse güvenle bloklamayı devre dışı bırakabilir ve transformation’ı aktif edebilirsiniz. Bu konfigürasyon potansiyel cross-site scripting saldırlarını durdururken meşru web trafiğinin bloklanmamasını garanti eder Check comlete URLs for cross-site-script: Eğer bütün URL’in kontrolü aktifse application firewall HTML cross-site scripting saldırları için URL’in sadece sorgu kısmını kontrol etmek yerine URL’in bütününü kontrol eder. Check Request headers:Eğer Request header checking aktifse application firewall HTML crosstie scripting saldırıları için sadece URL yerine request header’larına kontrol eder. Note:Netscaler 10.5 versiyonununda AppFW tekil olarak (<) küçüktür işareti, (>) büyüktür işaretini veya her iki küçüktür ve büyüktür işareti (<>) gördüğünde Cross-site Scripting olarak algılar. Ama Netscaler 11 versiyonunda AppFW sadece küçüktür işaretini (<) ve bunu izleyen büyüktür işaretini (>) gördüğünde Cross-site Scripting olarak algılar
  • 5. XSS Relaxation Application Firewall’da belirli form alanı, header veya Cookie’nın cross-site scripting inceleme kontrolüne girmesini engelleyebiliriz. Relaxation kuralları ayarlayarak bunun gibi bir veya daha fazla alanın denetlenmesini tamamen bypass edebiliriz. Application Firewall ile relaxation kurallar üzerinde ince ayarlar yaparak daha sıkı güvelik uygulayabiliriz. Belirli pattern’lere izin vermek için application firewall’u belki daha esnek ayarlamanız gerekebilir. Ama güvenlik incelemesini bypass etmek için relaxation kuralların tanınması uygulamayı sadırılara karşı savunmasız bırakabilir. Çünkü hedef alan herhangi cross-site scripting saldırı patterni incelemesinden muaf tutulacaktır. Belirli attribute, tag ve pattern’lere izin vererek cross-site scripting relaxation kurallarını ayrıntılı olarak belirleyebiliriz. Geri kalan attribute, tag ve pattern’ler bloklanır. Örneğin varsayılan olarak application firewall güncel 125’den fazla engelleme patern’ine sahiptir. Bilgisayar korsanları bu patern’leri Cross-site script saldırılarında kullanabildiğinden dolayı application firewall onları potansiyel tehdit olarak işaretler. Belirli lokasyonlar için bir veya daha fala paternin güvenli olduğu duüşünülerek relexation kurallarına tanımlanabilir. Potansiyel olarak tehlikeli XSS patern’lerinin kalanları hedef lokasyonlar için hala kontrol edilir ve herhangi bir güvenlik ihlali bulunduğunda koruma tetiklenir. İzin verilen XSS attribute veya tag’lerinin varsayılan listesini özelleştirebilirsiniz.Varsayılan liste Application Firewall>Signatures>Default Signatures’de bulunmaktadır.Eğer herhangi signature nesnesini appfw profile’ınıza bağlamazsanız Cross-Site Scripting security check işlemi için Default Signature nesnesinde belirtilen varsayılan XSS izin verilenler ve engellenenler listesi kullanılır. Application Firewall Builtin XSS listesi;  XSS izin verilen Attribute’ler: Abbr, accesskey, align, alt, axis, bgcolor, border, cellpadding, cellspacing, char, charoff, charset v.b.gibi 53 tane varsayılan olarak izin verilen attribute bulunuyor.  XSS izin verilen Tag’ler: Address, basefont, bgsound, big, blockquote, bg, br, caption, center, cite, dd, del v.b gibi 47 tane varsayılan izin verilen attribute bulunuyor  XSS Engellenen Pattern’ler: FSCommand, javascript:, onAbort, onActivate v.b gibi 129 tane engellenen pattern bulunuyor.
  • 6. Gözönünde bulundurulması gereken noktalar:  Value expression isteğe bağlı bir argüman. Field name herhangi bir value expression’a sahip olmayabilir.  Bir field nae birden fazla value expression’a bağlanabilir.  Value expression bir value type’ine atanması gerekir. XSS value type’lar 1) Tag, 2) Attribute veya 3) Pattern olabilir.  Form filed ve action URL büyük küçük harf duyarlılığı yoktur. HTML Cross-Site Scripting Relaxation Kural Tanımlama Netscaler 11 versiyonunda şimdi daha sıkı kontrolere sahipsiniz. Bu versiyonda relaxation kurallar tanımlamak için Value Type ve Value Expression gibi iseğe bağlı parametreler bulunuyor. Value type alanı boş bırakılabilirsiniz veya Tag, Attribute, Pattern değerlerini seçebilirsiniz. Eğer Value Type alanı boş bırakılırsa bu, belirtilen URL’in konfigure edilen alanı Cross-Site Scripting incelemesinden muaf tutulur. Eğer bir value type seçilirse bir değer ifadesi belirtilmelidir. Bu değer ifadesi bir regex olacağı gibi bir karakter kalıbıda olabilir. Bu alana girilen değer izin verilen ve yasaklanan listed ki bir değerle eşleştiğinde yalnızca relaxation kurallarında ayarlanan bu ifade muaf tutulur. GUI 1. Security>Application Firewall > Profiles gidip WAF profile’ımız seçip Edit’e tıklayalım. 2. Advanced Settings panosu’ndan Learned Rules’a tıklayalım.
  • 7. 3. Learned Rules’dan HTML Cross-Site Scripting’e çift tıklayalım. 4. Relaxation rule’lara tanımlamak isteğimiz öğrenilen kuralı seçip Edit&Deploy’a tıklayalım.
  • 8. 5. Kuralı gördükten sonra Ok’e tıklarak relaxation rule’lara tanımlayalım. Netscaler 10.5 versiyonunda HTML Cross-Site Scripting korumasında Value Type ve Value Expression alanine bulunmamaktadır.
  • 9. 6. Bu kural learned rule’dan silinecek ve Advaced Setting >Relaxation Rules tabında’da bulunan relaxation rule’larına aşağıda şekilde görüldüğü gibi eklenecektir. HTML Cross-Site Scripting kontrolünün ayarlanması. 1. Security>Application Firewall > Profiles gidip WAF profile’ımız seçip Edit’e tıklayalım. 2. Advanced Settings panosu’ndan Security Checks’e tıklayalım. 3. Security Check tablosu bütün security check’ler için güncel olarak ayarlanan aksiyon ayarlarını gösterir. Konfigürasyon için aşağıda ki iki seçenek bulunmaktadır. a. Eğer HTML Cross-Site Scripting için sadece Block, Log, Stat ve Learn aksiyon’larını enable veya disable etmek istiyorsanız taboda ki check kontrollerini seçebilir veya check’leri temizleyebilirsiniz. Sonrasında OK’e tıklanmalı ve Save and Close’a tıklanarak Securit Check kapatılmaldır.
  • 10. b. Eğer HTML Cross-Site-Scripting için ek seçenekler ayarlanacaksa aşağıda ki seçenekleri görebilmek için HTML Cross-Site Scripting’e çift tıklanmalıdır: 4. Yukarda ki ayarlardan herhangi birini değiştirdikten sonra değişiklikleri kaydetmek için Ok’e tıklayınız. Eğer HTML Cross-Site Scripting kotrolü request Header’larda da yapılmak isteniyorsa Advanced Settings panosu’ndan Profile Settings’e tıklanmalı ve Common Settings’de Check Request Headers alanı seçilmelidir.
  • 11. HTML Cross-Site Scripting loglaması Log aktif edildiğinde HTML Cross-Site Script security check ihlalleri audit log’da APPFW_XSS olarak loglanır. Application Firewall CEF ve Native log formatının her ikisini desteklerKomut satırını kullanarak aşağı daki şekilde APPFW_XSS loglarına ulaşabilirsiniz. > Shell > tail -f /var/log/ns.log | grep APPFW_XSS CEF log format Jul 11 00:45:51 <local0.info> 10.217.31.98 CEF:0|Citrix|NetScaler|NS11.0|APPFW|APPFW_XSS|6|src=10.217.253.62 geolocation=Unknown spt=4840 method=GET request=http://aaron.stratum8.net/FFC/CreditCardMind.html?abc=%3Cdef%3E msg=Cross-site script check failed for field abc="Bad tag: def" cn1=133 cn2=294 cs1=pr_ffc cs2=PPE1 cs3=eUljypvLa0BbabwfGVE52Sewg9U0001 cs4=ALERT cs5=2015 act=not blocked Native log format Jul 11 01:00:28 <local0.info> 10.217.31.98 07/11/2015:01:00:28 GMT ns 0-PPE-0 : default APPFW APPFW_XSS 132 0 : 10.217.253.62 392-PPE0 eUljypvLa0BbabwfGVE52Sewg9U0001 pr_ffc http://aaron.stratum8.net/FFC/login.php?login_name=%3CBOB%3E&passwd=&drinking_pref= on &text_area=&loginButton=ClickToLogin&as_sfid=AAAAAAVFqmYL68IGvkrcn2pzehjfIkm5 E6EZ9FL8YLvIW_41AvAATuKYe9N7uGThSpEAxbb0iBx55jyvqOZNiVK_XwEPstMYvWH xfUWl62WINwRMrKsEDil-FC4llF Cross-site script special characters seen in fields <transformed>
  • 12. Netscaler GUI’yi kullanarak aşağıda ki şekilde loglara ulaşabilirsiniz. 1. Security>Application Firewall’dan Change Engine Settings seçilmelidir. 2. CEF logging seçilmelidir. 3. Security>Application Firewall>Profiles’dan Application Firewall Profile’ımızı seçip Edit butonuna tıklayalım. Security Checks’den HTML Cross-Site-Scripting’i seçip Logs butonuna tıklayalım.
  • 13. 4. Logs butonuna tıklandığında otomatik olarak Filter By>Module’den APPFW, File alanından en yeni ns.log dosyası ve Event Type alanından APPFW_XSS seçilerek Search alanına’da appfw profile’ın adı yazılarak bu profile ile ilgili loglar karşımıza gelecektir.
  • 14. 5. Eğer false positive bloklanmış legal http isteklerini search etmek istiyorsak Search alanına act=blocked yazıp Go butonuna tıklamalıyız. Karşıma blocked’lanan http istekleri çıkacaktır. False-positve olan legal isteğin log’unun sağında olan kutucuğu seçip Action menüsünden Deploy’a tıklayarak relaxation’a tanımlayabiliriz. Bloklanan false-positive içeriğin deploy (relaxation’a tanımlama) edilebilmasi için log mesaj’ı CEF log formatında olmalıdır. Click to deploy fonksiyonu blocked veya not blocked action’larıyla oluşturulan log mesajları için yapılabilir.Ama transform operation’ı için oluşturulan bir log mesajı için buarada relaxation tanımlanamaz. HTML Cross-Site Scripting violation İstatistikleri Stat action’ı enabled olduğunda, HTML Cross-Site Scripting check’in counteru application firewall’un bu security check için aldığı her action için birer artar.İstatistikler rate için ve Traffic,Violation’lar ve Log’lar için toplam sayısı için toplanır. Log counter’unun artış miktarı konfigure edilen ayarlara göre değişir. Örneğin , eğer block action’ı enable ise 3 HTML Cross-Site Scripting violation içeren bir sayfaya yapılan istek stat counter’unu tek arttırır. Çünkü ilk violation tespit edilir edilmez sayfa bloklanmıştır. Bu arada eğer block disabled ise aynı request’i processing etmek istatistik counter’larını ve log’u üçe arttırır. Çünkü herbir violation ayr bir log oluşturur. HTML Cross-Site Scripting check istatistiklerini command line kullanarak görmek Command prompt’da aşağıdaki komutu yazalım: > sh appfw stats Belirli bir profile için istatistikleri göstermek için aşağıda ki komutu kullan: > stat appfw profile <profile name>
  • 15. HTML Cross-Site Scripting check istatistiklerini Netscaler GUI’den görmek 1. System > Security > Application Firewall’ a gidelim. 2. Sağ panoda, Statistics Link’ine tıklayalım. 3. HTML Cross-Site Scripting violation’larıyla iligli istatistikleri ve log’ları görmek için Scroll bar’ı kullanarak aşağıda doğru inelim. İstatislik tablosu real-time’dır ve 7 saniyede bir güncellenir Webgoat ile Stored Cross-Site Scripting Testi 1. Sol tarafta ki menüden Cross-Site Scripting (XSS)’ı aç ve Stored XSS Attacks’a tıkla. Bu vulnerability’i için Webgoat bir For this vulnerability, WebGoat saldırganın yararlanabileceği bir text alan girişi kullanıyor ve malicious scripts’i bu bu site üzerinde bu alana yerşeltiriyor.
  • 16. 2. Başıl olarak Win and iPad yazalım JavaScipt XSS atağını simüle etmek için aşağıda ki satırı Mesaj body’isne girelim ve Summit’s tıklayalım <script type="text/javascript">alert ("Script Executed")</script> 3. Mesajınızın bir likle başlıkta yer aldığını göreceksiniz.
  • 17. Win and iPad linkine tıklayınız. Script’in çalıştırıldığına dair bir uyarı mesajı göreceksiniz. Ok’e tıklayın ve mesajı kapatın Neyse ki uyarı vermekten başka bir şey yapmadı. Ancak başka script’ler çok arkadaş canlısı olmayabilir. 4. Security>Application Firewall> Profiles’dan application firewall profile’ımızı açalım. Security Checks’e tıklayıp HTML Cross-Site Scripting’ın block’unu enable edelim ve Ok’e tıklayalım.
  • 18. 5. WebGoat’a tekrar gidip 1, 2, ve 3 adımlarını tekrar yapalım. 6. Application Firewall tarafından bloklanacaksınız ve aşağıda ki custom olarak oluşturduğumuz bloklama sayfasını göreceksiniz.