小
小玉blog
小
小玉blog

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

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;

});

上一篇 欢迎使用 Typecho
下一篇 已经是最后一篇了

暂无评论

Ctrl + Enter 发送

还没有评论,来说点什么吧

© 2026 小玉blog
Theme Robes