《网络安全自学教程》- MySQL匿名用户的原理分析与实战研究

++《网络安全自学教程》++

低版本的MySQL数据库在安装时会创建一个用户名和密码为空的账户,也就是匿名账户。即使升级到高版本,匿名账户仍然会存在。

MySQL匿名账户

1、检查是否存在匿名账户

sql 复制代码
select user,host,authentication_string from mysql.user;

查询结果中,用户名和密码为空的,就是匿名账户。

扩展:MySQL5.7版本开始,将 mysql.user 表的 password 字段换成了 authentication_string,老版本查询用户信息要用 select user,password from mysql.user;

2、检查用户权限

sql 复制代码
show grants for ''@'localhost';

查询结果中,匿名用户的权限是 USAGE,是服务器管理的权限,权限很高,有风险。

扩展:解释一下查询结果中的权限是什么意思

  • GRANT:修改用户权限的命令。
  • USAGE:给用户的权限。
  • ON:权限对哪些 数据库.表 生效,这里的 *.* 意思是对所有数据库、所有表生效。
  • TO:权限给那个用户,格式 '用户名'@'登录主机'

3、创建匿名账户

除了系统自带的匿名账户,我们也可以自己创建匿名账户。

sql 复制代码
create user ''@'localhost';

4、使用匿名账户登录

用户名和密码留空,指定登录主机,可以登录匿名账户。

bash 复制代码
 mysql -u -p -hlocalhost

这是一个风险点,基线加固或者漏扫的时候都会检查出来。

5、删除匿名账户

使用root或高权限用户删除。

sql 复制代码
delete from mysql.user where user='';

删除后需要 flush privileges; 刷新权限,否则还是可以登录。

相关推荐
天蓝蓝23528几秒前
自然语言处理(NLP)实战项目
人工智能·自然语言处理
Python极客之家5 分钟前
基于深度学习的眼部疾病检测识别系统
人工智能·python·深度学习·毕业设计·卷积神经网络
go_to_hacker6 分钟前
网络安全中GET和POST区别在哪?
安全·web安全
卡兰芙的微笑9 分钟前
get_property --Cmakelist之中
前端·数据库·编辑器
阿华的代码王国16 分钟前
【JavaEE】多线程编程引入——认识Thread类
java·开发语言·数据结构·mysql·java-ee
Z_W_H_21 分钟前
【PostgreSQL】安装及使用(Navicat/Arcgis),连接(C#)
数据库·postgresql
繁依Fanyi22 分钟前
828 华为云征文|华为 Flexus 云服务器部署 RustDesk Server,打造自己的远程桌面服务器
运维·服务器·开发语言·人工智能·pytorch·华为·华为云
shuxianshrng24 分钟前
鹰眼降尘系统怎么样
大数据·服务器·人工智能·数码相机·物联网
豆姐姐28 分钟前
金九银十,分享一波用例设计、数据库、编程笔试题!
自动化测试·数据库·测试用例·软件测试面试
说私域28 分钟前
开源 AI 智能名片小程序:开启内容营销新境界
人工智能·小程序