Web 脆弱性マスター

このコースでは、最も一般的な Web 脆弱性とそれらを悪用する方法について学びます。SQL インジェクション、ファイルインクルージョン、クロスサイトスクリプティング(XSS)、ファイルアップロード、コマンドインジェクション、ディレクトリトラバーサルの脆弱性について学びます。また、さまざまな手法とツールを使用してこれらの脆弱性を悪用する方法も学びます。

サイバーセキュリティウェブ開発

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

はじめに

「Web 脆弱性マスター」は、安全でない入力処理がどのように悪用可能な Web アプリケーションの欠陥になるかを学ぶ、初心者向けのガイド付きコースです。8 つのハンズオンラボで、意図的に脆弱な PHP アプリケーションを Docker で実行し、その動作とソースコードの一部を調べ、Firefox または端末からテストします。

扱う攻撃経路は、データベースクエリに対する SQL インジェクション、ローカルおよびリモートファイルインクルージョン、反射型クロスサイトスクリプティング、安全でないファイルアップロード、OS コマンドインジェクション、PHP コードインジェクションです。各演習では、脆弱なコーディングパターンを、認証回避、データ抽出、スクリプト実行、ファイルアクセス、Web シェルといった確認可能な結果に結び付けます。

学習内容

このコースを修了すると、次のことができるようになります。

  • Docker で意図的に脆弱なアプリケーションを起動し、Firefox、URL パラメータ、フォーム、Hackbar を通じて操作する
  • エラーと真偽条件のテストで SQL インジェクションを検出し、数値と文字列のコンテキストを区別してクエリの列数を特定する
  • UNION SELECT と information_schema で MySQL データベースの構造を調べ、データを取得し、安全でないログインクエリを回避する
  • 静的な PHP ファイルインクルージョンとユーザー制御のものを区別し、管理されたペイロードでローカルまたはリモートインクルージョンを確認する
  • 反射型 XSS ペイロードを作成し、別の要素やイベントハンドラーの形式で単純な大文字・小文字依存フィルターを回避する
  • ファイルアップロードの検証を調べ、PHP テストページやコマンドシェルをアップロードし、任意課題として拡張子による回避を試す
  • OS コマンドに渡される安全でない入力を悪用し、追加コマンドを実行してラボ内限定のリバースシェルを確立する
  • PHP の eval() に渡される文字列から抜け出し、関数呼び出し、サーバーファイルの読み取り、新規ファイルの書き込み、簡単な Web シェル作成を行う

このコースの対象者

このコースは、脆弱な PHP コードと動作する概念実証ペイロードの関係をガイド付きで学びたい、Web セキュリティテスター志望者、開発者、CTF 学習者、サイバーセキュリティ初学者を対象としています。本格的なインターセプトプロキシの手順に進む前に、ブラウザでの実験と URL の直接変更から始めたい方に適しています。

前提知識: Linux 端末の基本操作と、URL、クエリパラメータ、HTML フォーム、単純な Web リクエストに関する知識を推奨します。PHP と SQL の初歩を理解しているとソースコードの説明を追いやすくなりますが、ラボでは登場時に必要な構文を説明します。

学習環境: ラボでは、Firefox、端末、Docker、ローカルの脆弱な Web アプリケーション、提供された Hackbar 拡張ファイルを備えた、隔離された LabEx のグラフィカル Linux 環境を使用します。複数の演習で公開 Docker イメージを取得し、リモートファイルインクルージョンの実演では公開された PentesterLab ペイロードを 1 つ参照します。第三者アカウントはコースで要求されません。

よくある質問

Burp Suite などのインターセプトプロキシは必要ですか?

いいえ。演習では Firefox、URL やフォームへの直接入力、ブラウザ開発者ツール、Hackbar、端末コマンドを使います。Burp Suite で生の HTTP 通信を傍受・変更する作業は対象外です。

脆弱なアプリケーションはすべてローカルでホストされますか?

アプリケーション自体は、ラボ内のローカル Docker コンテナで実行します。セットアップコマンドはコンテナレジストリから公開イメージを取得し、リモートファイルインクルージョン演習は公開ホストされた実演用ペイロードを読み込むため、そのレッスンは完全なオフラインではありません。

ここでいうコマンドインジェクションとコードインジェクションの違いは何ですか?

コマンドインジェクションのラボでは、信頼できない入力をシステムコマンドに組み込み、追加の OS コマンドが実行されることを示します。コードインジェクションのラボでは、eval() に渡される PHP 文字列に入力が入り、注入した PHP 関数でファイルを読み書きして Web シェルを作成します。

すべての脆弱性の修正方法も学べますか?

安全でないパターンを説明し、拡張子、MIME タイプ、サイズの検証といった確認方法も紹介しますが、ハンズオンの中心は脆弱性利用です。安全なクエリのパラメータ化、体系的な出力エンコーディング、本番向けアップロード設計、完全な修正検証は追加学習が必要です。

講師

labby
Labby
Labby is the LabEx teacher.