OWASPが提供するWebアプリケーション診断のトレーニング環境
- OWASP Juice Shop -
本記事では、OWASP Juice Shopの概要や特徴からインストール手順、日本語化、効率的に学習するポイントまで網羅的に解説!
初学者でも迷わずに始められるように、DockerおよびKali Linux環境へのインストール手順をステップ形式で解説しています。
OWASP Juice Shopとは
OWASP Juice Shopは、〝OWASP〟が公式に提供する学習用の脆弱なWebアプリケーションです。
OWASP - Open Worldwide Application Security Project とは、Webをはじめとするソフトウェアのセキュリティ環境の現状、またセキュアなソフトウェア開発を促進する技術・プロセスに関する情報共有と普及啓発を目的としたプロフェッショナルの集まる、オープンソース・ソフトウェアコミュニティです。
OWASP Japan公式サイト(https://owasp.org/www-chapter-japan/)
実在するECサイトのようなUI/UXを持ちながら、OWASP Top 10をはじめとする多様な脆弱性が意図的に実装されています。そのため、脆弱性診断やペネトレーションテストのトレーニング環境として、世界中のセキュリティエンジニアに利用されています。
特に同アプリケーションは、現実世界で想定されるサイバー攻撃を安全に模擬できる設計となっており、SQLインジェクションやXSS、認証機能の不備といった代表的な脆弱性を網羅的に学習できる点が大きな特徴です。
OWASP Juice Shopのような意図的に脆弱性を組み込んだトレーニング環境のことを、やられアプリ(別名:やられサーバー、やられサイト)と呼びます。やられアプリには、Juice Shopの他、Damn Vulnerable Web Application(DVWA)、WebGoat、Metasploitable2、OWASP BWAなどがあります。
ご利用にあたっての注意事項
OWASP Juice Shopは、学習目的で作られた脆弱なアプリケーションであるため、以下の点に十分ご注意ください。
ローカル環境または隔離された環境で使用すること
Juice Shopには意図的に多数の脆弱性が含まれているため、社内ネットワークや本番環境と同一ネットワークで稼働させることは推奨されません。必ず、Dockerなどのコンテナ環境や検証専用の仮想マシンなど、隔離された環境で実行して下さい。
実際の業務環境や第三者システムには絶対に適用しないこと
Juice Shopを使って学んだ技術を、第三者のシステムに無断で適用することは、不正アクセス禁止法などの法令に抵触する恐れがあります。関係する法令を遵守し、社会的倫理を踏まえた適切なご利用をお願いいたします。
OWASP Juice Shopの特徴
- 学習用に設計されたWebアプリケーション
- インストールが簡単
- 最新のWeb技術で構築
- 実際のECサイト風のUI/UX
- ゲーム感覚で学べる
- オープンソース・無料
学習用に設計されたWebアプリケーション
OWASP Juice Shopは、セキュリティの学習目的で意図的に脆弱性を実装したWebアプリケーションです。実際のWebサイトでは許されない脆弱性が多数内包し、実践的な脆弱性診断スキルやペネトレーションテスト技術の習得に最適な教材となっています。
公式ドキュメントによると、110種類の脆弱性チャレンジ(※)が収録されており、Webアプリケーションの脆弱性を網羅しています。※2025年11月21日時点
インストールが簡単
DockerイメージやNode.jsアプリケーションとして提供されているため、環境構築が非常に容易です。Dockerの場合は、数コマンドで起動可能なため、学習環境として迅速にセットアップできます。
最新のWeb技術で構築
フロントエンドにAngular、バックエンドにNode.jsおよびExpressを採用しており、現行のWebアプリケーション設計に近い構造を持ちます。これにより、実務で遭遇するモダンな技術スタック特有の脆弱性を理解するのに役立ちます。
実際のECサイト風のUI/UX
Juice ShopはECサイト風のUIを備えており、ショッピングカート、商品検索、ユーザーレビューなどの典型的な機能が実装されています。これにより、ECサイトや業務系Webサービスで頻出する脆弱性(認可不備、パラメータ改ざん、入力値検証欠如など)の診断を、リアリティのあるシナリオで演習できます。
ゲーム感覚で学べる
学習要素にゲーミフィケーションを取り入れており、課題解決時にポイントが付与される仕組みになっています。進捗はスコアボードで視覚的に確認でき、達成したチャレンジはステータスとして記録されます。
オープンソース・無料
OWASPが提供するオープンソースプロジェクトで、すべての機能を無料で利用できます。ライセンスはMIT Licenseで、商用利用も含め制限が少なく、企業内研修での利用にも適しています。
GitHub上で活発にメンテナンスが行われており、最新の脅威動向に合わせて継続的に改善されています。
最新バージョンは、2025年11月16日リリースのv19.1.1です。(2025年11月21日現在)
OWASP Juice Shopのインストール
本記事では、
- UbuntuのDocker環境にインストール
- Kali Linuxの公式リポジトリからインストール
の2パターンで、OWASP Juice Shopのインストール手順を解説します。
UbuntuのDocker環境にインストール
OWASP Juice Shopは、Dockerイメージを公式に提供しており、手軽に環境構築ができます。
本セクションでは、UbuntuにDockerが導入されている前提で、Juice Shopをインストールする手順を解説します。まだDockerを導入していない場合は、「Ubuntu 24.04にDockerをインストールする」をご覧ください。
本記事では、dockerコマンド実行時にsudoを付与していますが、ユーザーをdockerグループに所属させることで、sudoを使用せずに dockerコマンドを実行できるようになります。詳細は下記をご覧ください。
DockerイメージをDocker Hubからダウンロード
$ sudo docker pull bkimminich/juice-shopbkimminich/juice-shop:Juice Shopの公式Dockerイメージ
まず、Juice ShopのDockerイメージをDocker Hubから取得します。
Juice Shopのコンテナを起動
$ sudo docker run --rm -p 3000:3000 bkimminich/juice-shop--rm:コンテナ停止時、そのコンテナを自動削除する-p 3000:3000:ホストOSのポート3000をコンテナのポート3000に割り当てる
Node.jsベースのアプリケーションが起動し、ターミナルにServer listening on port 3000などのメッセージが表示されます。
Juice Shopにブラウザからアクセス

コンテナが起動したら、ブラウザでhttp://localhost:3000にアクセスします。
Juice Shopを停止
コンテナを起動したターミナルでCtrl + Cを押すと、Juice Shopは停止します。--rmオプションを指定してコンテナを起動しているため、コンテナの停止と同時に当該コンテナは自動的に削除されます。
Kali Linux公式リポジトリからインストール
前述のUbuntuでは、Docker環境にOWASP Juice Shopを導入したので、Kali Linuxでは公式リポジトリからインストールしてみます。OWASP Juice Shopは、Kali Linuxの公式リポジトリに含まれているため、追加のリポジトリ設定なしで導入できます。
Kali Linux の公式リポジトリで提供されている OWASP Juice Shop のバージョンは、2024年4月22日に公開されたv16.0.1です。一方で、2025年11月16日には最新版となる v19.1.1 がリリースされています。(2025年11月21日時点)
最新バージョンを利用する場合は、Docker環境を構築し、OWASP Juice Shopの公式GitHubリポジトリから導入することを推奨します。
各バージョンのリリース内容は、公式GitHubのリリースページから確認できます。
パッケージ情報を更新
$ sudo apt updateまず最初に、APTパッケージマネージャを使用して、パッケージ情報を最新の状態に更新します。
パッケージ情報を確認
$ apt info juice-shop
Package: juice-shop
Version: 16.0.1-0kali6
Priority: optional
Section: misc
Maintainer: Kali Developers <devel@kali.org>
Installed-Size: 1,262 MB
Depends: adduser, lsof, npm, xdg-utils, libc6 (>= 2.34), libgcc-s1 (>= 3.0), libstdc++6 (>= 5.2), libnode115
Homepage: https://github.com/juice-shop/juice-shop
Download-Size: 212 MB
APT-Sources: http://http.kali.org/kali kali-rolling/main amd64 Packages
Description: insecure web application
This package contains a modern and sophisticated insecure web application! It
can be used in security trainings, awareness demos, CTFs and as a guinea pig
for security tools! Juice Shop encompasses vulnerabilities from the entire
OWASP Top Ten along with many other security flaws found in real-world
applications!
.
WARNING: Do not upload it to your hosting provider's public html folder or any
Internet facing servers, as they will be compromised.公式リポジトリで管理しているJuice Shopのパッケージ情報を確認します。
Juice Shopをインストール
$ sudo apt install juice-shopパッケージ情報に問題がなければ、インストールを実行します。(Node.jsを含む依存パッケージも併せて自動的にインストールされます。)
インストール後の確認
# インストール状況
$ apt list --installed | grep juice-shop
juice-shop/kali-rolling,now 16.0.1-0kali6 amd64 [インストール済み]
# サービスの状態
$ systemctl status juice-shop.service
○ juice-shop.service - juice-shop web application
Loaded: loaded (/usr/lib/systemd/system/juice-shop.service; disabled; preset: disabled)
Active: inactive (dead)
# 起動スクリプトのパス
$ which juice-shop
/usr/bin/juice-shop
# 停止スクリプトのパス
$ which juice-shop-stop
/usr/bin/juice-shop-stopインストール状況、サービスの状態、起動・停止スクリプトのパスを確認します。(インストールした時点では、サービスは起動していません。)
Juice Shopを起動
$ sudo juice-shop
[*] Please wait for the Juice-shop service to start.
[*]
[*] You might need to refresh your browser once it opens.
[*]
[*] Web UI: http://127.0.0.1:42000
● juice-shop.service - juice-shop web application
Loaded: loaded (/usr/lib/systemd/system/juice-shop.service; disabled; preset: disabled)
Active: active (running) since Thu 2025-11-20 20:23:11 JST; 5s ago
Invocation: 41bd49a948484a7094584ebc7442f2cc
Main PID: 24804 (npm start)
Tasks: 23 (limit: 9287)
Memory: 166.6M (peak: 174.7M)
CPU: 4.606s
CGroup: /system.slice/juice-shop.service
├─24804 "npm start"
├─24832 sh -c "node build/app"
└─24833 node build/app
11月 20 20:23:15 kali npm[24833]: info: Required file server.js is present (OK)
11月 20 20:23:15 kali npm[24833]: info: Required file index.html is present (OK)
11月 20 20:23:15 kali npm[24833]: info: Required file styles.css is present (OK)
11月 20 20:23:15 kali npm[24833]: info: Required file main.js is present (OK)
11月 20 20:23:15 kali npm[24833]: info: Required file runtime.js is present (OK)
11月 20 20:23:15 kali npm[24833]: info: Required file polyfills.js is present (OK)
11月 20 20:23:15 kali npm[24833]: info: Required file vendor.js is present (OK)
11月 20 20:23:15 kali npm[24833]: info: Port 42000 is available (OK)
11月 20 20:23:15 kali npm[24833]: info: Domain https://www.alchemy.com/ is reachable (OK)
11月 20 20:23:15 kali npm[24833]: info: Chatbot training data botDefaultTrainingData.json validated (OK)
[*] Opening Web UI (http://127.0.0.1:42000) in: 5... 4... 3... 2... 1...起動スクリプトjuice-shopを実行すると、Juice Shopのサービスが起動します。デフォルトではポート42000で待ち受けます。
サービスの起動に成功すると、デフォルトブラウザが自動的に立ち上がり、http://127.0.0.1:42000/#/が表示されます。

Juice Shopを停止
$ sudo juice-shop-stop
○ juice-shop.service - juice-shop web application
Loaded: loaded (/usr/lib/systemd/system/juice-shop.service; disabled; preset: disabled)
Active: inactive (dead)
11月 20 20:23:15 kali npm[24833]: info: Required file polyfills.js is present (OK)
11月 20 20:23:15 kali npm[24833]: info: Required file vendor.js is present (OK)
11月 20 20:23:15 kali npm[24833]: info: Port 42000 is available (OK)
11月 20 20:23:15 kali npm[24833]: info: Domain https://www.alchemy.com/ is reachable (OK)
11月 20 20:23:15 kali npm[24833]: info: Chatbot training data botDefaultTrainingData.json validated (OK)
11月 20 20:23:19 kali npm[24833]: info: Server listening on port 42000
11月 20 20:27:34 kali systemd[1]: Stopping juice-shop.service - juice-shop web application...
11月 20 20:27:34 kali systemd[1]: juice-shop.service: Deactivated successfully.
11月 20 20:27:34 kali systemd[1]: Stopped juice-shop.service - juice-shop web application.
11月 20 20:27:34 kali systemd[1]: juice-shop.service: Consumed 9.895s CPU time, 174.7M memory peak.停止スクリプトjuice-shop-stopを実行します。
言語設定を日本語に変更する
OWASP Juice Shopは、デフォルトでは英語UIとなっていますが、日本語UIにも対応しています。
地球儀アイコンをクリック

まず、Juice Shopの画面右上に表示されている地球儀アイコンをクリックします。
日本語を選択

表示された言語一覧の中から日本語を選択します。
「Force page reload」をクリック

言語を選択すると、Force page reloadというリンクが表示されます。これをクリックすることで、ページが再読み込みされ、日本語UIに切り替わります。

OWASP Juice Shopにチャレンジ
OWASP Juice Shopにおける最初のチャレンジの1つが、「スコアボード(Score Board)」の発見です。スコアボードには、全チャレンジが一覧化されており、難易度別・カテゴリ別に現在の進捗状況を把握できます。

しかし、初期状態ではスコアボードのアクセス方法(リンクやURL)は明示されておらず、ユーザー自身が手がかりを探し出す必要があります。
実務的な観点では、「隠された管理画面を探索する」「UIに存在しない機能を推測する」という行為は、ペネトレーションテストにおいて頻繁に求められる能力です。スコアボード探しは、その基礎的トレーニングとして設計されています。
この記事では、スコアボードの開き方は割愛します。ぜひご自身でチャレンジしてみてください。
ローカル環境で動作しているため、失敗を気にせず何度でもチャレンジできます。OWASP Juice Shopは、そのためのトレーニング環境です。
もし行き詰まった場合には、
- 「Juice Shop walkthrough スコアボード」
- 「Juice Shop writeup スコアボード」
- 「Juice Shop walkthrough Score Board」
- 「Juice Shop writeup Score Board」
といったキーワードでGoogle検索してみて下さい。世界中のユーザーがインターネット上に攻略法を公開しています。攻略法は1つと限らないため、複数のアプローチを検証することで、より実践的なスキル向上が期待できます。
