LoginSignup
4
2

【AWS+Docker】OWASP Benchmarkの環境構築

Last updated at Posted at 2022-03-25

SaaS型Webアプリ診断ツール「AeyeScan」を運営している株式会社エーアイセキュリティラボが、セキュリティテストの自動化、脆弱性診断の内製化、AI/機械学習などの技術情報の共有を目的とした記事です。
AeyeScanの情報はこちら https://www.aeyescan.jp
エーアイセキュリティラボの情報はこちら、https://www.aeyesec.jp

2022-155641.png

こんにちは。株式会社エーアイセキュリティラボ カスタマーサクセス担当 日髙です。
今回は、OWASPから提供されている「OWASP Benchmark」というアプリケーションの構築方法と構築時の注意点をご紹介します。

環境

この記事では、AWS環境(linux)のDockerに環境を構築します。
Amazon linuxのバージョン:Amazon Linux release 2 (Karoo)
dockerのバージョン:20.10.7
OWASP Benchmarkのバージョン:v1.2

OWASP Benchmarkとは

OWASP Benchmarkは、OWASPというWebアプリケーションセキュリティに関するコミュニティ団体から提供されているWebアプリケーションです。
この「OWASP Benchmark」には、たくさんの脆弱性が埋め込まれており、その名の通り、弊社で開発しているような脆弱性診断ツールのベンチマークなどの用途として利用されています。

詳しくはこちら https://owasp.org/www-project-benchmark/

今回の記事では、環境構築時につまづいた点なども含めて、ご紹介していきます。

構築手順

インスタンスの作成

まずは、インスタンスの作成です。
基本的には、デフォルトの設定で作成しますが以下の点に注意してください。

インスタンスのAMI

Linux環境に構築を行うためOWASPインスタンスのAMIは、以下を選択します。
image.png

インスタンスタイプ

インスタンスタイプの選択では、以下の「m4.large」を選択します。
image.png

インスタンスタイプで無料枠の「m2.micro」を選択した場合、後ほどの手順で失敗しました。必ずしも「m4.large」を選択しなければならないわけではありませんが、同等のスペックを選択することお勧めします。

セキュリティルール(インバウンドルール)の変更

デフォルトのSSHの22番ポートに加えてOWASP Benchmark用のポートである8443番ポートに対して外部からアクセス可能となるよう設定します。
image.png

インスタンスへログイン

SSHにて、インスタンスに接続します。

image.png

GitとDockerのインストール

以下のコマンドを実行します。

$ sudo yum install git
$ sudo yum install -y docker

Dockerの起動

以下のコマンドを実行します。

$ sudo service docker start

OWASP benchmarkのクローン

githubのリポジトリからベンチマークのソースをクローンします。

$ git clone https://github.com/OWASP-Benchmark/BenchmarkJava

Dcokerイメージの作成

OWASP benchmarkでは、以下のリポジトリ内の「VMs」フォルダに
最新のBenchmarkプロジェクトをビルドするするためのDockerファイルやシェルが用意されています。

以下のコマンドでビルド用のシェルを実行します。

$ cd BenchmarkJava/VMs
$ sudo ./buildDockerImage.sh

作成したDockerイメージを確認するため以下のコマンドを実行します。

$ sudo docker images

benchmarkというイメージが作成されているのがわかります。
image.png

通常の手順ですと、このまま同ディレクトリ内の「runDockerImage.sh」を実行して、OWASP benchmarkを起動しますが、「runDockerImage.sh」で起動した場合、一部の脆弱性で一度攻撃が成功すると以降再現しなくなるという事象が発生しました。そのため、以降の手順の通り、OWASP Benchmarkの起動をroot以外のユーザで起動するようにします。

benchmarkイメージからコンテナを起動してコンテナに入る

以下のコマンドを実行します。

$ sudo docker run -t -i -p 8443:8443 --rm benchmark /bin/bash

/owasp/BenchmarkJava配下のtargetフォルダをリネーム

ビルド時に作成される「target」フォルダが存在していると別ユーザで起動した際に、
起動に失敗するのであらかじめリネームしておきます。

以下のコマンドを実行します。

$ cd /owasp/BenchmarkJava
$ mv ./target ./target_bk

ユーザを切り替える

owasp benchmarkには、元々「bench」というroot以外のユーザが存在しているため、
benchユーザに切り替えます。

以下のコマンドを実行します。

$ su bench

起動シェルを実行する

benchユーザで起動シェルを実行します。

以下のコマンドを実行します。

$ ./runRemoteAccessibleBenchmark.sh

シェルを実行後、以下が表示されればOWASP Benchmarkが起動しています。

image.png

OWASP Benchmarkへ接続

ブラウザから以下へアクセスします。

https://[AWS_IP]:8443/benchmark/

image.png

コンテナからデタッチする

以上の手順で、OWASP Benchmarkが起動することを確認できました。
ただし、コマンドプロンプトをそのまま閉じてしまうと起動しているdockerコンテナも停止してしまいます。ツールなどで長時間スキャンを実行する場合は、起動したままにしておく必要があります。

そのため、コマンドプロンプトを閉じる前に以下のコマンドを実行することでコンテナからデタッチすることが可能です。

$ [control-P] [control-Q]

おわりに

今回は、「OWASP Benchmark」の構築方法をご紹介しました。
「OWASP Benchmark」は、脆弱性ツールの検証以外にも、脆弱性の仕組みを理解するコンテンツとしても利用できますので、ぜひご活用いただければ幸いです。

参考文献

OWASP Benchmark Project
https://owasp.org/www-project-benchmark/
よく使うDockerコマンド
https://qiita.com/tera_shin/items/8a43e904bd15990d3129
Dockerコンテナからのデタッチ
https://tech.withsin.net/2015/09/30/docker-container-detach/

AeyeScanのトライアル、脆弱性診断の自動化のご相談はこちら
2022-155641.png

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2