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.
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
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. WAF nedir? (WTF WAF?)
Web Application Firewall = Web Uygulama Güvenlik Duvarı
Atakları, uygulama katmanında (Layer 7) engeller.
6
9. 1 İstek
metodu
2 URL host
3 URL yolu
4 URL
sorgusu
5 İstek
başlığı
6 Cevap
Başlığı
9
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
16. Cevap: Çoğunlukla Header ‘a bakarlar.
X-forwarded-for
X-remote-IP
X-originating-IP
X-remote-addr
X-remote-ip
16
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
20. WAF ‘ların ve web uygulamalarının
çözümleyicileri aynı mıdır?
20
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
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
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
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. 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. 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
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. 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. 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. 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