話題の記事

OWASPが公開している”セキュアではない”Webアプリ「OWASP Juice Shop」を試してみる

2017.08.25

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

森永です。

セキュリティ製品の検証などで脆弱性のあるWebアプリが欲しいということがあります。自分で作るのもいいのですが、手軽に使える"セキュアではない"Webアプリがないかを探してみました。Webアプリのセキュリティに関するコミュニティであるOWASP(Open Web Application Security Project)が「OWASP Juice Shop」という脆弱性のあるWebアプリを公開していたので試してみます。

OWASP Juice Shopとは

OWASP(Open Web Application Security Project)が公開しているWebアプリです。OWASPはインパクトのある脆弱性をOWASP Top 10として発表しており、その脆弱性をふんだんに盛り込んだものとなっています。これを使ってセキュリティの検証をしたり、ハードニングのトレーニングをすることが出来るというわけです。

Screenshot 2017-08-24 16.51.48

いくつものチャレンジが用意されており、それを一つずつクリアすることで知識を深めていくこともできます。チャレンジはあくまでもブラックボックスになっているWebアプリに対する攻撃で行うため、バックエンドのソースコードを見たり、ログを見るのはNG行為です。あくまでも、ブラウザや開発者ツールなど表から叩ける箇所を叩いて攻撃を仕掛けましょう。

試してみる

セットアップ

様々なセットアップ方法が案内されています。DockerコンテナをEC2で動かす方法があるのでこちらでやってみます。(ECSでもいいんですがtoo muchな気がするので…)

やることは、Amazon LinuxでEC2インスタンスを構築する際にUser Dataを仕込むだけです。

#!/bin/bash
yum update -y
yum install -y docker
service docker start
docker pull bkimminich/juice-shop
docker run -d -p 80:3000 bkimminich/juice-shop

あとはセキュリティグループでHTTP(80)番ポートを開けておいて下さい。怖いのでソースIPは絞っておきました。

EC2_Management_Console 3

インスタンスが起動したのでアクセスしてみます。

ジュースを売るECサイトが立ち上がりました!(あくまでデモです。)日本語にも対応しています。

screencapture-13-113-131-160-1503626153574 2

攻撃してみる

せっかくなので幾つか簡単な攻撃を仕掛けてみましょう。
攻撃を仕掛けるにはサイトの特性を理解する必要がありますので、一般ユーザとして(非攻撃者として)使用してみてから挑みましょう。

詳しい攻撃方法はネタバレになるので控えています。

XSS(クロスサイトスクリプティング)

まずはXSS(クロスサイトスクリプティング)から。XSSといっても物凄く難しいのですが、今回は非常に初歩的なXSSで試してみます。これはやり方すぐに分かっちゃいますね。

OWASP_Juice_Shop

SQLインジェクション

検索フォームで色々いじってみます。
ひとまず';などを打って開発者ツールのコンソールを見てみると、SQL文がそのまま見えちゃいました…

OWASP_Juice_Shop 2

あとはSQL文を見ながらゴニョゴニョすると既に販売を終わったアイテムなどが見れるようになっちゃいます。

スコアボード

チャレンジの一つでもあるので詳しい場所は言えませんが、スコアボードと言うものが用意されています。クリアしたチャレンジは解決済みと表示されます。ゲーム好きとしてはたまらないですね。

OWASP_Juice_Shop 3

最後に

色々いじってみたところ、実際に使用されているWebアプリでこんな脆弱性があったら笑えないなぁ…というものが数多く。。。一度攻撃者の立場になってみることで分かる対策方法がありますのでぜひ一度試してみて下さい。
このWebアプリにWAFを被せてXSSやSQLインジェクションを防げるか検証することもできそうですね(あくまでもアプリ側で対応するのが前提ですよ!