当前位置:首页IT技术如何修复 WordPress 的 REST API 暴露的用户名枚举漏洞

如何修复 WordPress 的 REST API 暴露的用户名枚举漏洞

今天有朋友收到了公安那边联系说网站存在安全隐患:

XXXX科技有限公司互联网资产网站系统存在用户名枚举漏洞。

WordPress 在4.7.0版本之后将REST API插件集成到默认功能之中。REST API为WordPress的使用者提供了一个方便快捷的管理接口。在WordPress 4.7.0版本中,存在着一个越权漏洞,成功的利用这个漏洞,可以绕过管理员权限查看wordpress上所有发布过文章的用户信息列表。

漏洞所在url:

https://xxxx.com/wp-json/wp/v2/users/

啊,我点开一看,果然这个 WordPress 内置的接口把网站上的所有作者的登录信息都罗列出来了,不得不感概一下,现在警察叔叔这么负责,也这么强了,这个都懂,并且还提醒站长修复漏洞。

最后修复漏洞的工作自然而然就落到了我的头上了,我这里总结一下有三种修复的方法:

一、直接屏蔽 REST API

朋友是不使用古腾堡编辑器的,而他的 APP 使用的接口又是我自己写的,所以我就直接大手一挥帮他把所有的 REST API 都屏蔽了:

add_filter('rest_authentication_errors', fn($access)=> new WP_Error('rest_cannot_acess', 'REST API不再提供访问', ['status' => 403]));

二、屏蔽用户接口

如果不想屏蔽所有接口,也可以只屏蔽相关的用户接口:

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;
});

三、移除用户接口里面的登录名

继续缩小一点范围,我们还可以不屏蔽用户接口,只移除用户接口里面的登录名:

add_filter('rest_prepare_user', function($response){
	unset($response->data['slug']);
	return $response;
});

即将下图中红框中的部分去掉,用户登录名就没有暴露了:

如何修复 WordPress 的 REST API 暴露的用户名枚举漏洞

我把第三种方法集成到了 WPJAM「用户管理插件」中,不过网警叔叔接受是否接受这种方式,我就不能保证了,但是前面两种,我觉得网警叔叔肯定是接受的。

温馨提示:

文章标题:如何修复 WordPress 的 REST API 暴露的用户名枚举漏洞

文章链接:https://jssnd.com.cn/3666.html

更新时间:2024年12月19日

本站大部分内容均收集于网络!若内容若侵犯到您的权益,请发送邮件至:3607845@qq.com我们将第一时间处理!

资源所需价格并非资源售卖价格,是收集、整理、编辑详情以及本站运营的适当补贴,并且本站不提供任何免费技术支持。

                               

所有资源仅限于参考和学习,版权归原作者所有,更多请阅读SND网络服务协议

给TA打赏
共{{data.count}}人
人已打赏
IT技术网络安全

aps、php脚本渗透大合集

2024-12-11 17:27:31

公文写作学习提高

写材料责任(使命、担当)主题经典古语解读及应用示例集锦(15条)

2024-8-20 9:52:37

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索
  • SND办公网对文章OneNav一为主题v4.0510源码+开心方法发布评论!