Dockerを使って脆弱性の検証環境を作れば簡単に再利用できるし、イメージを配布してみんなで共有できれば個々人で検証環境立ててたのを誰かが作れば皆で検証できて良いんじゃないかなーと思ってDockerで検証環境を作成するのに挑戦してみました。

とは言いつつやっぱり似たようなことを既に先人たちが考えていて、同じようなことをやっている人がいました。

Dockerを使って、Apache Struts2の脆弱性S2-037のやられ環境を手軽に作る

Docker Hubを覗いてみるといい感じに既にできているものがあったので今回は他の人が公開しているイメージを使って検証環境を立てたいと思います。

Windows上のHyper-VでDockerを動かして検証しようとしたのですが、docker-machineがうまく動いてくれなかったのでHyper-V上の192.168.30.99のIPでCnetOS7を立てて、その上でDockerを動かして検証しました。

1
2
3
[uranari@localhost ~]$ docker pull onedriver/s2-045

[uranari@localhost ~]$ docker run -d -p 8080:8080 --name s2-045 onedriver/s2-045

これで192.168.30.99:8080でStrutsの脆弱性S2-045の脆弱性を含むアプリケーションが動作します。

あとはFiddlerでリクエストを書き換えて脆弱性を検証してみました。

今回は/etc/passwdの中身を表示させるリクエストを送信しています。

今回は既に公開されているイメージを使用して検証環境を作成してみましたが、自分で検証用のイメージを作成して公開する記事も近々書きたいと思います。