
WordPress Elementor 3.6.0 3.6.1 3.6.2 RCE POC
Google Dork: 无
日期: 2022年4月16日
漏洞作者: AkuCyberSec (https://github.com/AkuCyberSec)
厂商主页: https://elementor.com/
软件链接: https://wordpress.org/plugins/elementor/advanced/ (向下滚动以选择版本)
版本: 3.6.0, 3.6.1, 3.62
测试环境: WordPress 5.9.3 (操作系统无关,因为此漏洞不提供载荷)
CVE: CVE-2022-1329
WordPress 插件 Elementor(版本 3.6.0、3.6.1、3.6.2)存在一个漏洞,允许任何经过身份验证的用户上传并执行任意 PHP 文件。
该漏洞在 OWASP TOP 10 2021 中位列第一(失效的访问控制)。
包含此漏洞的文件是 elementor/core/app/modules/onboarding/module.php
在该文件末尾,你可以找到以下代码:
add_action( 'admin_init', function() {
if ( wp_doing_ajax() &&
isset( $_POST['action'] ) &&
isset( $_POST['_nonce'] ) &&
wp_verify_nonce( $_POST['_nonce'], Ajax::NONCE_KEY )
) {
$this->maybe_handle_ajax();
}
} );
该代码在任何用户账户访问 /wp-admin 时都会被触发。
为了利用此漏洞,我们需要满足以下 4 个条件:
wp_doing_ajax()),且请求方法必须为 POST。为此,我们只需调用 /wp-admin/admin-ajax.phpaction 必须为 "elementor_upload_and_install_pro"(检查同一文件中的 maybe_handle_ajax() 函数)_nonce 需在登录后通过检查 /wp-admin 页面获取(此漏洞在 DoLogin 函数中完成该操作)fileToUpload 必须包含我们要上传的 ZIP 压缩包(检查同一文件中的 upload_and_install_pro() 函数)我们上传的文件必须具有以下结构:
"elementor-pro" 的文件夹"elementor-pro.php" 的文件该文件将是你的载荷(例如 PHP 反向 Shell 或任何其他内容)
警告:我们上传的伪造插件会被 Elementor 激活,这意味着每次我们访问任何页面时都会触发我们的载荷。
如果该载荷尝试连接离线主机,可能会导致拒绝服务。
为了防止这种情况,我建议你使用某个变量来激活载荷。
类似这样(访问 anypage.php?activate=1 以继续执行实际载荷):
if (!isset($_GET['activate']))
return;