ProfilePress 插件中修补的可轻松利用的关键漏洞

2021 年 5 月 27 日,Wordfence 威胁情报团队针对在ProfilePress(以前称为 WP 用户头像)中发现的几个漏洞启动了负责任的披露流程,这些漏洞是安装在 400,000 多个站点上的 WordPress 插件。这些缺陷使攻击者可以将任意文件上传到易受攻击的站点并在站点上注册为管理员,即使用户注册被禁用,所有这些都不需要任何事先身份验证。

我们最初于 2021 年 5 月 27 日联系了该插件的开发人员。在收到适当沟通渠道的确认后,我们在同一天提供了完整的披露细节。该插件的更新副本已于 2021 年 5 月 28 日发送给我们的团队,我们确认该副本提供了足够的保护。该补丁于 2021 年 5 月 30 日迅速发布为 3.1.4 版。

这些是已修补的关键且易于利用的安全问题,因此,如果您正在运行此插件的易受攻击版本 (3.0-3.1.3),我们强烈建议立即更新到可用的最新修补版本 3.1.8。

考虑到问题的严重性和安装基础的规模,我们等了 30 天才披露这些问题,以确保 Wordfence Premium 和免费用户免受任何攻击尝试。我们还有意尽量减少了提供的有关如何利用这些漏洞来延迟恶意威胁参与者的任何努力的详细信息。

说明:未经身份验证的权限提升

受影响的插件:用户注册、用户配置文件、登录和会员资格 – ProfilePress(以前称为 WP 用户头像)
插件 Slug: wp-user-avatar
受影响的版本: 3.0 – 3.1.3
CVE ID: CVE-2021-34621
CVSS得分: 9.8(关键)
CVSS 向量: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
研究员/s: Chloe Chamberland
完全修补版本: 3.1.4
ProfilePress,以前称为 WP User Avatar,是一个 WordPress 插件,最初设计为仅用于上传用户个人资料照片。然而,最近,该插件进行了颇有争议的改造。更新后的插件引入了用户登录和注册等新功能,同时保留了原始的个人资料照片上传功能,以创建一个强大的用户注册插件。不幸的是,新功能引入了几个安全问题。

发现的第一个问题允许用户提升他们的权限,这可能导致站点被接管。在用户注册期间,用户可以提供将在注册过程中更新的任意用户元数据。这包括wp_capabilities控制用户能力和角色的用户元数据。这使得用户可以wp_capabilties在注册时作为数组参数提供,这将授予他们提供的功能,允许他们将自己的角色设置为他们想要的任何角色,包括管理员。

       if (is_array($custom_usermeta)) {

            foreach ($custom_usermeta as $key => $value) {
                if ( ! empty($value)) {
                    update_user_meta($user_id, $key, $value);
                    // the 'edit_profile' parameter is used to distinguish it from same action hook in RegistrationAuth
                    do_action('ppress_after_custom_field_update', $key, $value, $user_id, 'registration');
                }
            }
        }

此外,没有检查来验证站点上是否启用了用户注册,因此即使在禁用用户注册的站点上,用户也可以注册为管理员。这意味着如果使用此插件的易受攻击版本,攻击者可以毫不费力地完全接管易受攻击的 WordPress 站点。

说明: Authenticated Privilege Escalation

Affected Plugin:用户注册、用户配置文件、登录和会员资格 – ProfilePress(以前的 WP 用户头像)
插件 Slug: wp-user-avatar
受影响的版本: 3.0 – 3.1.3
CVE ID: CVE-2021-34622
CVSS得分: 9.8(关键)
CVSS 向量: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
研究员/s: Chloe Chamberland
完全修补版本: 3.1.4

用户配置文件更新功能中也存在同样的缺陷。配置文件更新功能具有相同的功能,即采用在配置文件更新期间提交的键值对并更新数据库中用户的元数据。该wp_capabilities用户可元作为配置文件更新,这将允许攻击者升级他们的权限,管理员的过程中设置为管理员数组参数提供。

      if (is_array($custom_usermeta)) {

            $user_id = self::get_current_user_id();

            foreach ($custom_usermeta as $key => $value) {

                update_user_meta($user_id, $key, $value);

                // the 'edit_profile' parameter is used to distinguish it from same action hook in RegistrationAuth
                do_action('ppress_after_custom_field_update', $key, $value, $user_id, 'edit_profile');
            }
        }

这确实需要攻击者在易受攻击的站点上拥有一个帐户才能利用。但是,由于注册功能没有验证是否启用了用户注册,如果用户在注册过程中无法利用提权漏洞,则可以轻松注册并利用此漏洞。

说明: Image Uploader 组件中的任意文件上传

受影响的插件:用户注册、用户配置文件、登录和会员资格 – ProfilePress(原 WP 用户头像)
插件 Slug: wp-user-avatar
受影响的版本: 3.0 – 3.1.3
CVE ID: CVE- 2021-34623
CVSS 分数: 9.8(关键)
CVSS 向量: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
研究员/ s: Chloe Chamberland
全补丁版本: 3.1.4

除了提权漏洞之外,我们还发现任意文件(包括 PHP 文件)都可以上传到易受攻击的 WordPress 站点。将个人资料和封面图片上传到用户个人资料的能力是插件功能的核心部分。不幸的是,使用该exif_imagetype函数来确定文件类型时,此函数被不安全地实现。

             // verify the file is a GIF, JPEG, or PNG
            $fileType = exif_imagetype($image["tmp_name"]);

            $allowed_image_type = apply_filters('ppress_allowed_image_type', array(
                IMAGETYPE_GIF,
                IMAGETYPE_JPEG,
                IMAGETYPE_PNG
            ));

该函数exif_imagetype使用文件的前几个字节(称为魔术字节)来确定文件的类型,因此被认为是验证文件类型的不安全方法。通过将这些魔术字节添加到文件的开头,可以轻松地将任何文件伪装成有效的图像文件。这使得攻击者有可能上传欺骗性 PHP 文件,该文件将exif_imagetype在用户注册过程或配置文件更新过程中通过检查。

这可用于上传 webshell,使攻击者可以实现远程代码执行并在服务器上运行命令以实现完整的站点接管。由于用户即使在未启用用户注册的情况下也可以注册,因此任何攻击者都可以通过在注册请求期间上传个人资料图片或封面图片而无需身份验证来利用此漏洞。

说明:文件上传器组件中的任意文件上传

受影响的插件:用户注册、用户配置文件、登录和会员资格 – ProfilePress(原 WP 用户头像)
插件 Slug: wp-user-avatar
受影响的版本: 3.0-3.1.3
CVE ID: CVE- 2021-34624
CVSS 分数: 9.8(关键)
CVSS 向量: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
研究员/ s: Chloe Chamberland
全补丁版本: 3.1.4

除了之前的任意文件上传漏洞,我们发现另一个端点也存在任意文件上传漏洞。如果站点使用插件的“自定义字段”扩展名,则插件中似乎有在用户注册期间或在配置文件更新期间将文件上传到用户配置文件帐户的功能。

仅当站点管理员通过注册和配置文件更新页面上的自定义字段提供一组扩展名时,此功能才执行文件扩展名检查。这意味着如果站点管理员没有使用自定义字段为用户注册和个人资料页面配置文件上传,那么由于扩展字段为空,任何文件类型都将被允许。

这使得攻击者可以在用户注册过程或配置文件更新期间将任意文件上传到站点,只要管理员没有配置文件上传设置。同样,这可用于上传 webshell 并获取远程代码执行以接管站点。

披露时间表

2021年5 月 27 日– 插件分析的结论导致在 ProfilePress 插件中发现了多个漏洞。我们开发了防火墙规则来保护 Wordfence 客户并将其发布给 Wordfence Premium 用户。
UTC 时间 2021 年 5 月 27 日下午 6:27 – 我们开始与插件开发人员联系。
UTC 时间 2021 年 5 月 27 日下午 6:52 – 插件开发人员确认收件箱以处理讨论。
UTC 时间 2021 年 5 月 27 日晚上 9:23 – 我们发送了完整的披露细节。
UTC 时间 2021 年 5 月 27 日晚上 9:27 – 插件开发人员确认他们已收到详细信息并将开始修复。
UTC 时间 2021 年 5 月 28 日上午 7:16 – 插件开发人员向我们发送了建议补丁的副本。
UTC 时间 2021 年 5 月 28 日下午 12:48– 我们通知开发人员我们将审查补丁并在我们的分析完成后尽快回复他们。
UTC 时间 2021 年 5 月 28 日下午 3:44 – 我们确认补丁足够并通知开发者。
2021年5 月 30 日– 发布了包含补丁的插件的新更新版本。
2021年6 月 26 日- 免费 Wordfence 用户收到防火墙规则。

结论

在今天的帖子中,我们详细介绍了 ProfilePress 中的几个关键缺陷,这些缺陷使攻击者除了注册为管理员之外,还能够上传恶意文件以实现远程代码执行。这些缺陷已在 3.1.4 版本中完全修补。如果用户运行的是易受攻击的插件版本 (3.0 – 3.1.3),我们建议用户立即更新到可用的最新版本,即本文发布时的 3.1.8 版。

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

文章来源 wordfence https://www.wordfence.com/blog/2021/06/easily-exploitable-critical-vulnerabilities-patched-in-profilepress-plugin/

相关文章

官方客服团队

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

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