OWASP Juice Shopを触ってみた!

OWASP Connect始まりました。

久々にブログを投稿しますー。
先日、OWASP Connectという勉強会を開催いたしました。
OWASP Connect in Tokyo - connpass

この勉強会はOWASP Projectの活用事例や小ネタなどを共有していこうという目的で開催しています。OWASP ProjectをPRしていこうという有志メンバーにて立ち上げており、私もその一人です。現在の所、三か月に1度くらいの周期で開催できたら良いかなーと考えています。良くQiitaなどでもOWASP Project関連の投稿をされている方などをちらほらお見かけするので、よろしければ次回LTとかいかがでしょうか?使ってみたネタなど大歓迎ですw
Search result of “owasp” - Qiita

そもそもOWASPとは何ぞやという方は上野さんのこちらのスライドをどうぞ。
speakerdeck.com

今回私もちょっとした小ネタを発表させていただきました!こちらがスライドとなります。

www.slideshare.net

こちらのスライドに記載している「やられサイト」とは、予め脆弱性が作りこまれたサイトのことで、セキュリティの教育、ツールなどの検証、脆弱性のデモなどに良く用いられたりするものです。今回は最近ちらほら良い評判を聞いていたけど、恥ずかしながらまだ触ったことがなかったOWASP ProjectのやられサイトであるOWASP Juice Shopを取り上げてみました。また、その他の有名処のやられサイトについてもリンクを記載しておりますので、よろしければご覧ください。

OWASP Juice Shop Projectについて

折角なので、今回はスライドでもとりあげたOWASP Juice Shopについてブログを書こうと思います。以下はOWASP Juice Shop ProjectのWebページとGitHubページのリンクです。
OWASP Juice Shop Project - OWASP
GitHub - bkimminich/juice-shop: OWASP Juice Shop is an intentionally insecure webapp for security trainings written entirely in Javascript which encompasses the entire OWASP Top Ten and other severe security flaws.

OWASP Juice Shopは、OWASP Top 10を中心としたWebアプリケーションの脆弱性が埋め込まれたサイトであり、課題を解きながらWebアプリケーションの脆弱性を学ぶことができます。

f:id:tigerszk:20180925145403j:plain OWASP Juice ShopのTOPページ f:id:tigerszk:20180925145453j:plain 課題が表示されているスコアボード

特筆すべきなのは、Node.js、Express、AngularJSで開発されている所であり、今風のモダンなWebアプリケーションのやられサイトとなっています。ホント今風のSPAなので、BurpやOWASP ZAPSpiderのような自動クローラーとは逆に相性が悪そうだなと思ったりしてます。使ったことないですが、OWASP ZAPのAjax Spiderとかならクローリングできたりするんですかね?BurpのSpiderも2.0でパワーアップしたようなので、クロールできるのか今度検証してみたいところです。また、7月のOWASP Nightでも発表がありましたが、有志の方が日本語訳をされているので、サイトメニューなども日本語対応されています。

立ち上げも非常に簡単で、LT時にデモしましたが、Herokuのアカウントを持っていれば、デプロイ後に速攻サイトが立ちあがるので非常に楽ちんです。ただ試すだけだったらこれが一番楽なのでおススメです。なお、Herokuで立ち上がっているデモ用ページも公開されています(脆弱性を試すのであれば、ご自分で作成ください!)。
https://juice-shop.herokuapp.com/#/search

自分のローカルにサイトを立てたい方は、dockerイメージも配布されていますので、そちらを利用するのが良いかと思います。以下を実行すれば、コンテナが起動します。

docker pull bkimminich/juice-shop
docker run --rm -p 3000:3000 bkimminich/juice-shop

そしてなんといっても、以下のようなしっかりとしたドキュメントが公開されているのが素晴らしいです。課題の進め方や解説なども載っています。
Pwning OWASP Juice Shop · GitBook (Legacy)

まず最初のステップは、課題のリストが載っているスコアボードを探すのが良いと思います。スコアボードのアクセス方法も課題の一つなので、ここに具体的なアクセスの方法については書きませんが、分からない方はHTMLソースなどを見てみると良いかもしれません。かく言う私も私もまだ、全ての課題には挑戦していないので、今度時間を作ってトライしてみようかなと思っています。

また、課題を解くことでFlagを表示させることができるCTFモードなる機能も存在しているようです。以下のようなCTF用の拡張ツールが公開されており、こちらを利用するとスコアサーバー(CTFd,FBCTFに対応)へインポートするデータの作成や共通のFlagデータが出力されるOWASP Juice Shopを簡単に立ち上げることができるようです。
juice-shop-ctf-cli - npm

上記ページのスクリーンショットがCTFdだったので、私はFBCTFのフレームワークで試してみました。作成したデータをインポートすればOWASP Juice Shopの問題が登録されています。 f:id:tigerszk:20180925145841j:plain

結構お手軽そうなので、やったことない人達限定で、小規模なCTFイベントとかやっても良さそうですねw

ということで、今回、OWASP Juice Shopを紹介してみました。 Webアプリケーションの脆弱性を体験してみたい方などにはおすすめかと思いますので一度試してみてはいかがでしょうか?