7.7 KiB
Proxy / WAF Protections Bypass
AWSハッキングをゼロからヒーローまで学ぶ htARTE(HackTricks AWS Red Team Expert)!
HackTricksをサポートする他の方法:
- HackTricksで企業を宣伝したいまたはHackTricksをPDFでダウンロードしたい場合は、SUBSCRIPTION PLANSをチェックしてください!
- 公式PEASS&HackTricksスワッグを入手する
- The PEASS Familyを発見し、独占的なNFTsのコレクションを見つける
- 💬 Discordグループまたはtelegramグループに参加するか、Twitter 🐦 @carlospolopmでフォローする。
- HackTricksおよびHackTricks CloudのgithubリポジトリにPRを提出して、あなたのハッキングテクニックを共有してください。
{% 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 v3(3.0.12まで)がREQUEST_FILENAME
変数を適切に実装していなかったことが説明されています。この変数はアクセスされたパス(パラメータの開始まで)を含むはずでした。これは、パスを取得するためにURLデコードを実行したためです。
したがって、Mod Securityでのhttp://example.com/foo%3f';alert(1);foo=
というリクエストは、%3f
が?
に変換されてURLパスが終了するため、パスが単に/foo
であると仮定しますが、実際にサーバーが受信するパスは/foo%3f';alert(1);foo=
になります。
変数REQUEST_BASENAME
とPATH_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サーバーは理解していました(これは修正されました)。
参考文献
- https://rafa.hashnode.dev/exploiting-http-parsers-inconsistencies
- https://blog.sicuranext.com/modsecurity-path-confusion-bugs-bypass/
{% embed url="https://websec.nl/" %}
ゼロからヒーローまでのAWSハッキングを学ぶ htARTE(HackTricks AWS Red Team Expert)!
HackTricksをサポートする他の方法:
- HackTricksで企業を宣伝したい、またはHackTricksをPDFでダウンロードしたい場合は、SUBSCRIPTION PLANSをチェックしてください!
- 公式PEASS&HackTricksスワッグを手に入れる
- The PEASS Familyを発見し、独占的なNFTsのコレクションを見つける
- **💬 Discordグループに参加するか、telegramグループに参加するか、Twitter 🐦 @carlospolopmをフォローする。
- ハッキングトリックを共有するために、 HackTricksとHackTricks CloudのGitHubリポジトリにPRを提出する。