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

7.7 KiB
Raw Blame History

Proxy / WAF Protections Bypass

AWSハッキングをゼロからヒーローまで学ぶ htARTEHackTricks AWS Red Team Expert

HackTricksをサポートする他の方法

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

Nginx ACLルールのパス名操作によるバイパス

この研究からのテクニック。

Nginxのルール例

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は/admin.phpへのアクセスをブロックするように設定されていますが、/admin.php/index.phpにアクセスすることでこれをバイパスすることが可能です。

防止方法

location ~* ^/admin {
deny all;
}

Mod Securityルールのバイパス

パスの混乱

この投稿では、ModSecurity v33.0.12まで)がREQUEST_FILENAME変数を適切に実装していなかったことが説明されています。この変数はアクセスされたパスパラメータの開始までを含むはずでした。これは、パスを取得するためにURLデコードを実行したためです。
したがって、Mod Securityでのhttp://example.com/foo%3f';alert(1);foo=というリクエストは、%3f?に変換されてURLパスが終了するため、パスが単に/fooであると仮定しますが、実際にサーバーが受信するパスは/foo%3f';alert(1);foo=になります。

変数REQUEST_BASENAMEPATH_INFOもこのバグの影響を受けました。

Mod Securityのバージョン2でも同様のことが起こり、特定の拡張子を持つファイル.bakなどのバックアップファイルへのアクセスを防ぐ保護をバイパスすることができました。単にドットをURLエンコードした%2eを送信することで、例えば、https://example.com/backup%2ebak

AWS WAF ACLのバイパス

不正なヘッダー

この研究によると、AWS WAFが適用されたHTTPヘッダー上のルールをバイパスすることが可能であり、AWSが適切に解析しなかったが、バックエンドサーバーが解析した「不正な」ヘッダーを送信することでバイパスできました。

例えば、次のリクエストを送信すると、ヘッダーX-QueryにSQLインジェクションが含まれています

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をバイパスすることが可能でした。これは、次の行がヘッダーの値の一部であることを理解しなかったためで、一方、NODEJSサーバーは理解していましたこれは修正されました

参考文献

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

ゼロからヒーローまでのAWSハッキングを学ぶ htARTEHackTricks AWS Red Team Expert

HackTricksをサポートする他の方法