
Drupal 7.x 和 8.x 的多个子系统中存在远程代码执行漏洞。攻击者可能利用该漏洞在 Drupal 站点上实施多种攻击向量,导致站点被入侵。此漏洞与 Drupal 核心有关——高危——远程代码执行——SA-CORE-2018-002。SA-CORE-2018-002 及本漏洞正被在野利用。 —— MITRE
由于 Docker for Mac 和 Windows 的一些网络限制(https://docs.docker.com/docker-for-mac/networking/#use-cases-and-workarounds),以下代码应在安装了 docker 和 docker-compose 的 Linux 机器上执行。
这里我们分为两步操作:首先搭建一个运行易受攻击版本 7.57 的 Drupal 机器,其次是攻击机器,它使用一个修改后的漏洞利用程序来展示该漏洞的潜在危险。
# 假设你已位于 CVE-2018-7602 目录下
cd vulnerable_machine
docker-compose up -d
cd ..
警告:运行命令前,请确保 80 端口未被其他软件占用。
攻击机器:这里我们将实例化一个 Metasploit Docker 镜像,其中包含一个自定义的漏洞利用程序(drupal_drupalgeddon3_commander),后续将使用它。执行:
cd attacking_machine
docker-compose run --rm --service-ports -e MSF_UID=$(id -u) -e MSF_GID=$(id -g) ms
如果执行上述命令时遇到问题,请将执行日志发送至 [email protected],他将很乐意帮助你解决问题。
现在 Drupal 已运行,我们需要配置并创建一些内容。请按以下步骤操作:


# Overview
We will try to use the vulnerability to execute commands like ls or whoami
to show that it is possible to execute commands remotely.
现在易受攻击的 Drupal 实例已在本地主机上运行。接下来开始在环境搭建步骤中创建的 Metasploit 实例中使用。
在 Metasploit 中,我们需要使用以下命令重新加载漏洞数据库:
reload_all
这样我们就有了所需的漏洞利用程序。为了准备漏洞利用所需的信息,我们需要从已登录站点的用户处获取会话 cookie。
轻松获取的方法:假设你仍处于登录状态。进入开发者工具,查看 cookie 存储并保存下来。最终应得到类似如下内容:
#<session_name>=<session_token>
SESS49960de5880e8c687434170f6476605b=DGHZKHWaNC51nrVQHEsTD0_PS68EeNyvGjdzk1SVmss
使用 Google Chrome 获取 cookie 的示例:

现在开始使用 Metasploit 加载漏洞利用程序。执行以下命令:
use exploits/unix/webapp/drupal_drupalgeddon3_commander
show options
如你所见,我们需要一些参数。 我们按如下方式设置参数:
set RHOSTS localhost
set DRUPAL_SESSION <session_name>=<session_token>
完成后执行:
exploit
我们将获得当前执行 Web 服务器的用户。在本例中是 www-data。因为默认命令设置为 whoami。此外你还会看到一些 JSON 格式的额外信息,这些信息对我们无关紧要。
最终漏洞利用结果如图所示:

实验结束:如果你成功完成了所有实验步骤,那么恭喜你,这就是终点。
如果你想继续实验,可以使用 set 指令更改命令值,或修改 Metasploit 使用的 Ruby 脚本。