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

7 KiB

Proxy / WAF Beskermingsontduiking

Leer AWS hak vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun:

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

Bypass Nginx ACL-reëls met Padnaammanipulasie

Tegnieke van hierdie navorsing.

Nginx-reëlvoorbeeld:

location = /admin {
deny all;
}

location = /admin/ {
deny all;
}

NodeJS - Express

Nginx Weergawe Node.js Omgang Karakters
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 Weergawe Flask Omgang Karakters
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 Weergawe Spring Boot Omgang Karakters
1.22.0 ;
1.21.6 ;
1.20.2 \x09, ;
1.18.0 \x09, ;
1.16.1 \x09, ;

PHP-FPM

Nginx FPM konfigurasie:

location = /admin.php {
deny all;
}

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

Nginx is ingestel om toegang tot /admin.php te blokkeer, maar dit is moontlik om dit te omseil deur toegang tot /admin.php/index.php te verkry.

Hoe om te voorkom

location ~* ^/admin {
deny all;
}

Bypass Mod Security Reëls

Pad Verwarring

In hierdie pos word verduidelik dat ModSecurity v3 (tot 3.0.12), die REQUEST_FILENAME veranderlike onvanpas geïmplementeer het wat veronderstel was om die benaderde pad te bevat (tot by die begin van die parameters). Dit is omdat dit 'n URL-dekode uitgevoer het om die pad te kry.
Daarom sal 'n versoek soos http://example.com/foo%3f';alert(1);foo= in mod security aanneem dat die pad net /foo is omdat %3f in ? omskep word wat die URL-pad beëindig, maar eintlik sal die pad wat 'n bediener ontvang /foo%3f';alert(1);foo= wees.

Die veranderlikes REQUEST_BASENAME en PATH_INFO was ook deur hierdie fout geraak.

Iets soortgelyks het in weergawe 2 van Mod Security gebeur wat dit moontlik gemaak het om 'n beskerming te omseil wat voorkom dat 'n gebruiker lêers met spesifieke uitbreidings wat verband hou met rugsteunlêers (soos .bak) toegang kry deur eenvoudig die punt URL-gekodeer in %2e te stuur, byvoorbeeld: https://example.com/backup%2ebak.

Bypass AWS WAF ACL

Misvormde Kopteks

Hierdie navorsing noem dat dit moontlik was om AWS WAF-reëls wat oor HTTP-koptekste toegepas is, te omseil deur 'n "misvormde" kopteks te stuur wat nie behoorlik deur AWS gepars is nie, maar wel deur die agterserver.

Byvoorbeeld, deur die volgende versoek met 'n SQL-inspuiting in die kopteks X-Query te stuur:

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

Dit was moontlik om AWS WAF te omseil omdat dit nie sou verstaan dat die volgende lyn deel is van die waarde van die kopstuk nie terwyl die NODEJS-bediener dit wel gedoen het (dit is reggestel).

Verwysings

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

Leer AWS-hacking vanaf nul tot held met htARTE (HackTricks AWS Red Team Expert)!

Ander maniere om HackTricks te ondersteun: