Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Drupal SA-CORE-2019-003 远程命令执行分析

Drupal SA-CORE-2019-003 远程命令执行分析

作者头像
云鼎实验室
修改于 2019-05-17 06:59:05
修改于 2019-05-17 06:59:05
7720
举报

0. 漏洞背景

2 月 20 日 Drupal 官方披露了一个 Drupal 的远程命令执行漏洞:

https://www.drupal.org/sa-core-2019-003

漏洞的触发条件为开启了 RESTful Web Services,且允许 POST / PATCH 请求。

根据 Drupal 的配置,此漏洞可能不需要任何权限即可触发,但普适性不高。一旦该漏洞被利用,攻击者则可以直接在 Web 服务器上执行任意 PHP 代码,造成服务器被入侵、用户信息泄露等后果。

腾讯云不受该漏洞影响,此漏洞爆发后,腾讯云安全团队第一时间进行跟踪分析,且对云上客户进行预警通知。

1. 漏洞定位

漏洞通告指出了 Drupal 8 在开启了 RESTful Web Services 模块,同时允许了 PATCH / POST 方法请求后,可以造成代码执行漏洞。

根据 commit log [注1] 可以定位到漏洞的触发原因在于反序列化的操作:

可以推测应该是在进行 REST API 操作的过程中,options 参数的内容带入到 unserialize 函数导致的。通过 diff 可以发现 LinkItem.php 和 MapItem.php 都受到影响,这里从 LinkItem 来向上挖掘漏洞点。

查看

core\modules\link\src\Plugin\Field\FieldType\LinkItem.php:

梳理了其整个调用链,从 REST 请求开始,先通过用户传入的 JSON 的 _links.type 获取了其对应的 Entity,再获取 Entity 内的 Fields 列表,遍历这个列表得到 key,从用户传入的 JSON 内取出 key,拼接成为 field_item:key 的形式(过程略),最终在 getDefinition 内查找了 definitions 数组内的字段定义,得到一个对应的 Field 的实例对象,过程大体如下:

接着 FieldNormalizer 的 denormalize 方法调用了 Field 的 setValue 方法。

也就是说,我们如果可以将 $field_item 控制为 LinkItem 或者 MapItem,即可触发反序列化。

2. 触发点构造

我们在 Drupal 后台配置好 RESTful Web Service 插件,选择一个可以进行 POST 的操作。

为了尽可能模拟网站管理员的配置,我们这里允许对于 /user/register 的 POST 操作。

于情于理,用户注册处必然可以作为匿名用户来进行操作。开启 /user/register :

设置允许匿名用户利用 POST 来访问 /user/register 。

上文中提到,我们需要一个 Entity 内存在 LinkItem Field。通过对 Entity 的查找,定位到 MenuLinkContent 和 Shortcut 使用了 LinkItem,利用 Shortcut 来进行进一步的测试。

Shortcut 的 _links.type 为:

http://127.0.0.1/rest/type/shortcut/default 。

向 /user/register 发送 POST 请求,同时在 PHPStorm 内将断点下在

core\modules\hal\src\Normalizer\FieldItemNormalizer.php 的 denormalize 函数:

可以发现,在调用 setValue 方法的现场,$field_item 为 LinkItem。跟入 setValue 方法(图 2),根据逻辑,如果 $values 为一个数组。且 $values['options'] 存在,那么就执行反序列化操作。我们修改 payload 为即可触发反序列化。

验证视频:

攻击者利用此反序列化可以在服务器上执行任意代码,利用此漏洞在服务器上弹出计算器的视频如下:

3. 安全建议

修复方案如下:

1. Drupal 8.6.x 版本升级到 8.6.10 版本

2. Drupal 8.5.x 或更早期版本版本升级到 8.5.11 版本

3. Drupal 7 暂无更新

缓解措施如下:

1. 禁用 RESTful Web Services 模块

2. 配置服务器不允许 POST/PATCH 请求

注1:

https://github.com/drupal/core/commit/24b3fae89eab2b3951f17f80a02e19d9a24750f5

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-02-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云鼎实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
编辑精选文章
换一批
2024年护网行动全国各地面试题汇总(3)作者:————LJS
盛透侧视攻城狮
2025/06/15
1180
CVE-2019-6340 Drupal8's REST RCE 漏洞复现
Drupal官方之前更新了一个非常关键的安全补丁,修复了因为接受的反序列化数据过滤不够严格,在开启REST的Web服务拓展模块的情况下,可能导致PHP代码执行的严重安全。
墙角睡大觉
2019/09/24
2.5K0
CVE-2019-6340 Drupal8's REST RCE 漏洞复现
CVE-2019-6340 Drupal REST RCE漏洞复现
Drupal 是使用 PHP 语言编写的开源内容管理框架,Drupal 综合了强大并可自由配置的功能,能支持各种不同应用的网站项目。其 Drupal 社区是全球大的开源社区之一, 在社区的维护下,Drupal 的代码在安全性、健壮性上具有世界较高水平。
Y5neKO
2022/01/13
2.5K0
CVE-2019-6340 Drupal REST RCE漏洞复现
CVE-2019-6340 Drupal8's REST RCE 漏洞复现
Drupal官方之前更新了一个非常关键的安全补丁,修复了因为接受的反序列化数据过滤不够严格,在开启REST的Web服务拓展模块的情况下,可能导致PHP代码执行的严重安全。
用户1631416
2019/08/09
3.5K0
【漏洞通告】Drupal远程代码执行漏洞(CVE-2020-28948/CVE-2020-28949)
近日,绿盟科技监测到 Drupal 官方发布安全公告修复了 Drupal 远程代码执行漏洞(CVE-2020-28948)与(CVE-2020-28949),请相关用户采取措施进行防护。
绿盟科技安全情报
2020/12/14
1.6K0
Drupal 1-click to RCE 分析
2019年4月11日,zdi博客公开了一篇A SERIES OF UNFORTUNATE IMAGES: DRUPAL 1-CLICK TO RCE EXPLOIT CHAIN DETAILED(https://www.zerodayinitiative.com/blog/2019/4/11/a-series-of-unfortunate-images-drupal-1-click-to-rce-exploit-chain-detailed).
Seebug漏洞平台
2019/05/07
1.1K0
Drupal 1-click to RCE 分析
K8s源码分析(19)-client go组件之RESTClient
上一篇文章里,我们主要介绍了 kubernetes 中资源 API 的注册过程,包括核心资源组和非核心资源组,以及中间是如何利用 go-restful 这个 web 框架来映射成标准的 restful API。在后面的文章里我们主要介绍 client go 这个组件,该组件主要是会负责和 kubernetes API server 进行通讯,完成对各种资源的增删改查,list and watch 等系列操作。例如负责资源调度的 kube-scheduler 组件,负责资源管理的 controller manager 组件,负责 pod 生命周期管理的 kublet 组件,负责网络管理的 kube-proxy 组件,它们与 API server 的通讯完全依赖于 client go 这个组件,所以该组件是基础中的基础。本篇文章我们主要该组件中的 RESTClient。
TA码字
2022/05/30
9070
K8s源码分析(19)-client go组件之RESTClient
看我如何利用Drupal漏洞并通过恶意图片实现一键RCE
近期,Drupal发布了两个针对7.x和8.x版本的关键漏洞修复补丁。攻击者可以利用这两个漏洞来实现远程代码执行,但他们首先要将恶意图片上传至远程服务器,并通过一系列伪造链接来欺骗已认证的网站管理员来帮助他们实现代码执行。虽然这种方式比较“曲折”,但这也已经足够了。
FB客服
2019/06/13
1.4K0
Apache Struts2 Remote Code Execution (S2-052)
根据官方漏洞描述,Struts2 REST插件在使用XStreamHandler反序列化XStream实例的时候没有对类进行任何限制,导致将xml数据转换成Object时产生远程代码执行漏洞(RCE)。同时,官方的解决方案是将Struts2的版本升级至2.5.13 或 2.3.34,那么先对比一下官方的版本升级代码,发现struts-2.5-2.13\src\plugins\rest\src\main\java\org\apache\struts2\rest\handler\XStreamHandler.java对类进行了一些白名单处理。
风流
2019/12/11
1.1K0
Apache Struts2 Remote Code Execution (S2-052)
挖洞经验 | 看我如何综合利用4个漏洞实现GitHub Enterprise 远程代码执行
大家好,距离上次漏洞披露已有半年之余,在这篇文章中,我将向大家展示如何通过4个漏洞完美实现GitHub Enterprise的RCE执行,该RCE实现方法与服务器端请求伪造技术(SSRF)相关,技术稍显过时但综合利用威力强大。最终,该RCE漏洞被GitHub官方认定为3周年众测项目的最佳漏洞,我也因此获得了$12500美元赏金。 在我今年受邀参加的BlackHat大会演讲PPT中,有更多关于SSRF技术的深度剖析,请大家捧场观看《A New Era of SSRF - Exploiting URL Pa
FB客服
2018/02/28
1.8K0
挖洞经验 | 看我如何综合利用4个漏洞实现GitHub Enterprise 远程代码执行
搭建一个Drupal Core RCE(CVE-2019–6340 )漏洞的蜜罐
不久前,我开始了一个管理真实网络蜜罐的项目。最初我建立它是为了管理一些WordPress蜜罐,但在Drupalgeddon2出来后,使我不得不重新构建该项目。这意味着我需要相当长的一段时间才能最终发布它。现在,我终于能够分享我的努力成果了:https://gitlab.com/SecurityBender/webhoneypot-framework。
FB客服
2019/06/18
1.2K0
typecho前台getshell漏洞分析
Typecho1是一个简单,轻巧的博客程序。基于PHP,使用多种数据库(Mysql,PostgreSQL,SQLite)储存数据。在GPL Version 2许可证下发行,是一个开源的程序2,目前使用SVN来做版本管理。
LoRexxar
2023/02/21
6030
typecho前台getshell漏洞分析
RESTful源码学习笔记之RPC和Restful深入理解
RPC 即远程过程调用(Remote Procedure Call Protocol,简称RPC),像调用本地服务(方法)一样调用服务器的服务(方法)。通常的实现有 XML-RPC , JSON-RPC , 通信方式基本相同, 所不同的只是传输数据的格式.
Jetpropelledsnake21
2018/08/23
7530
APACHE OFBIZ XMLRPC远程代码执行漏洞分析
近期,研究人员报告了一个存在于Apache OFBiz中的反序列化漏洞。这个漏洞是由多个Java反序列化问题所导致的,当代码在处理发送至/webtools/control/xmlrpc的请求时,便有可能触发该漏洞。未经认证的远程攻击者将能够通过发送精心构造的恶意请求来触发并利用该漏洞,并实现任意代码执行。
FB客服
2020/10/27
1.2K0
CTFshow刷题日记-WEB-反序列化(web254-278)PHP反序列化漏洞、pop链构造、PHP框架反序列化漏洞、python反序列化漏洞
只要 get 传参反序列化后的字符串有 ctfshow_i_love_36D 就可以
全栈程序员站长
2022/09/14
2.1K0
CTFshow刷题日记-WEB-反序列化(web254-278)PHP反序列化漏洞、pop链构造、PHP框架反序列化漏洞、python反序列化漏洞
Jenkins 未授权远程代码执行漏洞(CVE-2017-1000353)
漏洞概要 Jenkins 未授权远程代码执行漏洞, 允许攻击者将序列化的Java SignedObject对象传输给Jenkins CLI处理,反序列化ObjectInputStream作为Command对象,这将绕过基于黑名单的保护机制, 导致代码执行。 漏洞触发执行流程 SSD的报告披露了完整的漏洞细节,作为才学JAVA的我来说,看完这份报告,依旧不清楚具体的执行流程,因此有了下文,梳理漏洞触发的具体执行流程。 触发jenkins反序列化导致代码执行的漏洞发生在使用HTTP协议实现双向通信通道的代码中
Seebug漏洞平台
2018/03/30
1.6K0
drupal安装教程mysql_drupal简单安装和插件安装
1.从官网下载drupal安装包:https://www.drupal.org/download
全栈程序员站长
2022/09/09
2.1K0
drupal安装教程mysql_drupal简单安装和插件安装
WebLogic CVE-2019-2647~2650 XXE漏洞分析
Oracle发布了4月份的补丁,详情见链接(https://www.oracle.com/technetwork/security-advisory/cpuapr2019-5072813.html#AppendixFMW)
Seebug漏洞平台
2019/05/13
1.1K0
WebLogic CVE-2019-2647~2650 XXE漏洞分析
跟着官方文档学Python——Django Rest framework
这周将会持续更新跟着官方文档学Python系列文章,主要是围绕web框架以及其他后端组件的官方文档展开学习。日拱一卒,让我们开始吧!
才浅Coding攻略
2022/12/12
2.7K0
跟着官方文档学Python——Django Rest framework
如何在 ASP.NET Core 中使用Refit
Refit是一个库,它通过在C#中生成类型安全、强类型的HTTP客户端接口,简化了对REST API的调用。它允许开发人员在无需编写显式的HTTP请求处理代码的情况下创建API客户端代码,从而减少了样板代码并提高了可维护性。
郑子铭
2025/01/10
3170
如何在 ASP.NET Core 中使用Refit
推荐阅读
相关推荐
2024年护网行动全国各地面试题汇总(3)作者:————LJS
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档