2018年4月26日,Drupal官方发布新补丁和安全公告,修复了编号为CVE-2018-7602的远程代码执行漏洞,此漏洞源于3月28日的更新版中对编号为CVE-2018-7600的漏洞修复不完全,导致补丁被绕过,可以造成任意代码执行。
目前,已经发现针对CVE-2018-7602/CVE-2018-7600漏洞的在野利用,且部分利用代码已经公开。360-CERT对此漏洞进行了技术分析,建议使用Drupal开源内容管理系统的用户尽快进行更新。
影响版本
Drupal 7.x,8.x
修复版本
Drupal 7.59,Drupal 8.5.3,Drupal 8.4.8
修复补丁
注意:此补丁只针对CVE-2018-7602漏洞,针对CVE-2018-7600修复方式查看
CVE-2018-7600:Drupal核心远程代码执行漏洞预警。
对CVE-2018-7600漏洞的补丁通过过滤带有#
的输入来处理请求(GET,POST,COOKIE,REQUEST)中数据。
但是Drupal 应用还会处理path?destination=URL
形式的请求,发起请求需要对destination=URL
中的URL进行URL编码,当对URL中的#
进行编码两次,就可以绕过sanitize()
函数过滤。
构造特殊请求绕过过滤代码
POST /drupal-7.59/drupal-7.59/node/9/delete?destination=node?q[%2523][]=passthru%26q[%2523type]=markup%26q[%2523markup]=whoami
其中%2523
是对#
的两次URL编码。
WEB中间件对%2523
解码获得%23
绕过sanitize()
,stripDangrousValues
函数检查。
在Drupal应用对destination URL
进行处理时,会再次解码%23
,获得#
。
使用parse_str,并存入options,还需要通过其他步骤来触发漏洞。
增加对destination URL
安全处理
限定parse_str只对string参数做处理
并在可能触发漏洞的文件模块增加处理
2018-03-28 Drupal 官方发布针对CVE-2018-7600漏洞的补丁和安全公告
2018-03-29 360-CERT 发布CVE-2018-7600:Drupal核心远程代码执行漏洞预警
2018-04-13 360-CERT 发布CVE-2018-7600:漏洞分析报告
2018-04-26 Drupal 官方发布针对CVE-2018-7602漏洞的补丁和安全公告
2018-04-26 360-CERT 发布CVE-2018-7602:Drupal核心远程代码执行漏洞分析预警