很久之前龙笑天写过一篇文章,讲的是 wordpress 前端页面某些地方会暴露我们的用户名,特别是管理员的。详见下文:
WordPress 从 V4.7 版本开始增加了 rest api,此接口为 wordpress 的前后端分离提供了非常好的便利。Dragon 微信小程序就是利用此 API 接口来实现的。但,此后端接口也有点小 bug,有地方会暴露我们的用户名。下面龙笑天就来介绍下管理员用户名暴露形式及解决方法。
1 泄露形式
通过访问这 2 路由接口:http://你的域名/wp-json/wp/v2/users/
和http://你的域名/wp-json/wp/v2/users/1
。可以得到你的管理员用户信息,如下:
{
"id":1,
"name":"龙笑天",
"url":"https://www.ilxtx.com",
"description":"互助分享,互联网本该如此!",
"link":"http://www.ilxtx.com/u/10001/",
"slug":"lxtx",
"avatar_urls":{
"24":"http://2.gravatar.com/avatar/ea5447f001efd92e0d2a92185fb92b22?s=24&d=mm&r=g",
"48":"http://2.gravatar.com/avatar/ea5447f001efd92e0d2a92185fb92b22?s=48&d=mm&r=g",
"96":"http://2.gravatar.com/avatar/ea5447f001efd92e0d2a92185fb92b22?s=96&d=mm&r=g"
},
"meta":{
},
"_links":{
"self":[
{
"href":"http://www.ilxtx.com/wp-json/wp/v2/users/1"
}
],
"collection":[
{
"href":"http://www.ilxtx.com/wp-json/wp/v2/users"
}
]
}
}
看到里面的第 7 行的lxtx
了吗,此就是管理员用户名,被直接暴露了。PS:此处的这个用户名仅是演示,真实已被隐藏了。
PS:Dragon 微信小程序不依耐 WP rest api 的 users 接口,故从Dragon 主题V4.7.0 开始,会直接集成下面的方法 1:“主题设置-常用功能-安全相关”里,找到并开启即可解决暴露用户名问题。
2 解决方法
既然知道了是怎么泄露的,那就简单了,WP 肯定提供了相关的控制钩子方法的。下面就直接上方法,3 种方法任选一种即可。
2.1 直接屏蔽 rest api
直接屏蔽 wp 的 rest api 完事,详见下文:
WordPress 完全禁用 REST API(最新版)
2.2 直接去掉接口
通过下面方法,直接去掉上面的/wp/v2/users/
这 2 个接口,简单粗暴解决问题。
友情提示:如果你用的微信小程序或主题需要使用此 users 路由,那么就请不要使用此方法哦~
2.3 修改接口返回数据
通过下面方法,直接从上面的/wp/v2/users/
这 2 个路由的返回数据中去掉slug
字段,也就可以解决暴露用户名问题了。
3 屏蔽 wlwmanifest.xml
一些扫码器会疯狂全网扫描此 URL 路径:http://你的域名//wp-includes/wlwmanifest.xml
,来判断你是否使用了Wordpress程序,从而进一步来搞事情。我们可以直接通过下面的 nginx 方法,禁用此 URL 即可。
#屏蔽 wlwmanifest.xml
location ~ ^/wp-includes/wlwmanifest.xml {
#deny all;
return 404;
}
4 相关参考
WordPress 的管理员用户名是如何泄露的,以及如何防护~ - 码农教程
枚举 WordPress 用户的 6 种方法 - 码农教程
WordPress 控制 REST API 访问权限代码-代码狗
WordPress 用户名枚举漏洞的解决过程-魏艾斯笔记
还没有人赞赏,快来当第一个赞赏的人吧!
本文为原创文章,版权归龙笑天下所有,欢迎分享本文,转载请保留出处!