51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

WP数据库重置插件中修补的容易利用的漏洞

1月7日,我们的威胁情报小组在WP Database Reset中发现了漏洞,WP Database Reset是一个安装在80,000多个网站上的WordPress插件。其中一个漏洞允许任何未经身份验证的用户将数据库中的任何表重置为初始WordPress设置状态,而另一个漏洞则允许任何经过身份验证的用户(即使是权限最小的用户)也可以授予其帐户管理特权,同时删除所有表中的其他用户的请求很简单。

这些被认为是严重的安全问题,可能导致站点完全重置和/或接管。**我们强烈建议立即更新到最新版本(3.15)。**自1月8日以来,Wordfence Premium用户已通过自定义防火墙规则免受这些漏洞的攻击。无Wordfence的用户将在2月7日获得相同的保护。


说明:
受影响的 未经身份验证的数据库重置插件:受影响的 WP数据库重置
版本: <= 3.1
CVE ID: CVE-2020-7048
CVSS得分: 9.1(严重)
CVSS矢量: CVSS:3.0 / AV:N / AC:L / PR:N / UI:N / S:U / C:N / I:H / A:H
修补版本: 3.15

WP Database Reset是一个易于使用的数据库重置插件,它使用户能够将其站点上的所有数据库表重置为与全新WordPress安装相同的状态。对于在其网站上进行测试的管理员以及想要重新启动而无需重新安装完整WordPress的管理员而言,这非常方便。此插件提供了强大的功能,如果不加保护,可能会对网站所有者造成严重破坏。不幸的是,这正是我们在此插件中找到的。

插件中的任何数据库重置功能都没有通过功能检查或安全随机数来安全地保护。没有适当的安全控制措施,WP Database Reset插件包含一个严重的缺陷,该缺陷使所有未经身份验证的用户都可以重置数据库中的任何表。此重置将导致数据可用性完全丧失。攻击者可以发送简单的请求,并且网站将完全重置为WordPress标准默认值。

插件代码的漏洞版本:

public function reset( array $tables ) { 
if ( in_array('users', $tables ) ) {
$this->reset_users = true;
}

$this->validate_selected( $tables );
$this->set_backup();
$this->reinstall();
$this->restore_backup();
}

private function validate_selected( array $tables ) {
if ( ! empty( $tables ) && is_array( $tables ) ) {
$this->selected = array_flip( $tables );

带有安全随机数检查和功能检查的插件代码修订版:

public function reset(array $tables) {   if (wp_verify_nonce(@$_REQUEST['submit_reset_form'], 'reset_nounce') && current_user_can('administrator')) {      // Check if current user is Admin and check the nonce     if (in_array('users', $tables)) {       $this->reset_users = true;     }     $this->validate_selected($tables);     $this->set_backup();     $this->reinstall();     $this->restore_backup();   } else {     throw new Exception(__('Please reload the page and try again. Double check your security code.', 'wordpress-database-reset'));   } }

WordPress数据库存储构成站点的所有数据,包括帖子,页面,用户,站点选项,评论等。只需单击几下几秒钟,如果未经身份验证的用户使用的是该插件的漏洞版本,则未经安装的用户可以清除整个WordPress安装。


说明:
受影响的 特权升级插件:受影响的 WP数据库重置
版本: <= 3.1
CVE ID: CVE-2020-7047
CVSS得分: 8.8(高)
CVSS矢量: CVSS:3.0 / AV:N / AC:L / PR:L / UI:N / S:U / C:H / I:H / A:H
修补版本: 3.15

为了进一步升级以前的漏洞,所有被验证为订阅者及更高版本的用户都可以重置wp_users表。最初,这似乎不太严重。在数据库重置期间删除所有用户可能会有问题,但是我们总是可以重新创建用户,对吗?不幸的是,这更加复杂。每当wp_users重置表时,它都会从用户表中删除所有用户,包括所有管理员,但当前登录的用户除外。发送请求的用户将自动升级为管理员,即使他们只是订阅者也是如此。该用户还将成为唯一的管理员,从而​​使攻击者可以完全控制WordPress网站。

private function update_user_settings() {
global $wpdb;

$user_id = $this->reset_users? 1: $this->user->ID;

$wpdb->query(
$wpdb->prepare(
"UPDATE $wpdb->users
SET user_pass = '%s', user_activation_key = ''
WHERE ID = '%d'",
$this->user->user_pass, $user_id
)
);

if ( $this->reset_users ) {
wp_clear_auth_cookie();
wp_set_auth_cookie( true );
}
}

如果站点所有者允许使用WP数据库重置插件的漏洞版本在站点上进行开放注册,则可能会失去对其站点的控制。这是此漏洞如何发挥作用的演示。

提醒:备份您的WordPress网站

此漏洞提醒我们,维护站点备份对于维护站点的安全性和可用性至关重要。有些妥协需要专业清理或事件响应以及法医调查。如果没有备份,经过这样的妥协,即使是专业的补救措施也无济于事。发生妥协时,备份还可以缩短恢复时间。我们建议网站所有者:

  • 定期间隔备份。每周一次将是一个不错的起点。
  • 每次在站点上进行重大更改时都进行备份。
  • 将备份存储在与WordPress安装分开的服务器或设备上。这样,在站点或其服务器受到威胁的情况下,可以信任备份的完整性。

披露时间表

20201月7日 --最初发现并分析了漏洞。
20201月8日 --向插件开发人员披露了全部详细信息,并向Wordfence高级用户发布了自定义防火墙规则。
20201月13日 --开发人员回覆并通知我们第二天将发布补丁。
20201月14日 --发布补丁。
20201月16日 --公开披露。

结论

在今天的帖子中,我们详细介绍了WP Database Reset插件中发现的两个严重漏洞。这些漏洞已在3.15版中修复。如果您的网站上安装了此插件,我们敦促您立即进行更新。

赞(0)
未经允许不得转载:工具盒子 » WP数据库重置插件中修补的容易利用的漏洞