Proxy / WAF Protections Bypass
Bypass Nginx ACL-reëls met Padnaammanipulasie
Tegnieke van hierdie navorsing.
Nginx-reëlvoorbeeld:
NodeJS - Express
Nginx Weergawe | Node.js Omgang Karakters |
1.22.0 |
|
1.21.6 |
|
1.20.2 |
|
1.18.0 |
|
1.16.1 |
|
Flask
Nginx Weergawe | Flask Omgang Karakters |
1.22.0 |
|
1.21.6 |
|
1.20.2 |
|
1.18.0 |
|
1.16.1 |
|
Spring Boot
Nginx Weergawe | Spring Boot Omgang Karakters |
1.22.0 |
|
1.21.6 |
|
1.20.2 |
|
1.18.0 |
|
1.16.1 |
|
PHP-FPM
Nginx FPM konfigurasie:
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
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:
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
Last updated