介绍
2024 年 5 月 7 日,领先的安全咨询组织 WP-Firewall 发布了一份有关 Uncode Core 插件中发现的关键漏洞的详细报告。如果您是 Uncode 用户,请将核心插件更新到至少版本 2.8.9 以保护您的 WordPress 网站免受潜在攻击至关重要。这篇文章将深入探讨这些漏洞的具体情况、其影响以及缓解这些漏洞所采取的步骤。
关于取消编码核心插件
Uncode Core 插件由 Undsgn 开发,是 Uncode 主题的重要组成部分,Uncode 主题是 WooCommerce 网站非常受欢迎的高级主题,在 ThemeForest 上的销量超过 110,000 个。 Uncode 主题以其完美的像素设计而闻名,非常适合各种网站,包括作品集、代理机构、自由职业者、博客和在线商店。
安全漏洞
WP-Firewall 的安全研究人员在 Uncode Core 插件中发现了两个重大漏洞:
1.经过验证的任意文件和目录删除
描述:此漏洞允许任何至少具有订阅者角色的经过身份验证的用户删除服务器上的任意目录。问题在于“delete_download”函数,该函数缺乏适当的权限和随机数检查。此函数附加到“wp_ajax_uncodefont_delete_download”操作,使经过身份验证的用户可以利用它。
技术细节:
function delete_download() {
如果 (isset($_REQUEST['font_family'])) {
$font_family = $_REQUEST['font_family'];
$font_dir = Trailingslashit($this->font_directory).$font_family;
$fontkit_zip = $font_dir.'.zip';
if (@file_exists($fontkit_zip)) {
if (!@unlink($fontkit_zip)) {
echo json_encode(array(
'error' => sprintf( esc_html__( 'Failed to delete @fontface kit zip %1$s.', 'uncode-core' ), $fontkit_zip )
));
die();
}
}
// 无法删除该目录,因为创建该目录的 unzip_file 使用 WP_Filesystem。所以我们使用WP_Filesystem来删除它。
$this->setup_wp_filesystem();
global $wp_filesystem;
if (isset($wp_filesystem)) {
$delete_dir = $wp_filesystem->delete($font_dir, true);
if (!$delete_dir) {
回显 json_encode(array('error' => $delete_dir['error']));
die();
}
}
echo json_encode(array('success' => "Download deleted"));
}
die();
}
includes/font-system/font-system.php, function delete_download()
该函数根据用户输入(`$_REQUEST['font_family']`)构造`$font_dir`变量,且不经过任何清理,从而允许目录遍历和任意删除。
2. 认证提权
描述:此漏洞允许任何具有最低订阅者角色的经过身份验证的用户将其权限升级到 WordPress 网站上的任何角色。这是由于“save_option”函数中的 WP Option 更新不安全,缺乏适当的权限检查。
技术细节:
public function save_option() {
如果(isset($_POST['nonce'])&&wp_verify_nonce($_POST['nonce'],'uncode-core-settings-nonce')){
如果(isset($_POST['值'])&& $_POST['值']&&isset($_POST['option_id'])&& $_POST['option_id']){
$autoload = isset( $_POST['自动加载'] ) && $_POST['自动加载'] === 'true' ? true : false;
更新选项($_POST['option_id'],$_POST['值'],$自动加载);
---------- CUT HERE ----------
includes/core-settings/class-core-settings.php, function save_option()
任何有权访问 wp-admin 区域的经过身份验证的用户都可以检索此函数中使用的随机数,从而允许对选项进行未经授权的更新和权限升级。
补丁
为了解决这些漏洞,Uncode Core 插件开发人员发布了版本 2.8.9,其中包括以下修复:
– 经过身份验证的任意文件和目录删除:在“delete_download”函数中实现了权限和随机数检查。
– 经过身份验证的权限升级:在“save_option”函数中应用了权限和随机数检查,并添加了选项键的白名单检查。
结论
确保 WordPress 网站的安全需要及时更新最新的补丁和安全建议。 Uncode Core 插件中的漏洞强调了对任何敏感操作实施适当的权限和随机数检查的重要性。始终清理用户输入并限制可以通过用户操作更新或删除的内容的范围。
有关更多详细信息,您可以阅读 WP-Firewall 网站上的完整安全建议 这里.
保持安全
WP-Firewall 为 WordPress 安全提供各种解决方案,包括插件审核、漏洞监控和响应以及托管 WordPress 安全服务。如果您是插件开发人员或安全研究人员,请考虑加入 WP-Firewall。