避免WordPress泄露管理员用户名的方法

2013-04-28 17:10:18来源:福音乐章作者:

WordPress 虽然很好用,但是安全问题不容忽视。很多网站都说要设置一个复杂的密码等,但是,这都只做了一半。

WordPress 虽然很好用,但是安全问题不容忽视。很多网站都说要设置一个复杂的密码等,但是,这都只做了一半。

你有没有想过,如果你的网站的登陆名被别人知道了,偏偏他是一个比较精通 WordPress 的人,而且会写脚本暴力破解,那么后果就不堪设想。

实际上,Wordpress 这么一个漏洞,至今依然存在,并且常常会被黑客利用。

我在本地装了一个 WordPress 来演示一下这个漏洞。

这里就是我的 WordPress 安装路径:

wp-domain

然后去后台开启固定链接。我相信很多 WordPress 的站长都会开启这个功能。运行 WP-Super-Cache 需要开这个功能,想要让 URL 好看一点也需要这个功能——总之,这个功能太有用了。

Wordpress-URL

但是,固定链接一开,泄露用户名的漏洞也就打开了。实际上,即使没有开固定链接,Wordpress 自身也会泄露一些重要信息,但是开了固定链接以后就更容易泄露了。

想要知道 WordPress 的管理员用户名?很简单,只要在网站的域名后面加 /?author=1 就行了。

wp-username

如果  /?author=1 显示404界面,那很可能是以前有过 admin 用户,后来站长发现用默认帐户 admin 太不安全了,就新建了一个管理员帐户,并删除了 admin 帐户。这种情况下,用 /?author=2 就能显示出用户名了。

如果使用 admin 帐户,确实不安全,但是如果你的博客使用一个复杂的用户名,却经不起这么简单的一个 URL 的考验,这和使用 admin 帐户没有根本上的区别。

既然存在漏洞,那么就要去填补它。要填补这个漏洞,倒还真的不是什么难事。

但是要填补这个漏洞,先要了解下 WordPress 的数据库中的 wp-user 的结构。

phpmyadmin-user

可以看到,一个用户有两个用户名,一个是“user_login”,另一个是“user_nicename”,这两个有什么区别呢?

user_login 是登陆名,而 user_nicename 是在url 中显示的名字。最前面还有一个 ID ,ID=1 的用户,就是输入 /?author=1 显示出来的用户。

好了,知道了这些,我们就可以动手了~

我的思路是,把旧用户的登陆名改掉,然后在新建一个与登陆名旧用户的 user_nicename 一致的用户,并修改其 ID 。

首先是最重要的一步,备份数据库,万一搞砸了也不怕。

首先是要更改一下自己登陆 WordPress 的用户名。这个用户名是在 user_login 里,将其改得复杂一点,而 user_nicename 不变。

然后在 WordPress 的后台新建一个新的用户,用户名为之前的 admin 用户的 user_nicename 。再次进入phpMyAdmin,可以看到,新用户的 ID 为 2,user_login 与之前用户的 user_nicename 一样,但是 user_nicename 后面却多了一个 -2 。这是 WordPress 官方为避免地址栏里是 /author/admin 却不知道究竟该显示哪个 admin 而设计的功能。

把新用户的 user_nicename 改一下,比如改成 admin-fyyz.me ,只要不与别的用户的 user_nicename 一样就行了。然后修改新用户的 ID ,尽量改得大一些,避免被 ?author=n 泄露。

然后,把新用户的权限降到最低——订阅者,或者没有任何角色。

大功告成!

注:1、本文中的截图是在本地的 WordPress 中截的,我的本地 WordPress 就随便用了一个 admin 帐户。在实际使用中,大家应该尽量避免使用 admin 帐户。

2、建议大家再去安装一个 Login LockDown 插件。

关键词:WordPress

赞助商链接: