Proxy / WAF Protections Bypass

Lernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Umgehen von Nginx ACL-Regeln durch Pfadmanipulation

Techniken aus dieser Forschung.

Beispiel für eine Nginx-Regel:

location = /admin {
deny all;
}

location = /admin/ {
deny all;
}

NodeJS - Express

Nginx Version

Node.js Bypass Characters

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 Version

Flask Bypass Characters

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 Version

Spring Boot Bypass Characters

1.22.0

;

1.21.6

;

1.20.2

\x09, ;

1.18.0

\x09, ;

1.16.1

\x09, ;

PHP-FPM

Nginx FPM configuration:

location = /admin.php {
deny all;
}

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

Nginx ist so konfiguriert, dass der Zugriff auf /admin.php blockiert wird, aber es ist möglich, dies zu umgehen, indem man auf /admin.php/index.php zugreift.

Wie man das verhindert

location ~* ^/admin {
deny all;
}

Umgehen von Mod Security Regeln

Pfadverwirrung

In diesem Beitrag wird erklärt, dass ModSecurity v3 (bis 3.0.12) die Variable REQUEST_FILENAME fehlerhaft implementiert hat, die den aufgerufenen Pfad enthalten sollte (bis zum Beginn der Parameter). Dies liegt daran, dass es eine URL-Dekodierung durchgeführt hat, um den Pfad zu erhalten. Daher wird eine Anfrage wie http://example.com/foo%3f';alert(1);foo= in Mod Security annehmen, dass der Pfad nur /foo ist, weil %3f in ? umgewandelt wird und den URL-Pfad beendet. Tatsächlich wird der Pfad, den ein Server erhalten wird, jedoch /foo%3f';alert(1);foo= sein.

Die Variablen REQUEST_BASENAME und PATH_INFO waren ebenfalls von diesem Fehler betroffen.

In Version 2 von Mod Security trat etwas Ähnliches auf, das es ermöglichte, einen Schutz zu umgehen, der verhinderte, dass Benutzer auf Dateien mit bestimmten Erweiterungen im Zusammenhang mit Sicherungskopien (wie z. B. .bak) zugreifen konnten, indem einfach der Punkt URL-codiert in %2e gesendet wurde, zum Beispiel: https://example.com/backup%2ebak.

Umgehen von AWS WAF ACL

Fehlerhafte Header

Diese Forschung erwähnt, dass es möglich war, AWS WAF-Regeln, die über HTTP-Header angewendet wurden, zu umgehen, indem ein "fehlerhafter" Header gesendet wurde, der von AWS nicht ordnungsgemäß analysiert wurde, aber vom Backend-Server wurde.

Beispielsweise durch das Senden der folgenden Anfrage mit einem SQL-Injection im Header X-Query:

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

Es war möglich, AWS WAF zu umgehen, weil es nicht verstand, dass die nächste Zeile Teil des Werts des Headers ist, während der NODEJS-Server dies tat (dies wurde behoben).

Referenzen

Lernen Sie AWS-Hacking von Null auf Held mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Last updated