サーバーサイド Web 攻撃

サーバーサイド Web 攻撃。SSRF、XXE、JWT 操作など、高度なサーバーサイドの脆弱性に挑みます。複数の欠陥を連鎖させて機密ファイルを読み取ったり、管理者トークンを偽造したりする手法を学びましょう。

Cybersecurity Engineerサイバーセキュリティ

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

サーバー側機能がユーザー指定 URL を取得したり、XML エンティティを解決したり、確実な検証なしに JWT フィールドを信頼したりすると、攻撃経路になり得ます。本コースでは、意図的に脆弱なサービスへのターミナル演習を通じて SSRF、XXE、JWT 操作を学びます。

各サーバー動作の特定から、内部サービスへの到達、ローカルファイルの読み取り、トークンクレームの変更、署名シークレットの取得まで、その影響を確認します。最後のチャレンジでは XXE のファイル漏えいと有効な HS256 管理者トークン作成を連鎖させます。

学習内容

  • URL 取得パラメータを特定し、サーバーが外向きリクエストを実行することを確認する。
  • 別形式の IP 表記で文字列ベースの localhost フィルターを回避し、内部管理サービスへ到達する。
  • SSRF 経由で模擬クラウドメタデータサービスを照会し、演習用認証情報を確認する。
  • XML 解析とエンティティ展開を確認し、/etc/passwd を読む外部エンティティを作成する。
  • JWT を抽出して 3 部分に分割し、Base64Url のヘッダーとペイロードクレームを復号する。
  • none アルゴリズムを誤って受け入れる演習 API に対し、未署名の管理者トークンを偽造する。
  • XXE によるシークレット漏えいと Python の HS256 署名を連鎖させ、保護された Flag にアクセスする。

このコースの対象者

基本的なリクエストを構成でき、サーバー側コンポーネント内部の信頼境界を学びたい Web セキュリティ学習者向けの中級コースです。ペネトレーションテスター志望者、API セキュリティ学習者、不安全な URL 取得、XML パーサー設定、JWT 検証の実例を求める開発者にも適しています。

前提知識: Linux ターミナルと curl、HTTP メソッドとヘッダー、基本的な XML/JSON 構文、Shell テキスト処理と Base64 の概念に慣れ、短い Python スクリプトを読めること。

学習環境: ローカルのポート 5000 と 8080 の脆弱アプリ、169.254.169.254:8000 の模擬メタデータサービス、Python jwt ライブラリを備えた Ubuntu 22.04 ターミナル。最初の SSRF 確認ではローカルアプリが example.com を取得し、その後は演習用サービスを対象とします。

よくある質問

クラウドメタデータの認証情報は本物ですか?

いいえ。メタデータエンドポイントと IAM 風の応答は、実験内のポート 8000 で動くシミュレーションです。実際のクラウドアカウントを使わず、リクエスト経路と潜在的影響を示します。

XXE 演習では Burp Suite などのグラフィカルプロキシを使いますか?

いいえ。ターミナルで XML ペイロードファイルを作成・編集し、curl で送信します。グラフィカルツールなしでリクエスト構造とパーサー動作を学びます。

JWT のデコードは暗号を破ることと同じですか?

いいえ。JWT のヘッダーとペイロードは Base64Url エンコードで通常は読み取り可能であり、本演習では暗号化されていません。安全性は署名検証と署名シークレットの保護に依存します。

2 種類の JWT 攻撃はどう違いますか?

ガイド付き演習は alg: none を誤って受け入れるサーバーを利用するため、偽造トークンは未署名です。最後のチャレンジでは HS256 が正しく必須であり、まず XXE でシークレットを漏えいさせ、実際に署名した管理者トークンを生成します。

講師

labby
Labby
Labby is the LabEx teacher.