5.8 KiB
ヘッダースマグリングのアップグレード
htARTE(HackTricks AWS Red Team Expert) でAWSハッキングをゼロからヒーローまで学ぶ!
HackTricks をサポートする他の方法:
- HackTricks で企業を宣伝したい または HackTricks をPDFでダウンロードしたい 場合は SUBSCRIPTION PLANS をチェックしてください!
- 公式PEASS&HackTricksスワッグを入手する
- The PEASS Family、当社の独占的な NFTs コレクションを発見する
- 💬 Discordグループ に参加するか、telegramグループ に参加するか、Twitter 🐦 で @carlospolopm をフォローしてください @carlospolopm.
- ハッキングトリックを共有するには、PRを HackTricks と HackTricks Cloud github リポジトリに提出してください。
最も重要な脆弱性を見つけて修正を迅速化します。Intruder は攻撃対象を追跡し、積極的な脅威スキャンを実行し、APIからWebアプリ、クラウドシステムまでの技術スタック全体で問題を見つけます。無料でお試しください 今すぐ。
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
H2C スマグリング
HTTP2 Over Cleartext (H2C)
H2C、または http2 over cleartext は、標準のHTTP 接続を永続的なものにアップグレード することで、一時的なHTTP接続の通常から逸脱します。このアップグレードされた接続は、平文のHTTPの単一リクエストの性質とは異なり、継続的な通信のためにhttp2バイナリプロトコルを利用します。
スマグリングの問題の核心は、リバースプロキシの使用にあります。通常、リバースプロキシはHTTPリクエストを処理し、バックエンドに転送し、その後バックエンドの応答を返します。ただし、HTTPリクエストに Connection: Upgrade
ヘッダーが存在する場合(websocket接続で一般的に見られる)、リバース プロキシはクライアントとサーバーの間に永続的な接続を維持 し、特定のプロトコルで必要な連続した交換を容易にします。H2C接続の場合、RFCへの遵守には、特定の3つのヘッダーが存在する必要があります:
Upgrade: h2c
HTTP2-Settings: AAMAAABkAARAAAAAAAIAAAAA
Connection: Upgrade, HTTP2-Settings
脆弱なプロキシ
脆弱性は、リバースプロキシがUpgrade
および時折Connection
ヘッダーを処理する方法に依存しています。次のプロキシは、プロキシパス中にこれらのヘッダーを暗黙的に転送し、それによってH2Cスマグリングを可能にします:
- HAProxy
- Traefik
- Nuster
一方、これらのサービスはプロキシパス中に両方のヘッダーを暗黙的に転送しません。ただし、Upgrade
およびConnection
ヘッダーを無選別に転送するように不安全に構成されている可能性があります:
- AWS ALB/CLB
- NGINX
- Apache
- Squid
- Varnish
- Kong
- Envoy
- Apache Traffic Server
悪用
重要なのは、すべてのサーバーが、準拠したH2C接続アップグレードに必要なヘッダーを暗黙的に転送するわけではないということです。そのため、AWS ALB/CLB、NGINX、Apache Traffic Serverなどのサーバーは、H2C接続をブロックします。それでも、Connection: Upgrade
バリアント(Connection
ヘッダーからHTTP2-Settings
値を除外したもの)でテストする価値があります。なぜなら、一部のバックエンドが標準に準拠していない可能性があるからです。
{% hint style="danger" %}
proxy_pass
URL内で指定された特定のパス(例:http://backend:9999/socket.io
)に関係なく、確立された接続はデフォルトでhttp://backend:9999
になります。これにより、このテクニックを利用して、その内部エンドポイント内の任意のパスとやり取りすることが可能です。したがって、proxy_pass
URL内でパスを指定してもアクセスが制限されません。
{% endhint %}
BishopFoxのh2csmugglerおよびassetnoteのh2csmugglerというツールは、H2C接続を確立することで、プロキシによって適用された保護を回避し、プロキシによって保護されたリソースにアクセスする試みを支援します。
この脆弱性に関する詳細情報、特にNGINXに関する情報については、この詳細なリソースを参照してください。