千家信息网

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

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章给大家介绍Drupal SA-CORE远程命令的执行分析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、漏洞背景2月20日Drupal官方披露了一个Drupal的远程命
千家信息网最后更新 2026年11月02日Drupal SA-CORE远程命令的执行分析

这篇文章给大家介绍Drupal SA-CORE远程命令的执行分析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

一、漏洞背景

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

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

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

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

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

二、漏洞定位

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

根据commit log( https://github.com/drupal/core/commit/24b3fae89eab2b3951f17f80a02e19d9a24750f5 )可以定位到漏洞的触发原因在于反序列化的操作:

可以推测应该是在进行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,即可触发反序列化。

三、触发点构造

我们在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为即可触发反序列化。

验证视频:

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

四、安全建议

修复方案如下:

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请求。

关于Drupal SA-CORE远程命令的执行分析就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

漏洞 用户 序列 方法 服务器 版本 服务 配置 命令 分析 代码 内容 过程 定位 函数 同时 攻击者 数组 更多 模块 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广州为想互联网科技有限公司 互联网科技产业 科技互联网龙头 中国互联网科技股 互联网科技股票 西安互联网科技公司 深圳艾佳互联网科技 哈尔滨新华互联网科技 科技大学互联网专业好不好 华服互联网科技官网 南平创想时代互联网科技有限公司 互联网科技产业特征 玉溪互联网科技怎么选 互联网科技人工智能实验室 朱啸虎曾投资哪些互联网科技企业 中国互联网有什么科技 2021世界互联网领先科技成果发布 云鲸互联网络科技有限公司 杭州融税互联网科技有限公司 河南商务圈互联网科技有限公司 互联网科技工作委员会副主任毛军 互联网科技未来 互联网科技缩写 一五八零互联网科技 互联网养老 桔豆科技 以后互联网后是啥科技 互联网科技大奖都有哪些公司 国产互联网科技公司 互联网科技创业计划的风险分析 小牛互联网科技有限公司地址
0