ハンズオンプロジェクト:脆弱性を体験して学ぶ実践的なWebセキュリティ

セキュリティ

はじめに

Webセキュリティを学ぶには、理論だけでなく、実際に脆弱性を体験してみることが非常に効果的です。DVWA(Damn Vulnerable Web Application)のような安全な学習環境を使えば、自分のPC上で脆弱性を体験しながら、その対策を実装するスキルを身に付けることができます。

この記事では、DVWAを使ったハンズオンプロジェクトを紹介します!

DVWAとは?

DVWA(Damn Vulnerable Web Application)は、意図的に脆弱性を含んだWebアプリケーションです。セキュリティの初心者から上級者までが、さまざまな攻撃手法や対策を学べるトレーニング用ツールとして人気です。

学べる主な脆弱性

  • SQLインジェクション
  • XSS(クロスサイトスクリプティング)
  • CSRF(クロスサイトリクエストフォージェリ)
  • ファイルアップロード攻撃
  • その他多数

ハンズオンの準備

必要な環境

  • ローカルPC(Windows、macOS、Linuxいずれも可)
  • Docker(DVWAを簡単に起動するため)

DVWAのインストール方法(Dockerを使用)

  1. Dockerのインストール
  2. DVWAコンテナを起動
    ターミナルで以下のコマンドを実行します
    docker run --rm -it -p 80:80 vulnerables/web-dvwa
  3. ブラウザでアクセス
    起動後、ブラウザで http://localhost にアクセスします。
  4. ログイン
    初期ログイン情報:
    • ユーザー名:admin
    • パスワード:password

ハンズオン:脆弱性の体験と対策

SQLインジェクションの体験

目的
攻撃者が入力欄を利用してデータベースを不正操作する方法を体験します。

手順

  1. DVWAの「SQL Injection」メニューを選択。
  2. 入力フィールドに次の文字を入力してみましょう
    本来必要な認証がバイパスされ、すべてのユーザー情報が表示されます。
SQL
' OR 1=1 -- '

対策

  • プリペアドステートメントを使用することで、SQL文とデータを分離します。
  • DVWAのセキュリティレベルを「High」に設定し、対策済みのコードを確認できます。

XSS(クロスサイトスクリプティング)の体験

目的
攻撃者が悪意のあるスクリプトを注入し、ユーザーの情報を盗む攻撃を体験します。

手順

  1. DVWAの「XSS(Stored)」メニューを選択。
  2. コメント欄に次のコードを入力
    <script>alert('XSS攻撃成功!');</script>
  3. コメントが表示されるページにアクセスすると、ポップアップが表示されます。

対策

  • ユーザー入力を表示する際に、HTMLエスケープを行います。
  • DVWAの「High」レベルでセキュリティ強化された動作を確認してください。

CSRF(クロスサイトリクエストフォージェリ)の体験

目的
攻撃者がユーザーになりすまして、不正な操作を行う攻撃を体験します。

手順

  1. DVWAの「CSRF」メニューを選択。
  2. 別のHTMLファイルを作成し、不正なリクエストを送信します
  3. csrfのページでパスワード変更のメッセージが出てきたら、攻撃用passwordでログインしてみましょう。
HTML
<!DOCTYPE html>
<html>
<head>
    <title>CSRF Attack</title>
</head>
<body>
    <h1>悪意のあるリンク</h1>
    <a href="http://localhost/vulnerabilities/csrf/?password_new=attackerpassword&password_conf=attackerpassword&Change=Change">
        ここをクリックしてパスワードを変更
    </a>
</body>
</html>

対策

  • フォームにCSRFトークンを導入し、不正リクエストを検出します。
  • DVWAの「High」レベルでの実装例を確認してください。

ファイルアップロード攻撃の体験

目的
不正なファイルをアップロードし、サーバーを攻撃する手法を学びます。

手順

  1. DVWAの「File Upload」メニューを選択。
  2. PHPのスクリプトが含まれるファイル(例:upload.php)をアップロードします。
  3. http://localhost/hackable/uploads/upload.phpのようなパスにアクセスし、
    ファイルが実行されることで、攻撃が成立します。
PHP
<?php
echo "DVWAファイルアップロードテスト成功!";
?>

対策

  • アップロードファイルの拡張子を厳密にチェック。
  • アップロードされたファイルを安全な場所に保存し、実行されないように設定。

ハンズオンの注意点

  1. 学習環境だけで実施
    DVWAのようなツールは実験用です。実際のWebアプリケーションや他人のサイトに攻撃行為を行うと、不正アクセス禁止法に違反する可能性があります。
  2. セキュリティレベルを段階的に上げる
    DVWAではセキュリティレベル(Low、Medium、High)を切り替えられます。最初は「Low」で攻撃を体験し、次に「High」で対策を学びましょう。

ハンズオンの学習成果

  • 攻撃手法を理解する
    実際に脆弱性を体験することで、攻撃者の視点を学べます。
  • 具体的な対策を学ぶ
    各脆弱性に対して、効果的なセキュリティ対策を実装できるようになります。
  • セキュリティ意識の向上
    脆弱性を知ることで、自分が作るシステムにも気を配る習慣が身に付きます。

まとめ

ハンズオンプロジェクトで、脆弱性を「実際に体験して学ぶ」ことは、Webセキュリティのスキル向上に最適な方法です。DVWAのような学習用ツールを活用して、安全な環境でセキュリティの基礎から応用までを学びましょう。

さあ、実践を通じてセキュリティのプロを目指しましょう!

コメント

タイトルとURLをコピーしました