Neler Yeni

WAF and Hacking

Katılım
22 Nis 2020
Mesajlar
86
Tepkime puanı
23
Puanları
150
Web Application Firewall (WAF)

S.A. / A.S. değerli DH ailesi bugün sizlere WAF sistemleri hakkında bilgi vermeye çalışacağım. Web uygulamalarında Firewall Nedir? Nasıl Çalışır? Türleri Nelerdir? Nasıl Bypass Edilir? gibi konular üzerinde duracağız. Konu DH adına Lojistik Ekibi tarafından yazılmıştır. Konu için yardımlarını esirgemeyen



Web Uygulaması Güvenlik Duvarı (WAF)

Şimdi bu WAF dediğimiz olay kısaca web sitelerinde, web uygulamalarında çeşitli koruma işlerini yürüten sistemlerdir. Bir WAF veya Web Uygulaması Güvenlik Duvarı, bir web uygulaması ile İnternet arasındaki HTTP trafiğini filtreleyerek ve izleyerek web uygulamalarının korunmasına yardımcı olur .Genellikle web uygulamalarını diğerlerinin yanı sıra CSRF, XSS, File Upload, SQL İnjection gibi saldırılara karşı korur. WAF, bir web uygulamasının önüne yerleştirerek, web uygulaması ile İnternet arasına bir kalkan oluşturur. Bir proxy sunucusu bir aracı kullanarak bir istemci makinesinin kimliğini korurken, WAF, istemcilerin sunucuya ulaşmadan önce WAF’den geçmesini sağlayarak sunucunun maruz kalmasını önleyen bir ters proxy türüdür. WAF, genellikle bir dizi kural ile çalışır. Bu kurallar kötü amaçlı trafiği filtreleyerek uygulamadaki güvenlik açıklarına karşı korumayı amaçlar. Bir WAF’ın değeri kısmen hızdan gelir ve değişen saldırı .eşitlerine daha hızlı yanıt verilmesine olanak tanıyan kuralların değişikliğinin uygulanabileceği kolaylığı sağlar; DDoS saldırısı sırasında, WAF kurallarını değiştirerek hız sınırlaması hızla uygulanabilir.



Bir web uygulaması güvenlik duvarı, ister yazılım ister donanım olsun, HTTP ve HTTPS aracılığıyla gönderilen GET ve POST isteklerini analiz eder ve zararlı web trafiğini belirlemek ve filtrelemek için yapılandırılmış güvenlik duvarı kurallarını uygular. Kurallardan bahsediyoruz ama nedir bu kurallar?

WAF Kuralları Nelerdir ?

Bir web uygulaması güvenlik duvarı, üç temel güvenlik modeline göre yapılandırılabilir. Bir model web sunucusunun ve uygulamanın özel durumuna göre diğerlerinden daha etkili olabilir.

1-) Beyaz Liste (White List Model) : yalnızca özel olarak yapılandırılan ölçütlere göre web trafiğine izin verir. Örneğin, yalnızca belirli IP adreslerinden gelen HTTP GET isteklerine izin verecek şekilde yapılandırılabilir. Bu model, olası siber saldırıları engellemek için çok etkili olabilir, ancak aynı zamanda normal olan trafikleride engelleyeceği için normal kullanıcılarında web uygulamalarına erişimi sınırlı hale getirecektir. white list modeli güvenlik duvarları, çalışanlar gibi yalnızca sınırlı bir grup insan tarafından kullanılmak üzere tasarlanan dahili bir ağdaki web uygulamaları için en iyisidir.

Örnek : Bizim şirket :) adam kurmuş fortinet tanımlamış bir white list, sonuçmu herşey kapalı. böyle şey olurmu ya :(

2-) Kara liste (Black List Model) : Açıkça zararlı olan web trafiğini engellemek için önceden belirlenmiş imzalar ve belirli web sitesi, web uygulaması güvenlik açıklarından yararlanan saldırıları önlemek için tasarlanmış imzalar kullanır. Örneğin, bir dizi IP adresi, bir web sitesinde gezinmek için kullanılan IP adreslerinin çoğu için normalden çok daha fazla paket gönderirse, güvenlik duvarı sistemde kuralları önceden yazılmış DDOS koruma sistemini aktifleştirerek saldırıyı bertaraf edecektir. Black list modeli halka açık internetteki web siteleri ve web uygulamaları için daha doğru bir seçimdir, çünkü bu hedefler, bilinmeyen istemci makinelerinden çok fazla meşru web trafiği alabilmektedir.

3-) Karma Güvelik (Hybrid Security Model) : Bazı web uygulamaları, hem beyaz listeyi hem de kara listeyi birleştiren karma güvenlik modeline göre yapılandırılabilir. karma güvenlik duvarları hem iç ağlardaki web uygulamaları hem de genel internet üzerindeki web uygulamaları için en iyi seçenek olabilir.

Nasıl Bypass Edilir ?

İlk önce hedef üzerinde bazı testler uygulayarak başlayalım; nmap kullanarak hedef networku tarayalım; IPs ile birlikte servisler üzeirnde hangi portlar çalıştığını(örneğin:80,443) waffit ya da imperva-detect scr*iptini calıstırarak hangi servislerin firewall tarafından korundugunu tespit ettik. Şimdi bypass yöntemlerine bakalım.

lqbRvb.png


Artık çoğu waf sistemleri bu en basit bypass yöntemini algılayıp forbidden veriyor. Bir önceki methodu komutların bazı harflerini küçük harfle yazarak deneyelim.

nQJor0.png


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 URLnin icinde algıladıgı an siler; biz bu fonksiyonu exploit etmek icin kullanalım.

gr9RX3.png


WAF tarafından arada kalan union ve select algılanıp silinecek, sonuc UNION SELECT olacaktır.

şimdi bu durumu sqlmap aracı ile deneyelim.

V93RMZ.png


sqlmapin işlemi sonlandırmasını bekliyoruz.

JZOBlQ.png


gördüğünüz gibi WAF bypass edilmiş oldu. DB ye ulaştık. Şimdi biraz daha advance methodlara gecelim. Çoğu firewall C/C++ diliyle geliştirilmiştir ve biz firewallu buffer overflow kullanarak crash edebiliriz.

oX6l69.png


Aşağıdaki komutu uyguladığımızda WAFı crash edebiliriz. Deneyelim. null ifadelerin sayısı artırılabilir.

0RGAEZ.png


Hex Karakterler

Sıradaki method; hex değerleriyle karakterlerin yerlerini değiştirelim.

DYyqDo.png


burdaki örnekte union ve select komutlarındaki hex(url-encoded) değerleriyle bazı karakterlerin yerlerini değiştirdik.

Kaynak kod inceleme

sql injection çekerken bazen sitelerde ekrana kolon numaralarını yansıtamayız. örneğin aşağıdaki resimdeki gibi.

16JyRj.png


burda fortinet webguard koruması mevcut ve kolon numarasını bulabilmek için kaynak kodu incelememiz gerekli. Kaynağı Görüntüleden " lt;h3 gt; " Tagına Bakalım Sonuç Olarak Sayfa Tam Yüklenmedi Ama Yinede Bir Kısımı İndirildi Değil Mi ?

4jagNG.png


gördüğünüz gibi kolon numarası koda yansımış bu şekilde sql sorgusu çekmeye devam edebiliriz. bu şekilde sunucu üzerinde bulunan fortinet firewall bypass etmiş oluruz. database çekip bırakalım.



Comment Syntax

Bir sql sorgusu çalıştırırken comment syntax şeklinde sorgu çalıştırdığımızda birçok filtrelemeyi geçme ihtimaliz mevcuttur. çok yüksek güvenlikli WAF uygulanmamış sunucularda bu yöntemi rahatlıkla kullanabilirsiniz.

0REkEZ.png


Concatenation (Bağlama operatörleri)

Birçok programlama dilinde, dize bitiştirme bir ikili infix operatörüdür. Artı (+) operatörü sıklıkla dize bağımsız değişkenler için birleştirme belirtmek için kullanılır.

nQOgbB.png


Aşağıdaki komutların hepsi aynı sonucu ekrana görüntüleyecektir.



Bu, tüm bitişik dize değişmezlerin Bash’de birleştirilmesinden kaynaklanır. Aslında ’te’s’t’ üç diziden oluşur: string te, string sve string t. Bu sözdizimi, "eşleşme cümleleri" ne dayanan bir filtreyi (veya WAF kuralını) atlamak için kullanılabilir.

lqOyNg.png


5aDkED.png


NnZ48Q.png


bunu istersen uzaktan kod yürütme sırasında curl komutu ilede kullanabiliriz.

AD1qNz.png


şimdi bununla ilgili bir deneme yapalım. burda hazırlamış olduğumuz PHP kodunu localde çalıştırıp. bypass etmeye çalışıcaz.

9am5lr.png


şimdi curl ile passwd dizinini okumata çalışalım.

DY7RAl.png




gördüğünüz gibi sistem btpass edilip passwd dosyası okundu.

Joker Karaterler

standart joker karakterleri (globbing pattern olarak da bilinir), birden çok dosyayla çalışmak için çeşitli komut satırı yardımcı programları tarafından kullanılır. Birçok kişi ? yada / karakterleri ile birlikte sayıları ve harfleri kullanarak sistem komutları çalıştırabileceklerini bilmiyorlar. Hatta aynı miktarda karakter kullanarak dosyaları sıralayabilir ve içeriğini alabilirsiniz. Nasılmı? Aşağıdaki örnekleri inceleyelim.

ls komutu yerine aşağıdaki sözdizimini kullanabilirsiniz.

/???/?s



Bu tür bir sözdizimi ile temelde istediğiniz her şeyi çalıştırabilirsiniz. Korunmasız hedefinizin bir Web Uygulaması Güvenlik Duvarı arkasında olduğunu ve bu WAFnin bir POST isteğinde bulunan bir GET parametresinin değerini içeren /etc/passwd veya /bin/
 

Konuyu görüntüleyen kullanıcılar

Üst