WordPress用户枚举漏洞修复加固方法

近期陆续有几个客户反馈收到网安关于WordPress用户枚举漏洞的通报,涉及的地址为:/wp-json/wp/v2/users,经核实这是WordPress内置的REST API接口,这个接口默认情况下可以暴露网站上所有用户的信息,包括用户名、ID等。如果没有正确配置或限制访问,攻击者可以通过此接口枚举出所有网站的用户,从而为进一步的攻击做准备。 17351982443481

漏洞分析及影响

  1. 漏洞说明
    • WordPress的REST API允许通过wp-json/wp/v2/users接口列出网站的所有用户(如果没有权限限制)。
    • 攻击者只需通过简单的GET请求就能查看到网站上所有用户的详细信息,包括用户名等敏感数据。
  2. 影响
    • 信息泄露:攻击者能够枚举出所有用户名,暴露网站上的用户列表。
    • 暴力破解攻击:知道用户名后,攻击者可以进一步尝试使用暴力破解方法猜测密码,尤其是如果用户的密码弱或使用默认密码的情况下。
    • 社交工程:攻击者可以利用获取的用户信息进行社交工程攻击,伪装成某个用户进行诈骗或钓鱼攻击。

修复措施

1、服务器直接禁止对应地址的访问

此方法比较简单直接,禁止对应链接地址的访问以后可以直接解决此问题,不过可能会影响到后台部分涉及到此接口访问的功能。

步骤:

  • 找到你网站的 NGINX 配置文件,宝塔面板的话则是后台网站-设置-配置文件里面。
  • 在适当的位置(通常是在 server 块中)添加以下配置代码:
server {
    # 你的其他配置
    ...

    # 禁止访问 /wp/v2/users 和 /wp/v2/users/{id}
    location ~ ^/wp-json/wp/v2/users(/.*)?$ {
        deny all;
        return 403;  # 返回 403 Forbidden
    }

    # 你的其他配置
    ...
}
  • 重载 NGINX 配置

2、(推荐)基于WordPress内置filter移除接口,同时保留高权限用户的接口正常使用

此方式可以自动判断当前用户权限,由于rest api接口可能在后台发布文章的时候使用到,所以可以针对编辑权限开放此接口的访问,其他访问默认移除此接口,代码如下:

/**
 * 禁用 WordPress 用户枚举接口,只有具有编辑权限(editor)及以上权限的用户才可访问。
 * 
 * @author WPCOM
 * @version 1.0.0
 * @since 2024-12-26
 */
add_filter('rest_endpoints', function ($endpoints) {
    global $has_users_endpoint;
    if($has_users_endpoint) return $endpoints;

    if(isset($endpoints['/wp/v2/users'])){
        $users_endpoint = $endpoints['/wp/v2/users'];
        unset($endpoints['/wp/v2/users']);
    }

    // 编辑及以上权限可展示用户列表
    if (defined('REST_REQUEST') && REST_REQUEST && current_user_can('editor')) {
        // 恢复 /wp/v2/users 端点
        if(isset($users_endpoint)) $endpoints['/wp/v2/users'] = $users_endpoint;
        $has_users_endpoint = true;
    }

    return $endpoints;
});

以上代码可以添加到主题的functions.php文件或者其他封装的插件里面。

本文内容来源于公开网络,出于传递信息之目的整理发布。原文版权归原作者所有,若涉及侵权请先提供版权后联系我们删除

(0)
WP之家WP之家
上一篇 2025年3月13日 下午9:45
下一篇 2025年3月13日

相关推荐

  • 如何使用代码和插件创建WordPress活动事件

    网络活动可以帮助任何企业发展,这已不是什么秘密。作为企业主,没有更好的方式来建立新的关系——无论是与潜在客户、业务合作伙伴还是投资者。事件本身有许多不同的风格和不同的目的;从简单的面对面聚会到大型商务会议和聚会。无论活动规

    2025年3月13日
  • 什么是DNS域名解析系统?

    DNS是DomainNameSystem的缩写,是Web环境中最常见但最容易被误解的组件之一。简而言之,DNS通过将域名与实际的Web服务器连接来帮助引导Internet上的流量。本质上,它需要一个人性化的请求——一个像ping这样的域名——并将它转换成一个对计算机友好的服务器IP地址——比如47.92.146.138。由于DNS就

    2025年3月13日
  • 如何配置WordPress讨论设置

    WordPress最初是一个博客平台,现在仍经常用于这一目的。评论是大多数传统博客的关键组成部分,也是吸引读者参与的一种简单方法。为了帮助您充分利用这一功能,WordPress提供了一些讨论设置,您可以根据自己网站的需要进行配置。通

    2025年3月13日
  • 如何在WordPress中插入Lottie动画?

    GIF是在包括WordPress在内的任何网站创建平台中插入动画图像的标准方式。然而,最新的趋势是插入Lottie动画,将有吸引力的互动元素显示为图像。虽然您可以使用SVG来实现可扩展性,但Lottie允许对您的动画进行更多控制。如果您想知道Lottie是什么以及如何在WordPress中插入它们,这里有一些可参考的选项。L

    2025年3月13日
  • WordPress缓存插件对比推荐,合适才最好,多年经验纯干货分享

    WordPress缓存插件对比推荐 分享几个热门缓存插件的优缺点,讲述每个缓存插件适合什么类型网站。效果好又稳定的就这几个,用它们就行,无需再折腾对比。如果你想知道其它缓存插件的优缺点,欢迎下方留言。 为什么使…

    2025年4月3日
  • 如何实现Contact Form 7联系表单接入Zoho CRM平台

    将联系表格添加到您的WordPress网站使用户能够联系查询和业务建议。但是,如果您没有使用客户关系管理(CRM)解决方案,您可能会失去这些潜在客户。幸运的是,您可以使用ContactForm7和?Zoho轻松地将您的联系表单与CRM配对。在这篇文章中,我们将介绍将ContactForm7接入Zoho的好处及实际操作分步教程。ContactF

    2025年3月13日
  • 如何更改您的WordPress用户名

    创建WordPress帐户后,您可能出于各种原因想要更改用户名。不幸的是,WordPress默认不允许您更改用户名。如果您尝试过,您可能会看到如下内容:您将在本教程中了解如何解决此问题虽然WordPress不允许修改,但

    2025年3月13日
  • WordPress文章分类新增、编辑和删除管理

    发布WordPress文章时,不应该忘记的一个方面是它的分类。这是因为忽略此组件可能会损害网站的流量和在搜索结果中的排名。WordPress分类根据共享主题、项目或特征对内容和文章进行组织或分组。它也是默认的WordPress分类法之一。此外

    2025年3月13日