hacktricks/pentesting-web/proxy-waf-protections-bypass.md

7.2 KiB
Raw Blame History

Proxy / WAF Korumalarını Atlatma

AWS hacklemeyi sıfırdan kahramana öğrenin htARTE (HackTricks AWS Kırmızı Takım Uzmanı)!

HackTricks'i desteklemenin diğer yolları:

{% embed url="https://websec.nl/" %}

Nginx ACL Kurallarını Yol Adı Manipülasyonu ile Atlatma

Teknikler bu araştırmadan.

Nginx kuralı örneği:

location = /admin {
deny all;
}

location = /admin/ {
deny all;
}

NodeJS - Express

Nginx Sürümü Node.js Atlatma Karakterleri
1.22.0 \xA0
1.21.6 \xA0
1.20.2 \xA0, \x09, \x0C
1.18.0 \xA0, \x09, \x0C
1.16.1 \xA0, \x09, \x0C

Flask

Nginx Sürümü Flask Atlatma Karakterleri
1.22.0 \x85, \xA0
1.21.6 \x85, \xA0
1.20.2 \x85, \xA0, \x1F, \x1E, \x1D, \x1C, \x0C, \x0B
1.18.0 \x85, \xA0, \x1F, \x1E, \x1D, \x1C, \x0C, \x0B
1.16.1 \x85, \xA0, \x1F, \x1E, \x1D, \x1C, \x0C, \x0B

Spring Boot

Nginx Sürümü Spring Boot Atlatma Karakterleri
1.22.0 ;
1.21.6 ;
1.20.2 \x09, ;
1.18.0 \x09, ;
1.16.1 \x09, ;

PHP-FPM

Nginx FPM yapılandırması:

location = /admin.php {
deny all;
}

location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
}

Nginx, /admin.php erişimini engellemek için yapılandırılmış olsa da, bu engeli /admin.php/index.php'ye erişerek atlayabilirsiniz.

Nasıl Önlenir

location ~* ^/admin {
deny all;
}

Mod Güvenlik Kurallarını Atlatma

Yol Karışıklığı

Bu yazıda, ModSecurity v3'ün (3.0.12'ye kadar) REQUEST_FILENAME değişkenini yanlış şekilde uyguladığııklanmaktadır. Bu değişken, erişilen yolun (parametrelerin başlangıcına kadar) bulunması gerekiyordu. Bu, yolu almak için bir URL çözümlemesi yaptığı için gerçekleşmiştir.
Bu nedenle, mod güvenlikte http://example.com/foo%3f';alert(1);foo= gibi bir istek, %3f'nin ?'e dönüştürülerek URL yolunu bitirmesi nedeniyle yolu sadece /foo olarak kabul eder, ancak aslında sunucunun alacağı yol /foo%3f';alert(1);foo= olacaktır.

REQUEST_BASENAME ve PATH_INFO değişkenleri de bu hatadan etkilenmiştir.

Mod Güvenlik'in 2. sürümünde de benzer bir durum yaşanmıştır. Bu durum, yedek dosyalarla ilişkili belirli uzantılara sahip dosyalara erişimi engelleyen bir korumayı atlamayı mümkün kılmıştır (örneğin .bak) basitçe noktayı URL kodlanmış %2e ile göndererek, örneğin: https://example.com/backup%2ebak.

AWS WAF ACL'sini Atlatma

Hatalı Başlık

Bu araştırma, AWS WAF kurallarının HTTP başlıklarına uygulanmasını atlatmanın, AWS tarafından düzgün şekilde ayrıştırılmayan ancak arka uç sunucusu tarafından ayrıştırılan "hatalı" bir başlık gönderilerek mümkün olduğunu belirtmektedir.

Örneğin, aşağıdaki isteği SQL enjeksiyonu içeren X-Query başlığı ile göndermek:

GET / HTTP/1.1\r\n
Host: target.com\r\n
X-Query: Value\r\n
\t' or '1'='1' -- \r\n
Connection: close\r\n
\r\n

AWS WAF'ı atlatmak mümkündü çünkü bir sonraki satırın başlık değerinin bir parçası olduğunu anlamazken NODEJS sunucusu anlıyordu (bu sorun giderildi).

Referanslar

{% embed url="https://websec.nl/" %}

Sıfırdan kahraman olana kadar AWS hackleme öğrenin htARTE (HackTricks AWS Red Team Expert)!

HackTricks'i desteklemenin diğer yolları: