Web Application Security Memo

ウェブセキュリティに関するメモ書き

DVWA (Damn Vulnerable Web Application)とは?

※当サイトにはプロモーションが含まれています。

公開日: 更新日:

DVWA

DVWA(Damn Vulnerable Web Application)の公式ドキュメントによる説明と、実際に使ってみて気付いた点についてまとめておきます。

※ 公式ドキュメントはDVWAをダウンロードすると含まれています。発行日は2010年10月27日になっており、バージョンは1.3となっています(DVWAの現行バージョンは1.8です)。ですので、公式ドキュメントに載っている情報は古くなっているところがあるようです。本記事の中では分かる範囲で補正します。

概要

  • DVWA (Damn Vulnerable Web Application)は、PHP/MySQL製の脆弱なWebアプリケーションです。
  • 目的
    • セキュリティのプロが、合法な環境で技術やツールをテストする。
    • Web開発者がWebアプリケーションを安全なものにするプロセスをより理解する。
    • Webアプリケーションセキュリティの教育に使う。
  • RandomStorm OpenSource projectにより開発されました。
  • DVWAプロジェクトは 2008年12月にスタートしました。
  • 現行バージョンは v1.8になります。
  • ライセンス:GNU General Public License

DVWAトップ画面

インストール

  • 自分でインストールするのであれば、XAMPPにインストールするのが楽です。
  • OWASP BWASamurai Web Testing Frameworkには最初から入っていますので、これらを導入すればDVWAを単独でインストールする必要はありません。

含まれる脆弱性

  1. ブルートフォース(Brute Force)
  2. コマンド実行(Command Execution)
  3. クロスサイトスクリプティング(Cross Site Request Forgery (CSRF))
  4. 安全でないCAPTCHA(Insecure CAPTCHA)
  5. ファイルインクルージョン(File Inclusion)
  6. SQLインジェクション(SQL Injection)
  7. 安全でないファイルアップロード(Insecure File Upload)
  8. クロスサイトスクリプティング(Cross Site Scripting (XSS))
  9. イースターエッグ(Easter eggs)
    • ファイルパスディスクロージャ(Full path Disclosure), 認証バイパス(Authentication bypass)やその他の脆弱性が隠されています。

セキュリティ機能

  1. セキュリティレベル(Security Level)
    • セキュリティのレベル(High, Medium, Low)を設定できます。
    • 各ページで[View Source]ボタンをクリックすれば、そのページのPHPソースコードを見ることができます。
    • High
      • このレベルは見本となるコーディングを示します。脆弱性のあるソースコードと安全なソースコードを比べるために使用されます。
      • つまり Highに脆弱性はありません
    • Medium
      • このレベルは主として、開発者がアプリケーションを安全にしようとしたが、失敗してしまったといった例を示します。
    • Low
      • このレベルは完全に脆弱であり、全く安全ではありません。悪いコーディング例を通してWebアプリケーションの脆弱性がどのように現れるかの例として使用されます。
  2. PIP-IDS
    • PHPのIDS (WAF)です。
    • WebアプリケーションにおいてWAFがどのようにセキュリティを改善することができるか、また、いくつかのケースではWAFがどのように回避されるかの例として役立ちます。
    • 参照:PHPIDS » Web Application Security 2.0

ユーザ・セキュリティのための特徴・機能

  • DVWAはWebアプリケーションの脆弱性をエミュレートしているのではなく、本物の脆弱性を含んでいます。非常に危険なのでローカル環境にインストールして下さい。
  • .htaccessが配置されており、ローカルホストからのアクセスしか受け入れない設定が記述されています。
    • ※ 但し、OWASP BWAに入っているDVWAではこの部分がコメントアウトされていました。
  • DVWAが間違ってインターネット上にアップロードされてしまった時の為にrobots.txtが配置されており、全てのUser-Agentを拒否する設定になっています。
  • 脆弱性のあるページには、関連情報のための外部リンクがありますが、このリンクをクリックしてリンク先のサーバにリファラが送られないように、これらのリンクはHTTPヘッダから機密情報を消してくれるサードパーティ(信用できるところだそうです→ BlankRefer - create an anonymous link)のプロキシを通すようになっています。

使い方の例(いろいろな使い方があります)

  • セキュリティレベルをLowにして、自分でいくつかの検出パターンを試してみる。
  • [View Source]ボタンをクリックして、ソースコードを見て脆弱なコーディングを学ぶ。
  • [View Source]ボタンをクリック -> [Compare]ボタンをクリックして、脆弱性対策されたソースコード(High)と脆弱なソースコード(Medium, Low)を比較して学ぶ。

注意点

  • セキュリティレベルはクッキーに保存されます。
  • セキュリティレベル Highのソースコードは脆弱性がないという前提ですが、完全に信用してはいけないと思います。

リンク

[最終更新日: 2014年3月7日]