はじめに
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を使用)
- Dockerのインストール
- DVWAコンテナを起動
ターミナルで以下のコマンドを実行しますdocker run --rm -it -p 80:80 vulnerables/web-dvwa
- ブラウザでアクセス
起動後、ブラウザでhttp://localhost
にアクセスします。 - ログイン
初期ログイン情報:- ユーザー名:
admin
- パスワード:
password
- ユーザー名:
ハンズオン:脆弱性の体験と対策
SQLインジェクションの体験
目的
攻撃者が入力欄を利用してデータベースを不正操作する方法を体験します。
手順
- DVWAの「SQL Injection」メニューを選択。
- 入力フィールドに次の文字を入力してみましょう
本来必要な認証がバイパスされ、すべてのユーザー情報が表示されます。
SQL
' OR 1=1 -- '

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

XSS(クロスサイトスクリプティング)の体験
目的
攻撃者が悪意のあるスクリプトを注入し、ユーザーの情報を盗む攻撃を体験します。
手順
- DVWAの「XSS(Stored)」メニューを選択。
- コメント欄に次のコードを入力
<script>alert('XSS攻撃成功!');</script>
- コメントが表示されるページにアクセスすると、ポップアップが表示されます。


対策
- ユーザー入力を表示する際に、HTMLエスケープを行います。
- DVWAの「High」レベルでセキュリティ強化された動作を確認してください。
CSRF(クロスサイトリクエストフォージェリ)の体験
目的
攻撃者がユーザーになりすまして、不正な操作を行う攻撃を体験します。
手順
- DVWAの「CSRF」メニューを選択。
- 別のHTMLファイルを作成し、不正なリクエストを送信します
。
- 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」レベルでの実装例を確認してください。
ファイルアップロード攻撃の体験
目的
不正なファイルをアップロードし、サーバーを攻撃する手法を学びます。
手順
- DVWAの「File Upload」メニューを選択。
- PHPのスクリプトが含まれるファイル(例:
upload.php
)をアップロードします。 - http://localhost/hackable/uploads/upload.phpのようなパスにアクセスし、
ファイルが実行されることで、攻撃が成立します。
PHP
<?php
echo "DVWAファイルアップロードテスト成功!";
?>


対策
- アップロードファイルの拡張子を厳密にチェック。
- アップロードされたファイルを安全な場所に保存し、実行されないように設定。
ハンズオンの注意点
- 学習環境だけで実施
DVWAのようなツールは実験用です。実際のWebアプリケーションや他人のサイトに攻撃行為を行うと、不正アクセス禁止法に違反する可能性があります。 - セキュリティレベルを段階的に上げる
DVWAではセキュリティレベル(Low、Medium、High)を切り替えられます。最初は「Low」で攻撃を体験し、次に「High」で対策を学びましょう。
ハンズオンの学習成果
- 攻撃手法を理解する
実際に脆弱性を体験することで、攻撃者の視点を学べます。 - 具体的な対策を学ぶ
各脆弱性に対して、効果的なセキュリティ対策を実装できるようになります。 - セキュリティ意識の向上
脆弱性を知ることで、自分が作るシステムにも気を配る習慣が身に付きます。
まとめ
ハンズオンプロジェクトで、脆弱性を「実際に体験して学ぶ」ことは、Webセキュリティのスキル向上に最適な方法です。DVWAのような学習用ツールを活用して、安全な環境でセキュリティの基礎から応用までを学びましょう。
さあ、実践を通じてセキュリティのプロを目指しましょう!
コメント