
traefik CVEの概念実証 - 影響を理解するため
Shadow Corp Capture the Flag (CTF) チャレンジへようこそ!このチャレンジでは、セキュリティヘッダーやHTTPプロキシの動作に関する脆弱性の特定と悪用のスキルをテストします。あなたのミッションは、保護を回避し、Shadow Corp Webアプリケーションに隠された秘密を明らかにすることです。
あなたは、秘密のサイバースパイ活動に関与している悪名高い組織Shadow Corpの公開Webインターフェースを発見しました。噂によると、信頼された内部関係者のみがアクセスできる保護されたエンドポイントを確保しているとのことです。しかし、適切なテクニックを使えば、システムを騙してこの隠されたエンドポイントを明らかにし、Shadow Corpの秘密を暴露できるという噂もあります。あなたのタスク:保護されたエンドポイントにアクセスし、隠されたフラグを取得することです!
このCTFはローカルで実行でき、Webアプリケーションのインストールと設定が必要です。
docker composeはこのアプリケーションを実行するために必要です curlはエンドポイントのクエリとテストに推奨されます。
リポジトリをクローンし、プロジェクトディレクトリに移動します:
cd traefik-CVE-2024-45410-poc
CTFを実行
docker compose up
あなたの主な目標は、/protectedエンドポイントにアクセスし、秘密のフラグを取得することです。ただし、特定の条件が満たされない限り、直接アクセスはブロックされていることに気付くでしょう。システムはX-Forwarded-Hostヘッダーを検証して信頼できるソースをチェックします。
アプリケーションは、localhost(127.0.0.1)からのアクセスのみを許可するように設計されています。ただし、HTTPヘッダーを注意深く調べると、サーバーを騙して自分が信頼できるソースであると思わせる方法を見つけられるかもしれません。HTTPプロキシヘッダーとその操作方法を調べてみてください。
ホップバイホップヘッダーを調べたことはありますか?これらのヘッダーは、プロキシが転送されたリクエストの動作を制御または変更するために一般的に使用されます。これらのヘッダーを適切に操作することで、たとえ実際にはそうでなくても、信頼された場所から来ているとサーバーに信じ込ませることができるかもしれません。
Connectionヘッダーは状況を一変させる可能性があります。システムが暗黙的に信頼するヘッダーを導入できたらどうでしょう?サーバーが予期しない方法でリクエストヘッダーにX-Forwarded-Hostを含める方法を探ってみてください。
コマンド例(解決策ではありません) 以下は、curlを使った実験を始める方法の例です:
curl -i http://localhost:5000/protected
これにより、デフォルトでアクセスが拒否されることがわかります。
一部のシステムでは、特定のヘッダーがホップバイホップと見なされ、HTTPリクエストのチェーン内の各中間ノードの動作を制御します。これらのヘッダーはプロキシによって削除または変更されます。しかし、ヘッダーを巧妙に操作し、適切なホップバイホップヘッダーを指定することで、特定のセキュリティメカニズムを回避する方法を見つけられるかもしれません。Connectionヘッダーがどのように機能するか、また通常は1ホップを超えて転送されない他のヘッダーにどのように影響を与えられるかに焦点を当ててください。これにより、サーバーにあなたが信頼されたクライアントであると信じ込ませることができるかもしれません。
アクセスを得るためにリクエストを調整する方法を考え始めましょう。答えは、アプリケーションが信頼できるホストヘッダーをどのように処理するかにあります。ヘッダーの操作がこのCTFを解く鍵になることを忘れないでください。