一、漏洞概述
1、简介
Drupal 是使用 PHP 语言编写的开源内容管理框架[1],Drupal 综合了强大并可自由配置的功能,能支持各种不同应用的网站项目。其 Drupal 社区是全球大的开源社区之一, 在社区的维护下,Drupal 的代码在安全性、健壮性上具有世界较高水平。
2019/02/20,Drupal 安全团队披露了一个安全漏洞(CVE-2019-6340 /SA-CORE-2019-003)[2],如果网站开启了 RESTful Web Services(默认不开启)并允许
POST/PATCH 请求,在进行 REST API 操作的过程中,会将未经安全过滤的参数内容带入unserialize 函数而触发反序列化漏洞,进而导致任意代码执行。
2019/02/22,Seebug 平台收录了这个漏洞[3],知道创宇 404 实验室漏洞情报团队开始漏洞应急,复现了这个漏洞。
2、影响版本
Drupal < 8.6.10
Drupal < 8.5.12
二、漏洞复现
1、复现环境
- Drupal6.5
2、环境搭建
Github 下载源码本地搭建[4]。
开启了 RESTful Web Services,且允许 POST / PATCH 请求。
为便于配置,安装 restui[5]插件。
开启以下几个扩展(默认不开启)。
选择一个路由,使其可以通过 RESTful API 来访问,配置如下:
设置允许匿名用户利用 POST 来访问该路由。
三、漏洞影响范围
通过 ZoomEye 网络空间探测引擎进行探测,以下为网络空间中装有 Drupal 的数量约为 465,349 台,其中美国安装数量多,约有 215,948 台[6]。
四、防护方案
1、升级到 Drupal 新版本(8.5.12 / 8.6.10) [7]
2、代码修复,在 lib/Drupal/Core/Field/Plugin/Field/FieldType/MapItem.php 和 modules/link/src/Plugin/Field/FieldType/LinkItem.php 中增加如下过滤:
3、使用第三方防火墙进行防护(如创宇盾[https://www.yunaq.com/cyd/])
4、技术业务咨询:
知道创宇技术业务咨询热线 :
400-060-9587(政府,国有企业)、028-68360638(互联网企业)
