如何正确的避免你的 WordPress 管理员登录用户名被暴露【续】

2023-07-11 20:24 551 8 条评论 龙笑天下
Dragon主题购买

如何正确的避免你的 WordPress 管理员登录用户名被暴露【续】

很久之前龙笑天写过一篇文章,讲的是 wordpress 前端页面某些地方会暴露我们的用户名,特别是管理员的。详见下文:

(全网独家)如何正确的避免你的 Wordpress 管理员登录用户名被暴露-BG
(全网独家)如何正确的避免你的 Wordpress 管理员登录用户名被暴露

(全网独家)如何正确的避免你的 Wordpress 管理员登录用户名被暴露

昨晚在研究评论结构时,网站右键查看源代码,无意间发现自己的管理员用户名被暴露了... 图 1 评论中暴露登录用户名 如上图,在博主的评论的 class 里看到的 test10 是我本地的测试网站的管理...

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(最新版)-BG
WordPress 完全禁用 REST API(最新版)

WordPress 完全禁用 REST API(最新版)

毋庸置疑 WordPress 算是当前比较好用的 PHP 程序,基本上个人博客、企业网站,小型商务网站都可以使用到。而且 WordPress 官方的更新、第三方的插件主题丰富,让这个程序变得越来越丰富多...

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 用户名枚举漏洞的解决过程-魏艾斯笔记

「点点赞赏,手留余香」

还没有人赞赏,快来当第一个赞赏的人吧!

声明:本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

2022-11-08

2024-01-07

发表评论

表情 格式 贴图 链接 私密 签到
Dragon主题购买阿里云特价云服务器1核2G低至86元,N4共享型服务器3年仅需799元腾讯云特价云服务器1核2G 88元/年 2核4G3M688元/3年,更有千元代金券礼包免费领!
评论
正在努力加载中...
扫一扫二维码分享
×
We use cookies on our website to give you the most relevant experience by remembering your preferences and repeat visits. By clicking “Accept”, you consent to the use of ALL the cookies. Learn more