![图片[1]-WordPress 站点有用户名枚举漏洞,这是怎么回事?-小白博客](https://xiaobal.com/wp-content/uploads/2025/02/a400e099068b400d782b4e2596ed4947-819x1024.jpg?imageMogr2/format/png/interlace/1/quality/100/strip|watermark/2/text/5bCP55m95Y2a5a6id3d3LnhpYW9iYWwuY29tIA/font/dGFob21hLnR0Zg/fontsize/24/fill/IzAwMDAwMA/dissolve/80/shadow/0/gravity/southeast/dx/20/dy/20)
漏洞说明:
WordPress是一种使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站。也可以把 WordPress当作一个内容管理系统来使用。
WordPress 在4.7.0版本之后将REST API插件集成到默认功能之中。REST API为WordPress的使用者提供了一个方便快捷的管理接口。在WordPress 4.7.0版本中,存在着一个越权漏洞,成功的利用这个漏洞,可以绕过管理员权限查看wordpress上所有发布过文章的用户信息列表。
漏洞复现:
访问路径:https://你的博客域名.com/wp-json/wp/v2/users/
可以从slug参数上观察到wordpress的用户名
啊,我点开一看,果然这个 WordPress 内置的接口把网站上的所有作者的登录信息都罗列出来了
我这里总结有三种修复的方法:
一、直接屏蔽 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;
});
© 版权声明
本站为个人博客,本站为非盈利性站点,会员功能仅仅作为用户喜欢本站捐赠打赏功能,本站不贩卖软件,所有内容不作为商业行为,博客所发布的一切修改补丁、注册机和注册信息及软件的文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关,您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。若访问和下载本站内容,说明您已同意上述条款;否则,请立马退出并永久性删除本站!
THE END















暂无评论内容