查百事 通世界
一个记录与收藏技术的网站

如何修复WordPress用户名枚举漏洞?3种高效解决方案

一、漏洞背景:你的用户名正在被”偷窥”吗?

近期大量WordPress站点曝出用户名枚举漏洞,攻击者可通过以下途径获取用户信息:

  • 默认REST API接口:/wp-json/wp/v2/users
  • 登录页错误提示差异(”无效用户名”与”密码错误”)
  • 作者归档页路径:/?author=1

这些漏洞会导致攻击者批量获取管理员用户名,进而发起定向暴力破解攻击。根据Sucuri安全报告,超过60%的WordPress攻击始于用户名枚举。

二、核心修复方案(3选1)

▶ 方案1:禁用REST API用户接口(推荐)

适用场景:不需要开放用户列表的站点
操作步骤

  1. 进入WordPress后台 → 外观 → 主题编辑器
  2. 打开当前主题的functions.php文件
  3. 在文件末尾添加以下代码:
// 禁用REST API用户接口
add_filter('rest_endpoints', function($endpoints){
    // 移除用户列表接口
    if(isset($endpoints['/wp/v2/users'])){
        unset($endpoints['/wp/v2/users']);
    }
    // 移除单个用户查询接口
    if(isset($endpoints['/wp/v2/users/(?P<id>[\d]+)'])){
        unset($endpoints['/wp/v2/users/(?P<id>[\d]+)']);
    }
    return $endpoints;
});

效果验证:访问你的域名/wp-json/wp/v2/users应返回rest_no_route错误


▶ 方案2:Nginx服务器拦截(适合技术用户)

适用场景:使用Nginx服务器且需要保留其他REST功能
操作步骤

  1. 通过SSH登录服务器
  2. 编辑站点配置文件(通常位于/etc/nginx/sites-available/
  3. server {}块内添加:
# 拦截用户枚举请求
location ~* ^/wp-json/wp/v2/users {
    deny all;
    return 403;
}
  1. 执行命令重载配置:
sudo nginx -s reload

▶ 方案3:隐藏敏感字段(折中方案)

适用场景:必须保留用户接口但需隐藏登录名
操作步骤

  1. functions.php中添加:
// 移除REST响应中的登录名
add_filter('rest_prepare_user', function($response){
    if(isset($response->data['slug'])){
        unset($response->data['slug']); // slug字段即登录用户名
    }
    return $response;
});

注意事项:需配合其他防护措施使用


三、强化防护措施

1. 统一登录错误提示

functions.php中添加:

// 统一登录错误提示
add_filter('login_errors', function($error){
    return '用户名或密码错误';
});

2. 启用验证码防护

推荐安装插件:

  • Google Captcha (reCAPTCHA)
  • Wordfence Security
  • iThemes Security

3. 关闭作者归档页

functions.php中添加:

// 禁用作者归档页
add_action('template_redirect', function(){
    if(is_author()){
        wp_redirect(home_url());
        exit;
    }
});

四、漏洞验证工具

修复后使用以下工具测试:

  1. WPScanwpscan --url 你的域名 -e u
  2. Burp Suite:检查/wp-json/wp/v2/users响应
  3. 手动测试:尝试访问/?author=1是否跳转

五、长期防护建议

  1. 定期更新WordPress核心和插件
  2. 使用安全插件(如Sucuri、Wordfence)
  3. 启用Web应用防火墙(WAF)
  4. 限制登录尝试次数
  5. 强制管理员使用强密码

版权声明:本文采用CC BY-NC-SA 4.0协议,转载请注明出处。技术操作有风险,修改前请务必备份网站数据!

声明:本站转载目的在于传递更多信息,文章内容并不代表本站观点及立场和对其真实性负责。若有侵权或异议请联系我们删除。百事通 » 如何修复WordPress用户名枚举漏洞?3种高效解决方案
分享到

相关推荐

  • 暂无文章