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

2023-07-11 20:24 292 8 条评论 龙笑天下

如何正确的避免你的 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

2021-12-25

发表评论

表情 格式 贴图 链接 私密 签到
评论
正在努力加载中...
扫一扫二维码分享
×