Ağ Güvenliği, Genel, Slider, Web Güvenliği, Yazılarım

Web Application Firewall Atlatma Yöntemleri (WAF BYPASS)

Yazılarımı Paylaşabilirsiniz
  •  
  •  
  •  
  •  
  •  
  • 35
  • 1
  •  
  •  
  •  
  •  
  •  
    36
    Shares

Tekrardan Merhabalar, web servislerine pentest işlemleri uygularken bazen Cloudflare, Sucuri gibi engellere takılmış olabilirsiniz.

Bu yazımda sizlere web uygulamalarının güvenliğinde kullanılan güvenlik duvarlarını atlatmak için kullanılan yöntemleri göstereceğim.

Öncelikle WAF nedir?

Waf son kullanıcı ile istek yapılan web sunucusu arasında bulunan bir araçtır. Waf OSI nin 7. Katmanı olan uygulama katmanında görev alır ve adından da anlaşılabileceği gibi web uygulamalarını olası saldırılara karşı korumayı amaçlar. Son kullanıcı ile sunucu arasında oluşan iletişimi dinleyerek tanımlanan kurallara göre filtreleme, düzeltme veya engelleme uygular. Waflar web servisleri katmanında1 giden istekleri ve gelen yanıtları incelemeleri nedeniyle çoğu zaman Deep Packet Inspection Firewall olarak adlandırılırlar.

Bazı waflar belli saldırı imzalarını filtrelemeye çalışırken bazıları ise web servisinin normal trafiğine aykırı oluşan anormal durumları tespit etmeye çalışırlar. Waflar donanım veya yazılım tabanlı olabilirler ve dışarıdan gelebilecek saldırı ile beraber iç ağdan oluşabilecek saldırıları da filtreleme işlemini uygulamış olurlar. Waflar yaptıkları filtrelemenin yanında aynı zamanda tanımlanan kurallara göre kayıt tutarlar. Aktif modda bulunan waflar hem bloklama hem kayıt tutma yaparken pasif modda çalışan waflar sadece kayıt tutma işlevini gerçekleştirir.

Waf Türleri

Waflar çalışma şekillerine göre temelde üç kategoriye ayrılabilirler, beyaz liste ile çalışan waflar sadece beyaz liste içinde tanımlanmış durumların oluşmasına izin verirler. Bunun haricinde oluşan durumları filtreler ya da engellerler. Kara liste ile çalışan waflar ise kara liste içinde tanımlanan durumları tespit edip engellerler. Karma modu kullanan güvenlik duvarları ise iki filtreleme yönteminden de yararlanırlar.

Waflar daha önce de bahsedildiği gibi son kullanıcı ile web sunucusu arasındaki istekleri incelerler ama waflar her zaman fiziksel olarak son kullanıcı ile web sunucusu arasında bulunmak zorunda değildir. Waflar bulundukları topolojiye göre üçe ayrılırlar.

  • Web sunucusu üzerinde (on premise,inline)
  • Web sunucusunun bulunduğu ağda (switch ile port mirroring2)
  • Web sunucusu ile istemci arasında (bulut,reverse proxy)

1)HTTP,HTTPS, REST, SOAP,XML-RPC v.b.

2)Farklı markalarda Switched Port Analyzer (SPAN) veya Roving Analysis Port (RAP) şeklinde adlandırılırlar.

 

Waf Topolojileri

Wafların topolojilerine uygun bilinmesi gereken birkaç temel bilgi bulunmaktadır. Bu bilgileri yazımın geri kalanında ve wafları anlamanızda yardım sağlayacaktır.

Bulut Waf: En genel kullanılan waf türüdür. Genelde web servisine kendileri ulaşırlar. Sizin ile web servisleri arasında dururlar. Cloudflare örneğinden bahsetmek gerekirse bu servis alan adınızın dns kayıtlarını size ayrılan Cloudflare dns kayıtlarıyla değiştirmenizi ister. Bu sayede sizin sitenizi ziyaret eden bir kişi öncelikle Cloudflare uğrayacaktır. Cloudflare ise sizin sitenize yapılan istekleri filtreler ve kontrollü bir şekilde yönlendirir.

Port mirroring kullanan waflar iç ağda aynı switch e bağlı bulunurlar. Tam olarak kullanıcı ile sunucu arasında bulunmadıklarından isteği direk engelleyememektedir. Bu nedenle istek web sunucusuna ulaşabilmektedir. Bu durumda waf sadece kayıt tutma işlevini gösterebilmekte, geriye cevap dönmesi için sunucu tarafında ekstra konfigürasyon işlemlerinin yapılması gerekmektedir.

Sunucu üzerinde bulunan waflar ise uygulama ile birlikte barındığından dağıtık olamamakta, bu nedenle waf üzerinde olası bir saldırıda Dos/DDoS ile web uygulaması devre dışı kalabilmektedir. Bu nedenle dağıtık çözümler tercih edilmektedir. Sunucu ile kullanıcı arasına kurulacak CDN (Content Delivery Network) veya dağıtılmış sunucular için her sunucuya özel waf konumlandırmak gerekeceğinden bu çözümü genelde tercih etmek istemezler. Bu nedenle genellikle bulut tabanlı waflar tercih edilmektedir.

 

Waf Algılama

Bir web servisinin wafın arkasında olduğunu algılamanın birden çok yolu vardır. Ben bu yollardan bazılarını sizinle paylaşacağım.

  • Waflar filtrelere takılmayan tarayıcılara bir cookie bırakabilmektedir. (Cookie)
  • Waflar HTTP başlıklarını değiştirebilmektedir.1
  • Bazı waflar engel cevaplarına farklı HTTP kodları koyabilmektedir.
  • Bazı waflar istenmeyen bir durum karşısında bağlantıyı koparabilmektedir.
  • Bazı waflar cevabın gövdesine kendi cevaplarını ekleyebilmektedir.
  • Yan kanal saldırıları (cevap zamanı, güvenlik kuralları v.b.)
  • Kullandığınız tarayıcılara ziyaret ettiğiniz web sayfasında/servisinde waf olup olmadığını anlamak için küçük eklentiler…

Wafları algılamak için bu kuralları tek tek deneyebilirsiniz evet ama tahmin edeceğiniz gibi bunu otomatize yapan araçlar da mevcuttur2.

1)HTTP,HTTPS, REST, SOAP,XML-RPC v.b. ile yapılan isteklerde waftan sonra başlık verilerinde değişiklik görülebilir.

2)WafW00f, Whatwaf, Nmap Http-waf-detect,Shodan…

 

Waf Atlatma

Waf atlatma tekniklerini temelde ben üç parçaya ayırmaktayım. Tabii yetkili bir hesaba giriş yapıp sistemde yetki elde etmek bir yöntemdir. Ama burda asıl amaç yetkisiz bir kullanıcının wafı atlatmasıdır.

  1. Doğrudan erişim (Web Servisine wafa uğramadan erişme)
  2. Dolaylı erişim (Encoding vb. sayesinde kuralları atlatma)
  3. Engel kaldırma (Robot yazılımlar ve yük altındaki durumlar için koyulan engelleri aşma)

 

Doğrudan erişim yöntemleri

Daha önce bulut tabanlı wafların dns üzerinden erişim sağladığını belirtmiştim. Alan adının dns kaydını wafın belirttiği adres ile değiştirmek her durumda yeterli kalmayabilir. Çünkü web servisinin IP adresine sahip olabilirsek servise IP üzerinden erişim sağlayabilir, waf ve onun korumalarını devre dışı bırakabiliriz. Bu yöntemler web servisinin IP adresini tespit etmeye yöneliktir.

Doğrudan erişim yöntemlerini temelde 3 farklı noktada incelemek mümkündür. Bunlar;

  • Tersine Atlatma (Servisin saldırgana IP adresini yollaması)
  • Bağlı Atlatma (Saldırganın servise erişip IP adresini temin etmesi)
  • Zafiyetli Servisler (Servislerde bulunan bir uygulama,eklenti veya temanın saldırgana IP adresi göstermesi)

Not: Tersine atlatma, Bağlı atlatma ve Zafiyetli servisler kavramları bu konuda yeterince detaylı bir yazı bulamamam sonucu yazıma eklediğim terimlerdir. Proxy ve Shell alma da kullanılan Reverse/Bind analojisini kullanmaktayım. Umarım bu terimler konuya uygundur ve bu sayede Siber güvenliğe bir yenilik getirebilirim.

Tersine Atlatma

Tersine atlatma sırasında serviste var olan bir uygulama, eklenti, betik veya dışarıya herhangi bir çıktı yaratan modül teste tabii tutulur. Bu modüllerden bazıları dışarıya sadece istenilen çıktıyı yaratmaz. Mesela alan adınıza kayıtlı bir mail sunucusu bu durumlardan biridir. Bir forum sitesine sahip olduğunuzu düşünün. Kayıt olan kullanıcılara aktivasyon linki, parola sıfırlama linki vb. nedenler ile sunucunuzdan e-posta gönderilecektir. Bu e-postaların başlık bilgileri sizin sunucunuzun IP adresini ele verebilmektedir. Bu konuda incelenebilecek bazı noktaları belirtmek isterim.Buradaki amaç web servisinizden dışarıya IP verisini gönderebilmek veya web servisi ile dışarıda bulunan bir kaynağa erişim sağlayabilmektir.

  1. Web servisinin gönderdiği e-postalar
  2. Web servisine gönderilen uzak linkler (multimedya dosyaları, ofis dökümanları)
    1. Bu linkler web servisinin başka bir sunucuya doğrudan erişimini sağlayabilir.
    2. Avatar resmi, gömülü medya, web servisinin dışarıdan ulaşabileceği her türlü kaynak.
    3. (sizin sunucunuza bağlantı atar ise log kayıtlarından, ip logger servislerinden bilgi edinebilirsiniz.)
  3. Web servisi tabanlı XSS saldırıları (bkz. zafiyetli servisler)
  4. Remote File Inclusion sayesinde dışarıdaki dosyaya erişme zafiyetleri (bkz. zafiyetli servisler)
  5. WordPress ve benzeri servislerde bulunan ping (pingback/xmlrpc)
  6. Remote Code Execution ile servisten ping yollamak (bkz. Zafiyetli servisler)

Bu tarz saldırılardan korunmak için girdi kontrolünü doğru bir şekilde sağlamanız gerekir. Kullanıcıdan alınan veriye duyulabilecek güven sonucunda sunucunuzun istenmeyen kaynaklara erişmesi mümkündür. Talep doğrultusunda sunucunuzun hangi kaynaklara ve IP bloklarına erişebileceğini sınırlandırabilirsiniz. Bu sayede bu şartları sağlamayan kaynaklara doğrudan erişimi kısıtlayıp, IP adresinizi gizli tutabilirsiniz.

Bağlı Atlatma

Web servislerinin IP bilgisini dışarıya haykırmalarına her zaman ihtiyacımız yoktur. Bağlı atlatma sırasında saldırgan servisin var olan bir kaynağına erişim sağlayıp servisin IP adresini öğrenebilir. Cloudflare örneğinden devam edecek olursak, Cloudflare koruması alan adınızın DNS sunucusunda tutulan bütün kayıtları kapsamaz. Bu nedenle alan adı kayıtlarınızda (DNS) var olan mail kaydına atanan IP adresi servisin çalıştığı IP adresini döndürebilmektedir. Bu konuda incelenebilecek bazı noktaları belirtmek isterim.

  1. DNS kayıtları1
  2. Web servisinin subdomainleri2 (subdomain.servis.tld)
  3. SSL kayıtları3 (uniq ssl kayıtları, ssl IP sızdırması)
  4. Web servisinde bulunan IP bildiren dosyalar/sayfalar
    1. Arama motorları sayesinde servisinizde bulunan log dosyaları vb. dosyaları incelemek
    2. Servisinizin gösterdiği web sayfalarında gömülü olan (eklenti sayesinde veya kullanıcı/yetkili tarafından unutulmuş) IP adreslerini tespit etmek.
    3. Path traversal ile dosyalara erişim sayesinde IP bildiren dosya bulmak (statik html sayfalar/ web servisinde çalışan eklenti dosyaları,hosts v.b.) (bkz. Zafiyetli servisler)
    4. Local File Inclusion ile sunucudan dosya okumak (log kayıtları v.b.) (bkz. Zafiyetli Ser.)
    5. Remote Code Execution ile sunucudan whatsmyip gibi servisi tetiklemek. (bkz. Zafiyetli servisler)
  5. Eski DNS kayıtlarını incelemek
    1. Bazı siteler bulut tabanlı waflara geçmeden önce ip adreslerini DNS kayıtlarına koyabilmektedir. Eski kayıtları viewdns.info gibi servisler üzerinden inceleyebilirsiniz.
  6. Sql Injection gibi yöntemler ile web servisinin verebileceği hataları incelemek (bkz. Zafiyetli servisler)
  7. Reverse IP ile wafın IP adresine sahip başka web servisleri bulunabilmektedir
    1. Eğer wafın kayıtlarında aynı sunucuda bulunan iki web servisi var ise ikinci servis üzerinde bu yöntemler denenebilir.
    2. Reverse whois ile aynı maile kaydolmuş domainler de bulunabilir.
    3. Shodan ve Censys gibi sitelerden aynı ssl kaydına sahip siteler bulunabilir.
  8. Sızdırılmış veri tabanları, Cloudflare gibi sitelerin veri tabanları daha önceden sızdırılmış olması nedeniyle internetten sorgulanabilmektedir;
    1. Crimeflare/Cloudflare Watch v.b. siteler
    2. Bazı resolver servisleri ile Shodan/Censys gibi servisler aktif olarak tarama yapmaları nedeniyle ekstra kayıtlara sahip olabilmektedir.
  9. Google ,Web Archive ve benzeri sitelerin sizin siteniz hakkında tuttuğu eski kayıtlar…
    1. Eğer siteniz eskiden IP bazlı host ediliyorsa bu yöntem IP adresinizi sızdırabilir.
  10. Http istekleri ile IP aralığı taraması;
    1. Eğer web servisinin bulunduğu sunucuyu tahmin edebiliyorsak (bir IP aralığına sahip isek) bu IP aralığına istek atıp gelen yanıtları inceleyebiliriz.
    2. Eğer IP yerine port bazlı bir servis kullanılıyor ise ipler üzerinde bize istek dönen portları tarayabiliriz.
    3. Eğer isim bazlı bir servis kullanılıyor ise her IP adresine bir başlık (genelde host başlığı) göndermek suretiyle bir istek yapabiliriz. Geriye dönen yanıtı inceleyerek doğru IP’ye istek yapıp yapmadığımızı belirleyebiliriz.
    4. Bu yöntemlerin çalışması için sunucunun dışarıdan bir IP’ye erişebilmesi gerekir. Eğer erişim sadece waf üzerinden olması için yapılandırılmış ise TCP yerine UDP üzerinden çalışan servislere waf iplerini spoof ederek bağlanmayı deneyebilirsiniz.

1) Bazı web servislerinin dns kayıtları IP adresini döndürebilmektedir. Mail için MX,DNSSEC için SIG,IPV6 için AAAA,domain sertifikaları için CAA kaydına bakılabilir. Tüm kayıt türleri için Wikipedia sayfası incelenebilir. Web sitesinin DNS kayıtları DIG aracıyla veya internetten sorgulanabilir.

2)Bazen sitelerin subdomainleri IP DNS kayıtlarını yapmamış olabiliyor. Bu nedenle subdomainlerine ping gibi bir araç ile eriştiğimizde IP adresini görüntüleyebiliriz.

3)SSL kayıtlarının özgün olması Shodan ve Censys gibi sayfalardan web sitesinin bulunmasını kolaylaştıracaktır. Reverse domain ile alınan aynı IP ye bağlı alan adlarını bu sertifikada bulunan alan adlarıyla karşılaştırarak aynı sunucuda bulunan alan adlarını tespit etmeye çalışabiliriz. Aynı SSL sertifikasına sahip sunucuların IP adreslerinden web servisinin bulunduğu servis tespit edilebilir.

Bu tarz saldırılardan korunmak için web servisinin dışarıya gönderdiği ve dışarıdan aldığı istek ve kaynakların waf tarafından sıkı bir incelemeden geçirilmesi gerekir. Eğer bir servis/uygulama dışarıya IP bilgisi döndürüyor ise bunu engellemesi gerekir. Web servisinizin ve/veya sunucunuzda çalışan uygulamaların da bu tarz bir olası saldırıya karşı güvenli olması gerekmektedir.

Zafiyetli Servisler

Web servisleri her zaman yeterince güvenli olmayabilir. Belli zafiyetleri taşıyan web servisleri sizlere IP adreslerini kendi elleri ile sunacaklardır. Zafiyetin türüne göre size sunulan IP adresi bir istek şeklinde ya da direk olarak size sunulabilir. Bu konuya ayrıca değinmemin nedeni bu kısımda anlatılanlar bağlı veya tersine atlatma konularına dahil olmakla birlikte web servisinde veya waf üzerinde bulunan bir zafiyetin sömürülmesine dayanmaktadır. Bu konuda bazı incelenebilecek noktaları belirtmek isterim.

  1. Web servisi tabanlı XSS saldırıları
    1. Bu sayede sunucudan dışarıya bağlantı yaratabilirsiniz.
  2. Remote Code Execution saldırıları
    1. Bu sayede web servisinden dışarıya bağlantı yaratabilirsiniz.
    2. Eğer erişiminiz bulunuyorsa yerel dosya sistemini okuyabilirsiniz (RCE to LFI)
    3. Eğer dış ağa erişiminiz var ise whatsmyip gibi bir servise sorgu atarak cevabını görebilirsiniz.
  3. LFI ile servise bulunan bir dosyayı görüntülemek
    1. Bu sayede web servisinizde bulunan bir dosyayı görüntüleyebilirsiniz.
    2. Log dosyaları, eklenti dosyaları, hosts vb. yapılandırma dosyaları
  4. Sql injection
    1. Sql injection sayesinde veri tabanına erişebilirsiniz.
    2. Veri tabanı sunucusu sizin sunucunuz ile aynı yerde ise sql veritabanın bulunduğu IP yi öğrenmeye çalışabilirsiniz
    3. Eğer farklı sunucularda ise Sql üzerinden kod çalıştırıp RCE zafiyetini deneyebilirsiniz. Bu sayede sunucuda kod çalıştırıp gelen bağlantılardan web servisinin IP adresini tespit edebilirsiniz
  5. Path traversal ile dosya yolunu bulmak
    1. Bu zafiyet sayesinde web servisinin altındaki farklı klasörleri görüntüleyebilirsiniz
    2. Eğer web servisinin yetkisi var ise Lfi yapmayı (lokaldeki dosyaları okumayı) kolaylaştırır. Dosya isimlerini aklınızdan/listeden/random denemenize gerek kalmaz.
    3. Full Path Disclosure zafiyeti ise size web servisinin sunucu üzerinde nerede bulunduğunu gösterir. Eğer yetkiniz var ise LFI yapmayı kolaylaştırır.
  6. Http enum
    1. Bazı web servisleri (bkz IIS 7) web adresine http isteği gönderirken host parametresi boş bir şekilde gider ise cevap olarak IP adresini döndürmektedir.
    2. “curl http://sub.domain.tld -v -l –http1.0 –Header ‘Host: ‘ “ sayesinde bu zafiyeti deneyebilirsiniz.
  7. Xmlrpc/pingback ve diğerleri
    1. Bu iki fonksiyon wordpress kullanan web sitelerine ait olup bu fonksiyonlara yapılan istek doğrultusunda verilen yere (IP /domain) istek atmaktadırlar.
  8. Waf ta bulunan hatalar (bug)
    1. Cloudflare 17 şubat 2017 de bir hata yüzünden sunucuda bulunan ramden okuma yapabilmektedir. Bu sayede ramden bilgi çekip IP adresi/http başlıkları hatta cookie verileri dahil bulunabilmektedir.
    2. com/full-report/ v.b. web servislerinden sorgulama yapabilirsiniz, google yukarıda belirtilen cloudflare açığı ile sorgulanan bazı web servislerini cache belleğinde tutmaktadır. Bu ve benzer arama motorları sayesinde IP bilgisine erişmeyi deneyebilirsiniz.
  9. Heartbleed vb. sunucu/web servisi zafiyetleri
    1. Heartbleed zafiyetine sahip olan sunucunun raminden (Random Access Memory) belli miktarda veri okunabilmekteydi. Bu ve benzeri zafiyetler ile içeriden bilgi edinilebilir.
  10. Bazı web servislerinin düzgün yapılandırılmamış panellerine erişim yaptığınızda veya bir fonksiyonu talep ettiğinizde (parolamı unuttum gibi) size ip:port şeklinde bir adres döndürebilmektedir.

Zafiyetli servislere sahip olmamak için servislerinizi ve eklentilerinizi daima güncel tutunuz. Web servisinizi düzenli olarak pentest ve takip eden zafiyet iyileştirme (Vulnerable Remediation) sürecinden geçirerek bulunabilecek zafiyetleri düzetebilirsiniz. Web servisinizin kullandığı teknolojilerde oluşabilecek 0.Gün(Zero Day) zafiyetlerini takip etmeniz size bu tarz bir saldırının yapılma riskini azaltacaktır. Sunucunuz ve web servisinizin ayarlarını bu bilgiler doğrultusunda gözden geçirmeniz daha yararlı olacaktır.

Erişmeye çalışırken bilmeniz gereken ek bilgiler

Bazı wafların erişim esnasında sizin isteğinize cookie/session gibi verileri eklediğinden bahsetmiştik. Web uygulamaları waflar atlatılmak istenildiğinde bunun gibi verilere bakarak engelleme yaratabilmektedir. Bazı servisler bu verilerin bir desene uyup uymadığını kontrol ederken bazıları ise waf ile konuşup bu kaydın gerçekliğini sorgulayabilmektedir. Bu nedenle bu parametreleri wafa bağlanıp elde ettikten sonra isteklerinize ekleyebilirsiniz.

Bazı web servisleri veya sunucuları sadece waf üzerinden gelen IP aralıklarına izin vermektedir. Bu tarz bir problem ile karşı karşıya kalır iseniz UDP kullanan servisler sayesinde IP adresinizi spoof ederek doğrudan erişim sağlamaya çalışabilirsiniz. Eğer waf üzerinden istek gönderebilecek bir yöntem tespit ettiyseniz yukarıdaki bütün saldırı yöntemlerini wafı kullanarak sağlayabilirsiniz.

Erişim doğrulama

Wafın IP adresini tespit ettiğinizi varsayalım. Peki bu IP adresi gerçekten istenilen kaynağa mı ait?, bu IP adresine erişiminiz var mı? ve var ise nasıl? Bu soruları doğrulamak için yapabileceğiniz birkaç adımı belirtmek isterim.

  1. IP adresini tespit etmede kullandığınız yöntemi tekrarlayarak aynı sonucu aldığınızdan emin olun.
    1. Bu sayede sahte bilgi ve hatayı minimize etmiş olursunuz.
  2. Hosts dosyanızı IP ile değiştirip web servisine ulaşmaya çalışın.
    1. Bunu yaparken cookie verilerini inceleyerek/waf tespit yöntemlerini kullanarak wafı geçip geçemediğinizi test edebilirsiniz.
    2. Wireshark ile yaptığınız isteği inceleyip wafa uğrayıp uğramadığını tespit edebilirsiniz.
    3. Bazı tarayıcılarda bulunan yönlendirme tespit eklentileri de wiresharka benzer bir sonuç verecektir.
  3. Bulunan IP ye sunucuda kullanılan yönteme göre direk/host parametresi/port ile erişmeyi deneyebilirsiniz.
  4. Bulunan IP karşısında uygulanacak stres testleri web servisinin waf tarafından cache belleğe alınmamış parçalarında yavaşlamaya sebebiyet verecektir. Eğer sunucu/web servisi sadece belli iplere cevap veriyor ise yavaşlama yaşanmayacaktır.Bu sayede IP ye erişiminiz olup olmadığını test edebilirsiniz.

Bulut Tabanlı Wafların incelenmesi

Bu kısımda bulut tabanlı waflarda kullanılan teknolojilerden bazılarını inceleyeceğim. Hepsinden bahsetmek çok zor.Çünkü yeterli seviyede kodlama bilen ve bir sunucuya sahip olan herkes kendi wafını oluşturabilmektedir. Bu nedenle sadece belirli bir kısmını inceleyebilmekteyim.

Cloudflare

Cloudflare Go/python/php ve javascript ağırlıklı yazılıma sahip bir bulut tabanlı waftır. Kendisi açık kaynaklı olup kaynaklarına https://cloudflare.github.io/ adresinden erişilebilir. Bu waf kullanıcılarına Lokasyon/IP gibi birkaç farklı parametre kullanarak filitreler tanımlamalarına izin verir. Bu filitreler engelle, izin ver, captcha çözdür, javascript çalıştır modlarından oluşturmaktadır. Kullanıcılarına IP blokları ve ülke kodları (tor çıkış IP adresleri tor adı altında bir ülke şeklinde sunulmaktadır.) ile filtre yapma hakkını sağlar. Filtreden geçen kullanıcıların cookielerine iki yeni değer eklerler. Bu değerler sayesinde web servisine erişim sağlanır. Web servisi saldırı altındayken filtreleme uygularlar. Size web servisinin IP adresi yerine kendi IP adresini döndürür. Bedava ssl kaydı sağlar. Web servisi ile kullanıcı arasında bir filtre görevi görerek bazı istekleri engellerler. Sql injection,xss, path traversal gibi saldırıları bir nebze de olsa engeller. Web servisinde oluşabilecek anlık çöküntü karşısında CDN görevi görerek cache de bulunan web sitesini döndürebilirler.

Imperva SecureSphere

Impervanın geliştirdiği securesphere gartner raporunda en iyiler kategorisinde bulunan bir waftır. Kullanıcılarının genellikle şirketler olduğunu ve wafın 45 bin dolarlık fiyatını düşünürsek kaynak kodlarının yayınlanmayacağını tahmin edebiliriz. Botlara karşı güncellenen bir “tehdit radar” ına sahiptir. Abone olunan sistemlerden güncel olarak verileri alıp filtrelere ekleyebilmektedir. Tehdit radarı;

  • Kaynakları güvenilirliğine göre sınama/sıralama
  • Topluluğundan ve dışarıdan topladığı bilgilere göre güncelleme
  • Botlara karşı koruma
  • Hesap ele geçirme saldırılarına karşı koruma

Sağlamaktadır. Algılamak için bir saldırı sonrasında dönülen istekteki http versiyonunu incelemek gerekir (wafw00f) Özelliklerine şuradan ulaşabilirsiniz www.imperva.com/docs/DS_SecureSphere_Web_Application_Firewall.pdf

Gartner Raporu

Gartner şirketi güvenliğin belli alanlarında yıllık raporlar çıkartmaktadır. Bu raporlarda güvenlik ürünlerini belli kategorilerde sıralayıp onlara özgü bir grafik çıkartmaktadır. Bu grafik sayesinde waf ürünlerini inceleyebilirsiniz.

Waflara karşı kullanılan otomatize araçlar

Wafw00f

Wafw00f ve Waffun defcon18 konferansında tanıtılmış olup wafw00f Pentest için kullanılan Distrolarda (Kali Linux,Parrot OS gibi ) işletim sistemine entegre bir şekilde gelmektedir. Bu araç istekler ve alınan yanıtları inceleyerek wafın türünü bulmanızı sağlar. Wafa karşı yaptığı denemelerde akıllı bir şekilde istek yapamaz (mesela admin klasörünü uygulamaya göre bulamaz veya bulunamayan bir dosyayı denerken sistemde bulunup bulunmayacağına bakmadan rastgele değer üreterek dener).Github üzerinden temini mümkündür.Bir python betiğidir. Bazı özellikleri listelenmiştir.

  • CDNleri ve Wafları isteklere dönen cevaplar (http response) sayesinde belirlemeye çalışırlar.
  • Bazı wafları belirlerken saldırı denemeleri yapabilmektedir (waftan bir hata alabilmek adına)
  • Varsayılan olarak ****.com u hedef almaktadır (ssl kapalı ve port 80)
  • Sırasıyla normal,bulunmayan dosya,bilinmeyen method,path traversal,hatalı host,hatalı tagın encoded hali,hatalı tag,xss,admin klasörü/korunaklı klasör,encoded xss,cmd.exe dosyasına erişim saldırılarını tanımlar
  • Bu saldırılardan cmd.exe,path traversal,xss,admin klasörü/korunaklı klasör ve encoded xss saldırıları ile gelir. Kodu modifiye ederek bu saldırıları değiştirebilirsiniz ve bu sayede farklı saldırı vektörlerini deneyebilirsiniz
  • Admin klasörü olarak /Admin_Files/ olarak belirlemiştir
  • Xss olarak <script>alert(1)</script>, path traversal için ../../../../etc/passwd denemektedir
  • Hatalı tag için ise <invalid>hello yu kullanmaktadır
  • https://github.com/EnableSecurity/wafw00f

Örnek kullanımı aşağıdaki gibidir.

 

WhatWaf

WhatWaf wafw00f gibi waf tarama aracıdır. Proxy desteği, çoklu url desteği, 20 farklı tamper metodu, sql ve xss kullanarak firewall atlatma, dosyadan veya terminal komutu ile kişisel payload oluşturma gibi bir sürü ek özelliğiyle Wafw00ftan sıyrılmaktadır. Desteklediği 40 waf konusunda minimum bir saldırı ile hata üretmeyi garantilemektedir. Wafw00f gibi http isteği yapıp geri dönen yanıtı inceler ve buna göre waf türünü belirlemeye çalışır. Bir python betiğidir. Birkaç özelliği listelenmiştir ve Githubda mevcuttur;

  • Socks4/5, http/s ve tor proxylerini kullanabilir.
  • SQLi ve XSS ile wafların filitrelerini bypass edebilir.
  • Birden çok site alabilmektedir (-l / –list parametresi)
  • 40 firewall destekler.
  • 20 tampering metodu bulunur.
  • Kendi payloadlarımızı tanımlayabiliriz.
  • User agent değişimine izin verir.
  • Sırasıyla 20 tamper metodu şu şekilde sıralanabilir.
  • Kesme işaretini utf encode ile gönderme,kesme işaretinin başına null karakter ekleme,payloadın sonuna null karakter ekleme,payload base64 kullanarak encode etme, payloadın karakterlerine çifte url encode uygulama,sayıları parantez içine alma,kesme ve çift tırnak işaretlerini backslash kullanarak kaçma, payloadı küçük harfli yapma,bazı karakterleri Unicode karakterlere çevirme,parantezlerin içindeki karakterin başına çift tırnak ekleme, payloadı yorumun arasına alma, payloadı yorumun arasına alıp boşlukları da yoruma çevirme,payloadın karakterlerini html entityleriyle değiştirme,bazı karakterleri orjinal halleriyle değiştirme,payloadın başına null ekleme,payloadı rastgele büyük küçük harf yapma,payloada rastgele yorum ekleme,payloada rasgele Unicode karakter ekleme,boşlukları yorum yapma,boşlukları çift taksim yapma,boşluklara yeni satır ile rastgele üretilmiş karakterler ekleme,payloadı rastgele boşluk ve yorum ile genişletme,boşlukları null karakteriyle değiştirme,boşlukları + işaretiyle değiştirme,boşlukları ASCII boşluk karakterleriyle değiştirme,payload büyük karakterler haline getirme,noktalama işaretlerini url encode etme, bütün karakterleri url encode etme….

Örnek kullanımını da aşağıya bırakıyorum :))

 

 

xWaf

xWaf çin asıllı MayIKissYou tarafından yazılmıştır. Bu araç wafı encoding yöntemleri ve sqlmap tamper kullanarak wafı geçmeyi ve sql injection yapmayı amaçlamaktadır. Waf ile ilgili güzel bilgiler döndürüp encoding sayesinde sqlmapın önüne geçmek istesede tamper yöntemleri ile sqlmapa bağlı kalmaktadır. Bir python betiğidir.

bypasswaf

Bypasswaf Burp aracının HTTP başlık verilerine birkaç eklenti yaparak wafı geçmeyi planlamaktadır. Http başlıklarını istek yerel adresten geliyormuş gibi göstermek amacıyla değiştirmek, ekstra başlıklar eklemektedir.  Burp Suite eklentisidir. Eklediği başlıklar ektedir.

  • X-Originating-IP: 127.0.0.1
  • X-Forwarded-For: 127.0.0.1
  • X-Remote-IP: 127.0.0.1
  • X-Remote-Addr: 127.0.0.1
  • X-Client-IP: 127.0.0.1

 

Bazı Online Resolver Servisleri

Bu servisler genelde alt domainlere ping ile ulaşmaya çalışmaktadır. Bu domainlerin sonuçlarını size dönmektedir. Bazıları eskiden buldukları ip adresleri de dönebilmektedir. Belkide eskiden bulunmuş IP adreslerinden IP çözümleyebilirsiniz.

  • net/cf.php
  • net/cloudflare.php
  • nl/tools/cloudflare
  • tech/web-tools/cloudflare-resolver.html
  • k2an.com/?page=cloudflareipresolver
  • com/cloudflare/
  • com/cloudflare-resolver

Fierce Domain Scanner

Bu araç verilen IP aralığındaki web servislerine isim bazlı erişmeye çalışıp dönen yanıtlarda bir arama yapmaktadır. Bu yanıt sayesinde siteye erişim sağladığında eriştiği IP adresini kaydedebilmektedir.
Github üzerinde bulunan ve IP bulmaya çalışan cloudflare atlatma araçlarının çoğu (hatcloud da dahil olmak üzere) eskiden sızdırılmış cloudflare veritabanını ve alt alan adlarını pinglemeyi kullanır. Siz otomatize araçlarla ile cevap aramak yerine bu araçların nasıl çalıştığını öğrenmiş oldunuz. Bu sayede artık o araçlara bağlı kalmak zorunda değilsiniz. Lütfen bir döküman/yazı üretirken araç tanıtımı yapmak yerine teknoloji/altyapı bilgilendirmesi yapınız. Bu sayede insanlar araçlara bağımlı kalmak zorunda kalmamış olur ve araçların ne kadar eksik olduğunun farkına varmış oluruz.

 

Bu yazım Waf atlatma yöntemleri üzerine olup üç parçadan birincisini oluşturmaktadır. Bu yazımda IP adresinin tespitinden bahsedilmiştir, IP adresi bulunamayan, IP ile erişilemeyen ya da bulut waf kullanmayan siteler için wafın filtrelerini atlatan yöntemleri ikinci yazımda belirtmeye çalışacağım.

.Bu yazıyı kendi blog adresinde ücretsiz bir şekilde yayınlayan,yazıya görseller ekleyen ve yazıyı yazmam için bana yeteri morali (gazı) sağlayan arkadaşım Raif Berkay DİNÇEL’e teşekkür etmek isterim.

Bu yazıyı asıl hazırlamamdaki fikir tohumu, bütün bulgularımı kişisel web sitesi üzerinde denediğim (izin dahilinde)
arkadaşım İsmail KUNDAKÇI’ya teşekkür etmek isterim.

Teşekkürler.

Ulaş Fırat ÖZDEMİR // Raif Berkay DİNÇEL

Yazımı okuduğunuz için hepinize çok teşekkür ediyorum.Bir sonraki yazıda görüşmek üzere,sağlıcakla kalın 🙂

 

  •  
    36
    Shares
  •  
  •  
  •  
  •  
  • 35
  •  
  •  
  • 1
  •  
  •  

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir