解决MySQL为单一用户root设置密码刷新权限后还是可以空密码登录问题


有时候,你想证明给一万个人看,到后来你发现:
只得到了一个明白的人,那就够了。


pass
unpass

原本是打算在Kali官方的BUG区上报的,但是注册用户时候的注册链接就是发不到我的邮箱里边,注册不了帐号,所以就发在freebuf了。

初审过了,复审,好吧….不是安全滴不能发在freebuf啊!!!

这个BUG是刚下载最新版Kali 2017后发现的问题。

在百度谷歌几个搜索引擎上切换各种关键字无果之后自己手动搞了下,搜索过程中也看到了有两个用户遇到了相同的问题,但是结果是一个重装系统,一个在一段时间之后莫名其妙就好了….

我装的Kali本就是初始系统,重装也没用,等肯定不是解决的办法。

BUG描述

刚装好Kali的MySQL是空密码,空密码进入之后,为唯一一个用户root设置好密码之后,刷新权限再次进入MySQL,发现还是可以直接通过“mysql”命令进入数据库。
通过select user,password from mysql.user;发现user表的确只有一个设置了密码的用户,不存在网上所说的匿名用户,但是也刷新了权限,MySQL也是刚刚安装的,检查配置文件也没有任何异常,依旧可以空密码登录这样一种情况。

BUG复现

kalioffice
init
这是刚刚安装好的Kali linux 2017

然后启动MySQL服务,并为其设置密码
qidong
nopass
jianlimima

好,这就为唯一的root用户设置了密码,然后退出重新进入但是发现可以直接mysql进入
zhiji

有小伙伴说刷新权限不够,得重启服务…其实刷新权限就够了,重启服务多此一举,不过在这个测试阶段可以试一试,以防在这一方面出错
service

这是怎么回事?user表只有一个用户并设置了密码,而且我们来看看配置文件/etc/mysql/my.cnf(初始化的MySQL基本没啥问题)
config

也没有skip-grant-tables这种当忘记MySQL密码后可以直接进入MySQL的指令。(初始化的肯定没有)

网上所说的MySQL匿名用户这种情况是出现了一个针对本地的 空用户名空密码 的这样一个帐号,也就是可以用这条指令来实现,直接进入但是没有任何权限。

GRANT USAGE ON . TO ‘‘@’localhost’

但是我们看了我们的user表,只存在一个用户,所以他们所说的各种情况都可以PASS了。

后边试了各种方法还是无果…

解决过程

尝试了很多方法之后,终于发现这样一个解决过程

进入MySQL数据库后重新建立一个针对本地的root用户,大家注意后边的127.0.0.1和localhost。
builduser
two
我新建了两个密码相同的root用户,然后我退出来再次进一下看看,还是可以
haishikeyi
接下来就是重点操作了

我删除了系统内置的针对localhost的root用户,然后再次进入
shanchuroot
chongxinjinru

发现不论是空密码,还是我输入正确的密码都进入不了MySQL,最后查询了很多资料以及关于后边的using password:NO/YES都是和这个问题对不上号。

最后是通过加上-h选项进入的…..内心是奔溃的,这里你就要注意我前边说的关于localhost 和127.0.0.1
127
指定主机后,成功进入,这会就基本上解决了MySQL的这个问题,但是总不能让我每次都加-h这个选项吧,很麻烦

所以下一步操作
localroot

刚才创建的是针对127.0.0.1,现在创建一个localhost,然后我们退出再次进入就不需要再加上-h选项了
okok

这就算是解决了MySQL为单一用户root建立了密码刷新了权限还是可以空密码进入的问题,花了一些时间也走了一些弯路最后还是解决了问题,更深层次的内容没有去细细探究,但是我觉得归根结底还是这个初始化的root用户的问题。

解决方法就是这样,衷心希望可以为出现相同问题但是解决无方的小伙伴能提供一些解决问题的方法,如果有小伙伴还有其他方法,也欢迎交流探讨哈

freebuf
-_- :) -.-

By: Yokeen

QQ:709516041

My blog:www.addon.pub