【レビュー】

攻守で学ぶWebセキュリティ実践チュートリアル「Jarlsberg」

    富田宏昭  [2010/05/28]

    情報流出、踏み台、システム改竄……これらの事が起きてからでは、もう遅い。Webデベロッパはどんなアプリケーションを作成するときでも、つねに最新の注意を払う必要がある。だが経験の浅いデベロッパはなかなか「何が悪いのか」がピンとこないため、危険なコードを書いてしまいがちだ。心配な方は、今回紹介する「Jarlsberg」で攻守ひととおりの学習をしてみよう。

    Jarlsberg - Web Application Exploits and Defensesとは

    Google Online Security Blogは5月4日(米国時間)、Web Application Exploits and Defensesを公開した。冒頭のWant to beat the hackers at their own game?によると、このサイトは次の3点を学習する目的で設置されているとのことだ。

    • 攻撃者がどのようにセキュリティ脆弱性を見つけ出すか
    • 攻撃者がどのようにWebアプリケーションを攻撃するか
    • 開発者がこれらの攻撃を防ぐには何をすれば良いか

    物事を学習するには実際にやってみるのが一番(The best way to learn things is by doing)。このコードラボではさまざまな脆弱性の存在するWebアプリケーション「Jarlsberg」をもちいて、脆弱性の種類/攻撃の方法/守り方をチュートリアル形式で実践する。これらからユーザは

    • クロスサイトスクリプティング(XSS)、クロスサイトリクエストフォージェリ(XSRF)といった一般的なWebセキュリティの脆弱性を突くことで、どのようにWebアプリケーションを攻撃するか
    • 上記の脆弱性に加え、DoS攻撃/情報漏洩/リモートコード実行の恐れがあるバグを見つけ、修正する方法

    を学習することが可能だ。

    Hello, Jarlsberg! - Jarlsbergの使い方

    Jarlsbergで学習・実践できるWebセキュリティの脆弱性は次のとおり(Table of Contentsより抜粋)。

    Cross-Site Scripting (XSS) XSS Challenges / File Upload XSS / Reflected XSS / Stored XSS / Stored XSS via HTML Attribute / Stored XSS via AJAX / Reflected XSS via AJAX / More about XSS
    Client-State Manipulation Elevation of Privilege / Cookie Manipulation
    Cross-Site Request Forgery (XSRF) XSRF Challenge / More about preventing XSRF
    Cross Site Script Inclusion (XSSI) XSSI Challenge
    Path Traversal Information disclosure via path traversal / Data tampering via path traversal
    Denial of Service DoS - Quit the Server / DoS - Overloading the Server / More on Denial of Service
    Code Execution Code Execution Challenge / More on Remote Code Execution
    Configuration Vulnerabilities Information disclosure #1 / Information disclosure #2 / Information disclosure #3
    AJAX vulnerabilities DoS via AJAX / Phishing via AJAX
    Other Vulnerabilities Buffer Overflow and Integer Overflow / SQL Injection

    Jarlsbergのスタートページにアクセスすると、自分専用のWebアプリケーションが作成される。

    http://jarlsberg.appspot.com/(ユニークなID)/
    

    Jarlsbergのホーム画面。背景が同名のチーズのようになっている

    Python 2.5が利用できる場合は、http://jarlsberg.appspot.com/jarlsberg-code.zipから成果物一式をダウンロードして使用することも可能だ。

       % unzip jarlsberg-code.zip
       % ./jarlsberg.py
    

    この場合、アクセスするURIは次のようになる。

    http://localhost:8008/(ユニークなID)/
    

    Jarlsbergの利用準備ができたらアカウントを作成し、用意されているリファレンスをもとに攻撃・防御の手法を実践していく。アカウントを作成する際は実際に利用しているサービスのパスワードを使わないように注意すること

    チュートリアルを実践してぐちゃぐちゃになってしまったWebアプリケーションは、リセットページにアクセスすることで初期状態に戻すことが可能だ。

    http://jarlsberg.appspot.com/resetbutton/(ユニークなID)
    

    ぐちゃぐちゃにしてしまっても、リセットページから初期化できるようになっている

    リファレンスにはただ単純に攻撃/防御の方法だけではなく、各種脆弱性の概要、「なぜこれらの攻撃が成立するのか」「なぜこのコードで防ぐことができるのか」といった説明と、より詳細を知るための外部サイトへのリンクが網羅されている。JarlsbergはPythonで実装されており、サーバプログラム側の修正例はPythonで記述されているが、原理がわかれば他言語でも応用が効く。

    Web Application Exploits and Defenses/Jarlsbergはあくまでも学習用に公開されたサイトだ。権限がないシステムへのアクセスや攻撃は違法行為となる。ここで得た知識は、脆弱なアプリケーションを実装しない、そして未然に危険性を見つけるために活用すること。決して悪用してはいけない。また、ぜひ自分がいままでに書いてきたコードを見直して修正するところまでを実践したいところだ。

    関連記事

    関連サイト

    関連したタグ

    新着記事

    特設サイトの情報

      人気記事

      一覧

        イチオシ記事

        新着記事

        特別企画

        マイナビニュースマガジン