CVE-2022-1329 WordPress 500万量级插件 Elementor 远程命令执行漏洞分析

声明

以下内容,来自且听安全公众号的QCyber作者原创,由于传播,利用此文所提供的信息而造成的任何直接或间接的后果和损失,均由使用者本人负责,长白山攻防实验室以及文章作者不承担任何责任。

漏洞信息

Elementor 是全球最受欢迎的 WordPress 插件之一,可以使得网站创建者能够使用只管的视觉构建器构建专业、像素完美的网站。插件累计安装数量达到 500w+ :

图片

近日 Wordfence 威胁情报团队发布了针对 WordPress Elementor 存在 RCE 漏洞的信息,编号 CVE-2022-1329 。CVSS Score 高达 9.9 。经过身份认证的用户(普通用户即可)可以上传任意 PHP 代码,从而 Getshell。

影响版本为:3.6.0 – 3.6.2 :

图片

环境搭建

安装Apache 、PHP和MySQL 数据库。选择安装WordPress v5.9.3版本:

图片

安装配置远程调试环境。

下载`elementor.3.6.2.zip`和`elementor-3.6.3.zip`。上传插件并激活:

图片

漏洞分析

Elementor从v3.6.0 版本开始,引入了`Onboarding`模块,主要用来优化 WordPress 应用程序的AJAX请求操作。

`\elementor\core\app\modules\onboarding\module.php`中定义了一个 `admin_init` 的 Hook,当任意构造一个`admin-ajax.php`请求(比如`/wp-admin/admin-ajax.php?action=test`)

程序都会进入`Onboarding`的处理逻辑,触发断点:

图片

从上面的判断可以得出,请求必须是 POST 类型,并且必须携带 WordPress 的 `_nonce` 参数(可以在 WordPress 认证时获取)并验证是否正确,然后进入 `maybe_handle_ajax` 函数:

图片

根据 action`参数的取值,选择不同的处理方式,重点关注

`elementor_upload_and_install_pro` ,进入 `upload_and_install_pro` 函数:

图片

读取上传的文件(参数名称为`fileToUpload`)并调用 WordPress 自带的插件安装函数`Plugin_Upgrader-#install` ,安装成果后,将调用`activate_plugin` 激活插件:

图片

这里指向的插件路径为 `WP_PLUGIN_DIR . ‘/elementor-pro/elementorpro.php’`。

回顾前面的分析,当 `action` 取值为 `elementor_upload_and_install_pro` 时,实际上完成的是 WordPress 正常的插件安装过程,这本身没有问题,但是从 `Onboarding` 处理 AJAX 请求的验证过程来看,只对 `_nonce` 进行了检查,并未对用户权限进行限制,这就意味着普通用户也可以安装插件,从而Getshell。

漏洞复现

从前面的分析可知,我们首先需要提取 `_nonce` ,在 WordPress 登录过程中就可以获取:

图片

手动构造一个插件安装包( ZIP 文件),从前面分析可知,压缩包中必须有一个 `elementor-pro` 文件夹,文件夹里面必须有一个 `elementor-pro.php` 文件,可以将 Webshell 植入其中,然后构造数据包上传:

图片

上传成功:

图片

图片

**修复方式
**

图片

增加了对当前用户权限的检查。

原文链接:

https://mp.weixin.qq.com/s/YtqSaDB8Ufn0w62W2BuZ_A

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值