CVE 2019-6340
当Drupal 8核心RESTful API服务模块被启用时,允许用户向服务器发送GET、PATCH或POST请求。
(即使PATCH方法被禁用,GET请求也足以触发代码执行漏洞。)
如果站点启用了其他Web服务模块,如Drupal 8中的JSON-API或Drupal 7中的REST服务,也受影响。
POC 要求
DOCKER.IO
DRUPAL 8.6.9
SQL 5.7
docker run -d --name mysqldb -e MYSQL_ROOT_PASSWORD=password mysql:5.7
docker run -d --name drupal --link mysqldb -p 8090:80 -e MY_SQL_USER:root -e MY_SQL_PASSWORD:password drupal:8.6.9
exp 运行命令
python3 exp.py http://Ip_of_drupal_container:port_assigned(if)// "command_to_execuite"
示例: python3 exp.py http://127.0.0.1:8090/ "hostname -I"
EXP 分析
Guzzle是一个PHP HTTP客户端,可以简化发送HTTP请求并方便集成Web服务。它被用作利用工具向基于Drupal的网站发送恶意请求。如果分析exploit代码(exp.py)中的guzzle脚本,可以发现一个"command"字符串被替换为我们在运行时传递的命令(例如 hostname -I)。

当我们运行exp命令时,首先会查找现有节点,因此我们必须在我们网站上创建一些节点。基本上,你需要在网站上添加一些内容。

它不会重复访问同一个节点。假设你添加了5个节点,那么运行exploit 5次后,你需要更新你的节点。只需前往内容并对节点应用任何操作。
请求和响应

