黑客利用Drupal SA-CORE-2019-003 远程命令执行分析

0. 漏洞背景2 月 20 日 Drupal 官方披露了一个 Drupal 的远程命令执行漏洞:https://www.drupal.org/sa-core-2019-003漏洞的触发条件为开启了 R…

4.系统漏洞背景图 2月30日Drupal宣布公布了Drupal远程命令实行系统漏洞: https://www.drupal.org/sa-core-2019年-003 根据开启RESTful Web服务项目并容许POST/PATCH恳求来开启此系统漏洞。 依据Drupal的配备,能够在没有管理权限的状况下开启此系统漏洞,但这并不是通用性的。如果系统漏洞被运用,网络攻击就能够立即在Web网络服务器上实行随意PHP编码,可能会导致网络服务器遭受伤害而且客户信息遭受威协。 腾讯云服务器没受此系统漏洞的危害。

此系统漏洞暴发后,腾讯云服务器安全性精英团队初次开展了追踪剖析,并通告云顾客。

系统漏洞部位 系统漏洞通告强调,当开启RESTful Web服务项目控制模块并容许PATCH/POST方式恳求时,Drupal 8可致代码执行系统漏洞。 依据 递交系统日志[注1] 能够开启反序列化实际操作开启的系统漏洞: 能够推断,在REST API实际操作期内,options主要参数的內容应当被送到unserialize涵数。您可以看LinkItem.php和MapItem.php都受diff危害,您能够从LinkItem中钻取系统漏洞点。

查询 coremoduleslinksrcPluginFieldFieldTypeLinkItem.php: 在整理全部启用链以后,从REST恳求刚开始,最先根据客户传送的JSON的_links.type获得相对的Entity,随后获得Entity中的Fields目录,遍历目录以获得密匙,并根据来源于客户。 JSON删除键,拼凑为field_item:键的方式(省去该全过程),最终在getDefinition的definitions数组中寻找字段名界定,并获得相对的Field案例另一半

全过程给出:

随后FieldNormalizer的denormalize方式启用Field的setValue方式。

就是,假如人们能够将$ field_item操纵到LinkItem或MapItem,人们就能够开启反序列化。 2.开启点结构 人们在Drupal背景图中配备了RESTful Web Service软件并挑选了POST实际操作。 以便尽量仿真模拟系统管理员的配备,人们容许在/user/register上开展POST实际操作。 在有效的状况下,客户注册表务必可以以qq群匿名客户真实身份运作。对外开放/客户/申请注册:

该设定容许qq群匿名客户应用POST浏览/客户/申请注册。

如上所述,人们必须LinkItem字段名中的实体线运行内存。根据搜索实体线,LinkLink用以导行到MenuLinkContent和Shortcut,桌面快捷方式用以深化检测。 桌面快捷方式的_links.type是: http://127.0.0.1/rest/type/shortcut/default。 应用PHPStorm中的断点向/user/register上传POST恳求 coremoduleshalsrcNormalizerFieldItemNormalizer.php denormalize涵数:

您可以看在启用setValue方式的站名上,$ field_item是1个LinkItem。假如$ values是1个数组,请遵照setValue方式(图2),实际在于逻辑性。假如$ values ['options']存有,则实行反序列化实际操作。人们能够改动合理负荷以开启反序列化。

认证视頻: 网络攻击能够应用此反序列化在网络服务器上实行随意编码。应用此系统漏洞,科学计算器的视頻会在网络服务器上弹出来,

给出如图:https://v.qq.com/x/page/s1359k6ev2q.html 3.安全性提议 维修方案给出: 1. Drupal 8.6.x版本更新到版本号8.6.10 2. Drupal 8.5.x或较早版本更新到8.5.11版 3. Drupal 7都还没升级 减轻对策给出: 1. 停用RESTful Web服务项目控制模块 2. 配备网络服务器不容许POST/PATCH恳求 注1: https://github.com/drupal/core/commit/28b3fae89eab2b3951f17f80a02e19d9a24750f5