WAF Nedir, Nasıl Bypass Edilir?
Firewall yerel ağımızla internet, server, uygulama arasındaki trafiği kontrol eden yazılımsal ya da donanımsal vardır ve genellikle ağ sistemlerini korumak için kullanılan güvenlik sistemleridir. Dışarıdan ağımıza gelen ve ağımızdan dışarıya giden her paket firewallun kontrolüyle hareket eder. Bu paketler firewall da ki tanımlanan kurallara göre engellenir ya da paketlerin geçişine izin verilir(paket filtrelemesi yapar). Bu kurallar çeşitli yöntemlere göre(ip adresleri,alan adları,protokoller(IP,TCP,HTTP,FTP,UDP,ICMP,MTP,SNMP,TELNET) ve portlar) belirlenebilir. Peki firewall’a neden ihtiyaç duyarız. Masum kullanıcılar sadece virüs tehdidi altında değildir. Bilgisayarınızda ki kişisel verileriniz de bir güvenlik riski oluşturur. Firewallar ise size dışardan gelen her türlü saldırıyı koruma imkanı sağlar
1.Network Layer Firewall
Bu yazımda sizlere kısaca network katmanlı firewalldan bahsedip asıl konumuz olan WAF(web application firewall)’ın nasıl bir yapıya sahip olduğunu, nasıl çalıştığını,nasıl tespit edildiğini,ve bypass edilme yöntemlerini anlatacağım. Network katmanlı firewallar TCP/IP stack yığınına göre düşük bir level de faaliyet gösteren oluşturduğumuz white ya da black listdeki kurallarla eşleşmediği sürece paket geçişlerine izin vermeyen güvenlik duvarlarıdır.Birçok kez bir uygulamaya injection yapmaya çalıştığımızda gönderdiğimiz paketler düşüyorsa ve server dan geri dönüş gelmiyorsa internet bağlantımız dan da eminsek büyük ihtimalle ağda firewall vardır.
Şimdi gelelim WAF’a. WAF, web uygulamalarına yapılan genellikle SQLi gibi saldırıları tespit edip engellemeye çalışan uygulama önünde bir çeşit proxy görevi gören güvenlik duvarlarıdır; ancak normal firewallare göre http trafiğini iyi anlar ve zararlı istekleri bloklar. İstekler ya da saldırılar uygulamaya ulaşmadan önceki trafiği analiz ettiği için buraya odaklanır IPs’e da avantaj sağlar. Genelikle client ile web server arasındadır. Şimdi WAF nasıl çalışıyor onu öğrenelim.
2.Web Application Firewall
WAF, webservera gelen HTTP isteklerini eleyerek çalışır.Hem
POST
hem de
GET
isteklerini her türlü ziyaretçinin trafiğini inceleyerek uygulanan kurallarca denetler. Website adreslerini ya da URL’leri sıradışı davranışlara karşı izler,sürpriz bir kullanıcıyla karşılaşırsa CAPTCHA’ya yönlendir, capcha doğru bir şekilde işaretledikten sonra işleme devam edilir, yok eğer yanlış cevap verirsek bot, robot, saldırgan olmamıza karşın o anki trafiğimizi bloklar. WAF çeşitli şekillerde çalışmakta olup parsing, decoding(base64) filtreleme gibi yöntemlerle faaliyet gösterir
Şimdi WAF’ın ne olduğundan ve algılama mekanizmasından biraz bahsettik, sıradaki görevimiz WAF’ı tespit etmek; tespit işleminden sonra da bypass edip yolumuza devam edeceğiz
Detecting the WAF!
WAF’ın mekanizmasını anlamak icin en iyi yöntemlerden biri de WAF neye karsı uygulamayı korumaya calısıyor ve tehdidi algıladgı zaman nasıl bir tepki veriyor sorularının cevabını öğrenmek olucaktır. Regularity ve audit frameworkleri genelde OWASP 10’deki tehdidlere göre kendilerini korumaya çalışırlar;OWASP 10 XSS ve SQLi gibi saldırıları test etmek icin kendince methodlar icerir. Bazı WAFlar default politikaları sayesinde, email toplayı robotlara, internet wormlarına, icerik toplayıcı botlara karşı uygulamaları korumaya çalışırlar. Tehdit algılandıgı zaman WAF kullanıcıya bazı standard error mesajları sıralayarak “OK” kodlu HTTP cevabını dönecektir. HTTP kodu WAF olup olmadıgını anlayacak kadar akıllı değildir.
Ek olarak bir firewallun varlığını tepit etmek icin sürekli istek gönderirsek ve oturum hızlı bir sekilde sonlanıyorsa burda firewall var demektir;bir sonraki görüntüde olduğu gibi
En cok bilinen tespit araclarından birisi WAFW00F tooludur.Kolay ve basit bir sekilde WAF keşfi yapabilir. Bir sonraki ssde basarılı bir şekilde Citrix Netscaler firewallunu tespit ediyoruz.
Application → Kali Linux → Information Gathering → IDS/IPS Identification → wafw00f
Nmap de firewall tespit etmek icin script iceren sık kullanılabilen bir aractır. Script parametresiyle çalıştırdığımzda web appllication firewallu tespit edebiliyoruz.
Eğer imperva firewallunu tespit etmiş isek
./imperva.sh
scriptini calıştırarak ceşitli testler otomatik olarak firewall üzeirnde uygulanır.
Wafw00f’ın nasıl çalıştığı,kurulumu,algılama yapısının anlatıldığı güzel bir github reposu: GitHub - EnableSecurity/wafw00f: WAFW00F allows one to identify and fingerprint Web Application Firewall (WAF) products protecting a website.
Buraya kadar olan kısımda çeşitli methodlarla ve toollarla WAF’ı tespit ettik, WAF tespit etmek sızma testi yaparken ya da bir e-ticaret sitesini hacklerken; bilgi toplama aşamasının önemli bir sürecidir.
How to bypass WAF!
Hedef üzerinde bazı testler uygulayarak başlayalım;nmap kullanarak hedef networku tarayalım; IPs ile birlikte servisler üzeirnde hangi portlar çalıştığını(cekici portlarımız:80,443) waffit ya da imperva-detect scriptini calıstırarak hangi servislerin firewall tarafından korundugunu tespit ettik.Korumasız IPs’e exlploit uygulamak icin bizim icin cok güzel tabi.
Hemen bypass yöntemleine gecelim
Ancak coğu WAF bu methodu anlayabiliyor; “Forbidden” hatası veriyor.
Bir önceki methodu komutların bazı harflerini küçük harfle yazarak deneyelim..
Ancak bu methodda bazı WAFlar tarafından yakalanabilir.
*Bir önceki methoddaki komutları kombine edip deneyelim.
Bu method cogu WAF tarafından algılanmaz
Anahtar kelimlerin yerlerini değiştirelim
Çoğu WAF “UNION SELECT” statementini URL’nin icinde algıladıgı an siler; biz bu fonksiyonu exploit
etmek icin kullanalım.
Overview UNIunionON SELselectECT 1,2,3,4....
(“union” ve “select” silinecek, sonuc “UNION SELECT” olacak)
Bu method tüm firewallarda calısmaz, “UNION” VE “SELECT” komutlarını algıladıkları an silerler.
Buraya kadar olan yaptığımız manuel değişiklikleri “union” ve “select” komutlarını rastgele büyük-kücük harf seklinde düzenleyerek karşı sisteme gönderen tamper isimli klasöründe bypass scripti bulunduran SQLmap aracı vardır.
Şimdi biraz daha advance methodlara gecelim.
Çoğu firewall C/C++ diliyle geliştirilmiştir ve biz firewallu buffer overflow kullanarak crash edebiliriz.
Aşağıdaki commiti uyguladığımızda WAF’ı crash edebiliriz
500 cevabını alırsak buffer overflow methoduyla exploit edebilirz.
Sıradaki method; hex değerleriyle karakterlerin yerlerini değiştirelim
burdaki örnekte “union ve select” komutlarındaki hex(url-encoded) değerleriyle bazı karakterlerin yerlerini değiştirdik.
Karakterlerin hex değerlerini veren bir kaynak: Text to Hex Converter Text2Hex
Aşağıdaki “*” işaretiyle whitespace’nin yerini değitiriyor.
Firewall yerel ağımızla internet, server, uygulama arasındaki trafiği kontrol eden yazılımsal ya da donanımsal vardır ve genellikle ağ sistemlerini korumak için kullanılan güvenlik sistemleridir. Dışarıdan ağımıza gelen ve ağımızdan dışarıya giden her paket firewallun kontrolüyle hareket eder. Bu paketler firewall da ki tanımlanan kurallara göre engellenir ya da paketlerin geçişine izin verilir(paket filtrelemesi yapar). Bu kurallar çeşitli yöntemlere göre(ip adresleri,alan adları,protokoller(IP,TCP,HTTP,FTP,UDP,ICMP,MTP,SNMP,TELNET) ve portlar) belirlenebilir. Peki firewall’a neden ihtiyaç duyarız. Masum kullanıcılar sadece virüs tehdidi altında değildir. Bilgisayarınızda ki kişisel verileriniz de bir güvenlik riski oluşturur. Firewallar ise size dışardan gelen her türlü saldırıyı koruma imkanı sağlar
1.Network Layer Firewall
Bu yazımda sizlere kısaca network katmanlı firewalldan bahsedip asıl konumuz olan WAF(web application firewall)’ın nasıl bir yapıya sahip olduğunu, nasıl çalıştığını,nasıl tespit edildiğini,ve bypass edilme yöntemlerini anlatacağım. Network katmanlı firewallar TCP/IP stack yığınına göre düşük bir level de faaliyet gösteren oluşturduğumuz white ya da black listdeki kurallarla eşleşmediği sürece paket geçişlerine izin vermeyen güvenlik duvarlarıdır.Birçok kez bir uygulamaya injection yapmaya çalıştığımızda gönderdiğimiz paketler düşüyorsa ve server dan geri dönüş gelmiyorsa internet bağlantımız dan da eminsek büyük ihtimalle ağda firewall vardır.
Şimdi gelelim WAF’a. WAF, web uygulamalarına yapılan genellikle SQLi gibi saldırıları tespit edip engellemeye çalışan uygulama önünde bir çeşit proxy görevi gören güvenlik duvarlarıdır; ancak normal firewallare göre http trafiğini iyi anlar ve zararlı istekleri bloklar. İstekler ya da saldırılar uygulamaya ulaşmadan önceki trafiği analiz ettiği için buraya odaklanır IPs’e da avantaj sağlar. Genelikle client ile web server arasındadır. Şimdi WAF nasıl çalışıyor onu öğrenelim.
2.Web Application Firewall
WAF, webservera gelen HTTP isteklerini eleyerek çalışır.Hem
POST
hem de
GET
isteklerini her türlü ziyaretçinin trafiğini inceleyerek uygulanan kurallarca denetler. Website adreslerini ya da URL’leri sıradışı davranışlara karşı izler,sürpriz bir kullanıcıyla karşılaşırsa CAPTCHA’ya yönlendir, capcha doğru bir şekilde işaretledikten sonra işleme devam edilir, yok eğer yanlış cevap verirsek bot, robot, saldırgan olmamıza karşın o anki trafiğimizi bloklar. WAF çeşitli şekillerde çalışmakta olup parsing, decoding(base64) filtreleme gibi yöntemlerle faaliyet gösterir
Şimdi WAF’ın ne olduğundan ve algılama mekanizmasından biraz bahsettik, sıradaki görevimiz WAF’ı tespit etmek; tespit işleminden sonra da bypass edip yolumuza devam edeceğiz
Detecting the WAF!
WAF’ın mekanizmasını anlamak icin en iyi yöntemlerden biri de WAF neye karsı uygulamayı korumaya calısıyor ve tehdidi algıladgı zaman nasıl bir tepki veriyor sorularının cevabını öğrenmek olucaktır. Regularity ve audit frameworkleri genelde OWASP 10’deki tehdidlere göre kendilerini korumaya çalışırlar;OWASP 10 XSS ve SQLi gibi saldırıları test etmek icin kendince methodlar icerir. Bazı WAFlar default politikaları sayesinde, email toplayı robotlara, internet wormlarına, icerik toplayıcı botlara karşı uygulamaları korumaya çalışırlar. Tehdit algılandıgı zaman WAF kullanıcıya bazı standard error mesajları sıralayarak “OK” kodlu HTTP cevabını dönecektir. HTTP kodu WAF olup olmadıgını anlayacak kadar akıllı değildir.
Ek olarak bir firewallun varlığını tepit etmek icin sürekli istek gönderirsek ve oturum hızlı bir sekilde sonlanıyorsa burda firewall var demektir;bir sonraki görüntüde olduğu gibi
En cok bilinen tespit araclarından birisi WAFW00F tooludur.Kolay ve basit bir sekilde WAF keşfi yapabilir. Bir sonraki ssde basarılı bir şekilde Citrix Netscaler firewallunu tespit ediyoruz.
Application → Kali Linux → Information Gathering → IDS/IPS Identification → wafw00f
Nmap de firewall tespit etmek icin script iceren sık kullanılabilen bir aractır. Script parametresiyle çalıştırdığımzda web appllication firewallu tespit edebiliyoruz.
Eğer imperva firewallunu tespit etmiş isek
./imperva.sh
scriptini calıştırarak ceşitli testler otomatik olarak firewall üzeirnde uygulanır.
Wafw00f’ın nasıl çalıştığı,kurulumu,algılama yapısının anlatıldığı güzel bir github reposu: GitHub - EnableSecurity/wafw00f: WAFW00F allows one to identify and fingerprint Web Application Firewall (WAF) products protecting a website.
Buraya kadar olan kısımda çeşitli methodlarla ve toollarla WAF’ı tespit ettik, WAF tespit etmek sızma testi yaparken ya da bir e-ticaret sitesini hacklerken; bilgi toplama aşamasının önemli bir sürecidir.
How to bypass WAF!
Hedef üzerinde bazı testler uygulayarak başlayalım;nmap kullanarak hedef networku tarayalım; IPs ile birlikte servisler üzeirnde hangi portlar çalıştığını(cekici portlarımız:80,443) waffit ya da imperva-detect scriptini calıstırarak hangi servislerin firewall tarafından korundugunu tespit ettik.Korumasız IPs’e exlploit uygulamak icin bizim icin cok güzel tabi.
Hemen bypass yöntemleine gecelim
Ancak coğu WAF bu methodu anlayabiliyor; “Forbidden” hatası veriyor.
Bir önceki methodu komutların bazı harflerini küçük harfle yazarak deneyelim..
Ancak bu methodda bazı WAFlar tarafından yakalanabilir.
*Bir önceki methoddaki komutları kombine edip deneyelim.
Bu method cogu WAF tarafından algılanmaz
Anahtar kelimlerin yerlerini değiştirelim
Çoğu WAF “UNION SELECT” statementini URL’nin icinde algıladıgı an siler; biz bu fonksiyonu exploit
etmek icin kullanalım.
Overview UNIunionON SELselectECT 1,2,3,4....
(“union” ve “select” silinecek, sonuc “UNION SELECT” olacak)
Bu method tüm firewallarda calısmaz, “UNION” VE “SELECT” komutlarını algıladıkları an silerler.
Buraya kadar olan yaptığımız manuel değişiklikleri “union” ve “select” komutlarını rastgele büyük-kücük harf seklinde düzenleyerek karşı sisteme gönderen tamper isimli klasöründe bypass scripti bulunduran SQLmap aracı vardır.
Şimdi biraz daha advance methodlara gecelim.
Çoğu firewall C/C++ diliyle geliştirilmiştir ve biz firewallu buffer overflow kullanarak crash edebiliriz.
Aşağıdaki commiti uyguladığımızda WAF’ı crash edebiliriz
500 cevabını alırsak buffer overflow methoduyla exploit edebilirz.
Sıradaki method; hex değerleriyle karakterlerin yerlerini değiştirelim
burdaki örnekte “union ve select” komutlarındaki hex(url-encoded) değerleriyle bazı karakterlerin yerlerini değiştirdik.
Karakterlerin hex değerlerini veren bir kaynak: Text to Hex Converter Text2Hex
Aşağıdaki “*” işaretiyle whitespace’nin yerini değitiriyor.

