WordPress 站点有用户名枚举漏洞,这是怎么回事?

图片[1]-WordPress 站点有用户名枚举漏洞,这是怎么回事?-小白博客

漏洞说明:

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;
});
© 版权声明
THE END
喜欢就支持一下吧
点赞1 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片快捷回复

    暂无评论内容