WebGoatの紹介

WebGoatの紹介の画像

事業推進部のイトウです。

Webセキュリティを学習する場合、書籍などで脆弱性について学ぶだけでなく、実際に手を動かして脆弱性を試すことも重要になります。しかしながら、インターネット上のWebサイトに対して攻撃することはできないため、実践するには自分で環境を用意する必要があります。そこで今回は、簡単にWebアプリケーションの脆弱性に対する攻撃を実践できる方法を紹介します。

WebGoatについて

WebGoatとは、OWASPプロジェクトの一つであり、Webアプリケーションの脆弱性を学習・実践するためのWebアプリケーションです。

↓OWASP WebGoat
https://owasp.org/www-project-webgoat/

環境構築

Docker Desktop for Windowsを利用して、ローカル上に環境を構築します。

[手順①]Docker Desktop for Windowsをインストールします。
Docker Desktop for Windowsは以下のサイトからダウンロードできます。
https://www.docker.com/products/docker-desktop
詳細なインストール方法については記載を割愛しますので、公式または他サイトなどの情報を参考になさってください。

[手順②]Dockerのインストールが完了したら、WebGoatのイメージをダウンロードします。

docker pull webgoat/webgoat-8.0

[手順③]ダウンロードしたイメージからコンテナを起動します。

docker run -p 8080:8080 -t webgoat/webgoat-8.0

[手順④]コンテナが起動したら、以下のURLからWebGoatにアクセスします。
http://localhost:8080/WebGoat/login

[手順⑤]初回利用時のユーザ登録を行い、ログインすることでWebGoatが利用可能になります。
WebGoatは全て英語で記載されていますので、英語の自信がない場合は、翻訳ツールなどを活用しながら学習を進めるとよいでしょう。
(ちなみに私も英語が苦手なので、DeepL翻訳が必須でした。)

それでは実際にどんな脆弱性があるのか実践してみましょう。
今回取り上げるのはSQLインジェクションの項目です。

SQLインジェクション

SQLインジェクションでは、以下の3つのセクションが用意されています。

  • SQL Injection (intro)
  • SQL Injection (advanced)
  • SQL Injection (mitigation)

今回は、SQL Injection (intro)のセクションについて見てみます。このセクションでは、前半部分にSQL構文の基本的な解説があり、後半部分にSQLインジェクションについての解説があります。

それでは、SQL Injection (intro)のセクションのP10の問題にチャレンジしてみます。

この問題では、あらかじめ下記のSQL文が与えられており、「Login_Count」と「User_Id」の入力項目に値を入力し、user_dataテーブルから全てのデータを取得できれば正解となります。

"SELECT * FROM user_data WHERE login_count = " + Login_Count + " AND userid = "  + User_ID;

user_dataテーブルから全てのデータを取得するには、WHERE句をうまく無効化できればよいので、WHERE句の条件文が常に真になるように値を入力します。

SELECT * From user_data WHERE Login_Count = 1 and userid= 1 or 1=1

user_dataテーブルのデータを取得することができました。
このようにWebGoatでは実際に手を動かしながら脆弱性を試すことができます。

まとめ

今回はDockerを利用したため、作業時間10分程度で環境を構築することができました。
(時間があれば、一から全部構築してみるのもよい勉強にはなると思います。)

また、SQLインジェクションについて少し紹介しましたが、WebGoatにはSQLインジェクション以外にも、XSS(クロスサイトスクリプティング)やディレクトリトラバーサルなど、OWASP TOP10のほとんどの脆弱性を試すことができますので、Webセキュリティを学ぶ際に活用してみてはいかがでしょうか。

この記事をシェアする

関連コラム

  • 現在投稿がありません。

資料ダウンロード

弊社が提供する各種サービス資料を 無料でダウンロードいただけます。

資料一覧ページへ