Proxy / WAF Protections Bypass
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Tehnike iz ove studije.
Primer Nginx pravila:
Da bi se sprečili zaobilaženja, Nginx vrši normalizaciju putanje pre nego što je proveri. Međutim, ako backend server vrši drugačiju normalizaciju (uklanjajući karaktere koje Nginx ne uklanja), može biti moguće zaobići ovu odbranu.
Nginx Verzija
Node.js Karakteri za zaobilaženje
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
Nginx Verzija
Flask Karakteri za zaobilaženje
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
Nginx Verzija
Spring Boot Karakteri za zaobilaženje
1.22.0
;
1.21.6
;
1.20.2
\x09
, ;
1.18.0
\x09
, ;
1.16.1
\x09
, ;
Nginx FPM konfiguracija:
Nginx je konfigurisan da blokira pristup /admin.php
, ali je moguće zaobići ovo pristupom /admin.php/index.php
.
U ovom postu objašnjeno je da ModSecurity v3 (do 3.0.12), nepravilno implementira REQUEST_FILENAME
varijablu koja je trebala da sadrži pristupnu putanju (do početka parametara). To je zato što je izvršavao URL dekodiranje da bi dobio putanju.
Zbog toga, zahtev poput http://example.com/foo%3f';alert(1);foo=
u mod security će pretpostaviti da je putanja samo /foo
jer se %3f
transformiše u ?
koji završava URL putanju, ali zapravo putanja koju server prima biće /foo%3f';alert(1);foo=
.
Varijable REQUEST_BASENAME
i PATH_INFO
su takođe bile pogođene ovim greškom.
Nešto slično se dogodilo u verziji 2 Mod Security koja je omogućila zaobilaženje zaštite koja je sprečavala korisnike da pristupaju datotekama sa specifičnim ekstenzijama vezanim za rezervne datoteke (kao što su .bak
) jednostavno slanjem tačke URL kodirane u %2e
, na primer: https://example.com/backup%2ebak
.
Ova istraživanja pominju da je bilo moguće zaobići AWS WAF pravila primenjena na HTTP zaglavlja slanjem "neispravnog" zaglavlja koje nije pravilno analizirano od strane AWS-a, ali jeste od strane backend servera.
Na primer, slanjem sledećeg zahteva sa SQL injekcijom u zaglavlju X-Query:
Moguće je zaobići AWS WAF jer nije razumeo da je sledeća linija deo vrednosti zaglavlja dok je NODEJS server to razumeo (ovo je ispravljeno).
Obično WAF-ovi imaju određeno ograničenje dužine zahteva za proveru i ako je POST/PUT/PATCH zahtev veći od toga, WAF neće proveriti zahtev.
Za AWS WAF, možete proveriti dokumentaciju:
Maksimalna veličina tela web zahteva koja može biti pregledana za zaštitu od Application Load Balancer i AWS AppSync
8 KB
Maksimalna veličina tela web zahteva koja može biti pregledana za zaštitu od CloudFront, API Gateway, Amazon Cognito, App Runner i Verified Access**
64 KB
Iz Azure dokumenata:
Stariji Web Application Firewalls sa Core Rule Set 3.1 (ili nižim) dozvoljavaju poruke veće od 128 KB isključivanjem inspekcije tela zahteva, ali te poruke neće biti proverene na ranjivosti. Za novije verzije (Core Rule Set 3.2 ili novije), isto se može uraditi isključivanjem maksimalnog ograničenja veličine tela zahteva. Kada zahtev premaši ograničenje veličine:
Ako je mod prevencije: Zapisuje i blokira zahtev.
Ako je mod detekcije: Pregleda do ograničenja, ignoriše ostatak i zapisuje ako Content-Length
premašuje ograničenje.
Iz Akamai:
Podrazumevano, WAF pregledava samo prvih 8KB zahteva. Može povećati ograničenje do 128KB dodavanjem Naprednih Metapodataka.
Iz Cloudflare:
Do 128KB.
U zavisnosti od implementacije Unicode normalizacije (više informacija ovde), karakteri koji dele Unicode kompatibilnost mogu biti u mogućnosti da zaobiđu WAF i izvrše se kao predviđeni payload. Kompatibilni karakteri se mogu naći ovde.
https://github.com/ustayready/fireprox: Generišite URL API gateway-a koji će se koristiti sa ffuf
https://github.com/rootcathacking/catspin: Slično fireprox-u
https://github.com/PortSwigger/ip-rotate: Burp Suite dodatak koji koristi IP adrese API gateway-a
https://github.com/fyoorer/ShadowClone: Dinamički određeni broj instanci kontejnera se aktivira na osnovu veličine ulazne datoteke i faktora deljenja, pri čemu se ulaz deli na delove za paralelno izvršavanje, kao što je 100 instanci koje obrađuju 100 delova iz ulazne datoteke od 10.000 redova sa faktorom deljenja od 100 redova.
Različite tehnike se mogu koristiti za zaobilaženje regex filtera na vatrozidima. Primeri uključuju naizmenično korišćenje velikih i malih slova, dodavanje preloma linija i kodiranje payload-a. Resursi za različite zaobilaženja mogu se naći na PayloadsAllTheThings i OWASP. Primeri u nastavku su preuzeti iz ovog članka.
nowafpls: Burp dodatak za dodavanje beskorisnih podataka u zahteve kako bi se zaobišli WAF-ovi po dužini
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)