[翻译]未公开的Drupalgeddon2漏洞(CVE-2018-7600)
摘要
两周前,Drupal系统安全团队发现了一个极为严重(NIST机构评分为25/25)的漏洞,它的俗称是“Drupalgeddon 2”(编号为SA-CORE-2018-002/CVE-2018-7600)。一个未经认证的攻击者可以通过该漏洞在默认或通用Drupal系统安全环境下进行远程代码执行。
Drupal系统是一个开源的内容管理系统(Content Management System,CMS),全世界有超过一百万个网站(包括政府、电子零售、企业组织、金融机构等等)使用该系统,而所有这些站点在进行补丁修复之前都容易受到该漏洞的影响。
到目前为止,该漏洞的细节还没有公开,然而Check Point Research团队现在将详细描述该漏洞,并准确揭示它是如何生效的。
简单来说,Drupal系统没有对表单API(Form API,FAPI)接口的AJAX请求输入进行充分的检查。结果。这就使得攻击者能够偷偷地向内部表单结构中注入一个恶意的载荷。这将导致Drupal系统在未进行用户认证的情况下执行这个载荷。通过攻击利用这个漏洞,一个攻击者能够接管任何Drupal系统用户的整个站点。
该漏洞存在于从版本6到版本8的所有Drupal系统中,而对那些对自己站点进行手动升级的用户而言,相当于已经进行了补丁修复。在本文中,我们将针对一个Drupal系统旗舰产品(Drupal 8)的现成安装,展示真实的攻击场景。
技术细节
漏洞
首先介绍一些背景知识:Drupal系统的表单API接口是在Drupal 6首次引入的,这些接口使得用户能够在表单渲染过程中改变表单数据。这彻底改变了对标记进行处理的方式。
Drupal 7将表单API接口扩展为现在所谓的“渲染数组”。经过扩展的API接口被用于代表Drupal系统中的大部分UI元素结构,比如页面、区块、节点等等。
渲染数组包含了在渲染过程中使用的元数据。这些渲染数组是一个键-值结构,在该结构中属性键的开头是一个散列符号(#)。以下是一个示例:
[ ‘#type’ => ‘markup’, ‘#markup’ => ‘<em>some text</em>’, ‘#prefix’ => ‘<div>’, ‘#suffix’ => ‘</div>’ ]
注意:上传附件及图片大小不得大于30M。
⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途。
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。
