超过 600,000 个站点受 WP Statistics Patch 影响

超过 600,000 个站点受 WP Statistics Patch 影响

2021 年 3 月 13 日,Wordfence 威胁情报团队对 WP Statistics 中的一个漏洞发起了负责任的披露,该插件安装在超过 600,000 个 WordPress 网站上。

该漏洞允许任何站点访问者通过基于时间的 SQL 盲注从站点数据库中提取敏感信息。

我们在 2021 年 3 月 13 日的同一天收到了对我们最初披露的回复,并将完整的披露发送给了 VeronaLabs 的插件开发人员。此漏洞的补丁已于 2021 年 3 月 25 日发布。

虽然我们的原始报告指出攻击者需要经过身份验证才能利用此漏洞,但我们后来发现未经身份验证的攻击者也可以利用它。

幸运的是,所有运行 Wordfence 的站点,包括那些使用 Wordfence Premium 和免费版本的站点,都通过 Wordfence 防火墙的内置 SQL 注入保护来抵御此漏洞。即使漏洞未知,此内置保护功能也会阻止大多数 SQL 注入尝试。


WP Statistics 是一个 WordPress 插件,允许站点所有者查看有关其站点访问者的详细统计信息,包括他们访问了站点上的哪些页面。作为管理员,访问 WP Statistics“页面”菜单项会生成一个 SQL 查询,以显示有关哪些页面获得最多流量的统计信息。

虽然“页面”页面仅供管理员使用,不会向非管理员用户显示信息,但可以通过使用“页面”向“wp-admin/admin.php”发送请求来开始加载此页面的构造函数参数设置为wps_pages_page。由于 SQL 查询在“页面”页面的构造函数中运行,这意味着任何站点访问者,即使是那些没有登录的访问者,都可能导致此 SQL 查询运行。然后,恶意行为者可以为“ID”或“类型”参数提供恶意值。

class pages_page
{

    public function __construct()
    {
        global $wpdb;

        if (Menus::in_page('pages')) {

            // Disable Screen Option
            add_filter('screen_options_show_screen', '__return_false');

            // Check Exist Statistics For Custom Page
            if (self::is_custom_page()) {
                $page_count = $wpdb->get_var("SELECT COUNT(*) FROM " . DB::table('pages') . " WHERE `id` = " . esc_sql($_GET['ID']) . " AND `type` = '" . esc_sql($_GET['type']) . "'");
                if ($page_count < 1) {
                    wp_die(__('Your request is not valid.', 'wp-statistics'));
                }
            }

            // Is Validate Date Request
            $DateRequest = Admin_Template::isValidDateRequest();
            if (!$DateRequest['status']) {
                wp_die($DateRequest['message']);
            }
        }
    }

    public static function is_custom_page()
    {
        return (isset($_GET['ID']) and isset($_GET['type']));
    }

不幸的是,虽然这个 SQL 查询使用 esc_sql 来尝试转义 IDtype 输入参数,但它没有使用准备好的语句。由于ID 输入参数没有被引用,绕过esc_sql 函数并生成可用于从站点提取敏感信息的查询是微不足道的。

由于这是一个基于时间的 SQL 盲注漏洞,信息泄露的过程相对较慢,使用它来提取批量记录是不切实际的,但是用户电子邮件、密码哈希和加密密钥等高价值信息在 sqlmap 等自动化工具的帮助下,可以在几个小时内提取盐。在有针对性的攻击中,此漏洞可用于从包含客户信息的商业站点中提取个人身份信息。这强调了在存储敏感数据的地方设置端点防火墙的安全保护的重要性。

我们最近报告了另一个 SQL 注入漏洞,我们可以在该漏洞中绕过许多保护措施,这又是一个示例,说明为什么仅转义输入不足以防止 SQL 注入。防止SQL注入唯一可靠的方法是在执行之前准备所有SQL语句,这可以使用$wpdb->prepare()来执行。虽然仍然有可能构造使用准备好的语句的易受攻击的查询,但无意中这样做是非常困难的。

结论

在今天的帖子中,我们讨论了 WP Statistics 插件中的一个基于时间的 SQL 盲注漏洞,该漏洞可用于从安装了该插件的任何网站中提取敏感数据。我们还介绍了为什么清理和转义输入不足以防止 SQL 注入攻击。

所有 Wordfence 用户,包括 Wordfence Premium 客户以及仍在使用免费版本的用户,都通过我们防火墙的内置 SQL 注入保护来抵御此漏洞。

如果您的站点上安装了此插件,我们敦促您尽快更新到补丁版本 13.0.8。如果您的朋友或同事在他们的网站上使用此插件,我们建议将此公告转发给他们,以帮助保护他们的网站,因为此漏洞允许攻击者访问存储在网站数据库中的机密数据。

声明:本站带有” 原 “字文章,均为本站作者原创发布。原创文章任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站作者内容侵犯了原著者的合法权益,可联系我们进行处理。

文章来源 wordfence https://www.wordfence.com/blog/2021/05/over-600000-sites-impacted-by-wp-statistics-patch/

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务

  • 软件商用保障
    正版采购,正规版权
  • 终身SVIP
    一次购买,终身受益
  • 海量资源
    教程、主题、插件一应俱全
  • 高效学习
    多位资深大佬,坐台解答
  • 信用保证
    数百万站长和用户的选择