wordpress插件WP Fastest Cache存在多个漏洞

wordpress插件WP Fastest Cache存在多个漏洞

在 WP Fastest Cache 插件的内部审计期间,我们发现了一个 Authenticated SQL Injection漏洞和一个通过跨站请求伪造(CSRF) 问题的存储型 XSS(跨站脚本)。

如果被利用,SQL 注入漏洞可能允许攻击者访问受影响站点数据库中的特权信息(例如,用户名和hash密码)。只有在网站上安装并激活了经典编辑器插件时才能利用它。 

wordpress插件WP Fastest Cache存在多个漏洞

成功利用 CSRF 和存储型 XSS 漏洞可以使不良行为者执行他们所针对的登录管理员允许在目标站点上执行的任何操作。

我们通过电子邮件向该插件的作者报告了这些漏洞,他们最近发布了 0.9.5 版本来解决这些漏洞。我们强烈建议您更新到最新版本的插件,并在您的站点上建立一个既定的安全解决方案,例如Jetpack Security

细节

插件名称:WP Fastest Cache
插件 URI: https ://wordpress.org/plugins/wp-fastest-cache/
作者: https://www.wpfastestcache.com/

漏洞

经过身份验证的 SQL 注入

受影响的版本: < 0.9.5
CVE-ID: CVE-2021-24869
CVSSv3.1: 7.7
CWSS: 73.6

public static function set_urls_with_terms(){
        global $wpdb;
        $terms = $wpdb->get_results("SELECT * FROM `".$wpdb->prefix."term_relationships` WHERE `object_id`=".static::$id, ARRAY_A);
 
        foreach ($terms as $term_key => $term_val){
                static::set_term_urls($term_val["term_taxonomy_id"]);
        }
}

set_urls_with_terms方法直接将static::$id连接到 SQL 查询,这是一个问题,因为任何登录用户都可以通过SinglePreloadWPFC::set_id()方法在该属性中存储任意值。此方法在admin_notices运行 WordPress 操作时执行。

public static function set_id(){
        if(isset($_GET["post"]) && $_GET["post"]){
                static::$id = esc_sql($_GET["post"]);
 
                if(get_post_status(static::$id) != "publish"){
                        static::$id = 0;
                }
        }
}

尽管set_id使用get_post_status()函数检查提供的 ID 是否指向有效的已发布帖子,但这不足以验证它包含该 ID。

get_post_status() 函数 最终在内部使用get_post(),它在查询数据库以查找相关帖子之前将接收到的 ID 转换为整数。

简单地说,如果提供的 ID 为1234 OR 1=1,get_post_status ()将检索 ID 为 的帖子的状态1234,但1234 OR 1=1将连接到 SinglePreloadWPFC::set_urls_with_terms() 中存在漏洞的 SQL 查询。

通过CSRF存储的XSS

受影响的版本: < 0.9.5
CVE-ID: CVE-2021-24870
CVSSv3.1: 9.6
CWSS: 74.7

wp_ajax_wpfc_save_cdn_integrationAJAX 操作使用 CdnWPFC::save_cdn_integration() 方法来设置特定于 CDN 的选项。虽然它确实执行了诸如 current_user_can() 之类的权限检查以确保允许发送该请求的人更改这些设置,但它并没有验证他们的意图,这就是nonce 检查所做的。

此外,我们发现攻击者可能会滥用其中一些选项在受影响的网站上存储流氓 Javascript。

时间线

作者最初不愿意承认 CSRF 问题,但在获得 WordPress 插件团队的第二意见后,他们在 0.9.5 版本中修复了它。

2021-09-28 – 与 WP Fastest Cache 的初步接触
2021-09-29 – 我们向他们发送了有关这些漏洞的详细信息
2021-10-01 – 我们与他们分享了一个视频概念证明,以证明 CSRF 构成的风险
2021-10- 01 – 我们联系 WordPress 插件团队寻求帮助
2021-10-11 – WP Fastest Cache 0.9.5 发布

结论

我们建议您检查您的站点使用的是哪个版本的WP Fastest Cache插件,如果低于0.9.5,请尽快更新! 

Leave a Reply

您的电子邮箱地址不会被公开。 必填项已用 * 标注