摘要

今天有个关于MySQL的漏洞被披露出来,编号CVE-2016-6662。该漏洞主要涉及到 mysqld_safe 脚本中在加速/处理内存时会采用 “malloc_lib”变量作为辨别标记选择性加载(preload方式)比如tcmalloc之类的malloc库。不幸的的是这个变量可以被my.cnf所控制,导致my.cnf一旦被攻击者在mysql客户端篡改的话可以直接导致mysqld_safe所调用的mysqld进程执行权被控制。

前言

今天有个关于MySQL的漏洞被披露出来,编号CVE-2016-6662。该漏洞主要涉及到 mysqld_safe 脚本中在加速/处理内存时会采用 “malloc_lib”变量作为辨别标记选择性加载(preload方式)比如tcmalloc之类的malloc库。不幸的的是这个变量可以被my.cnf所控制,导致my.cnf一旦被攻击者在mysql客户端篡改的话可以直接导致mysqld_safe所调用的mysqld进程执行权被控制。

技术分析

具体的攻击思路前言部分基本已经表述出来,这里不再重述。笔者来看看漏洞作者在【1】中做了3种攻击方式。作者的思路基本是围绕着如何用这几种技巧写入 my.cnf 被mysqld_safe调用执行这个中心攻防点来进行。

我们先看看最简单的第1种方法

1)采用 set global general_log 来绕过已存在文件(即my.cnf)

a)设置 my.cnf 为 mysql 用户所在权限的基础上

# ll /etc/my.cnf

-rw-r--r-- 1 mysql mysql 380 Sep 12 23:18 /etc/my.cnf

注:默认权限是root,但是不排除mysql集群使用时每个my.cnf是mysql组可读写;

b)开始攻击,各位直接看图吧

注: 这里使用root登录,普通用户默认是没更改全局变量general_log_file 的权限

1

2

mysql>  set global general_log_file = '/etc/my.cnf';

ERROR 1227 (42000): Access denied; you need the SUPER privilege for this operation

攻击成功后的my.cnf

2)使用隐藏的/var/lib/mysql/.my.cnf 和 /var/lib/mysql/my.cnf

这部分讲起来其实意义不大,就是历史原因造成这部分mysql数据目录下的my.cnf和.my.cnf。最糟糕的是这部分还是mysql用户组可以读写的目录。所以我们又能控制到my.cnf了。

写入的方法有两种,一种还是方法一的变量,另一个是常见 INTO OUTFILE 文件注入技巧。

3)作者考虑下了上面2种方式都是需要

作者在假设攻击者还有文件权限的情况下使用写入触发器文件的方式来“

CREATE DEFINER=`root`@`localhost` TRIGGER appendToConf

AFTER INSERT

ON `active_table` FOR EACH ROW

BEGIN

DECLARE void varchar(550);

set global general_log_file='/var/lib/mysql/my.cnf';

set global general_log = on;

select "

[mysqld]

malloc_lib='/var/lib/mysql/

" INTO void;

set global general_log = off;

END;

接下来就等这个这个触发器在表被flushed的时候被触发了(说真的,笔者没实践这个步骤),比如:

1

INSERT INTO `active_table` VALUES('xyz');

这样我们就可以

最后,关于PoC或相关的信息您可以直接访问【1】获得。作者其实在后面的so也提供一个很好的回写技巧,由于preload可以优先mysqld进程加载my.cnf,所以它就能修复my.cnf里的内容。J

最后

这个漏洞的危害建立在一个你至少需要普通用户的基础上,危害程度得因人而异,不注意安全的可能使用的mysql是一大堆弱口令的root用户;注意安全的基本都是普通mysql用户;集群上启动MySQL进程的用户也是个需要考虑的;至于web注入点使用这个功能个人觉得可能就比较窄了。

MySQL的修复【2】选择的是对malloc_lib的路径进行限制 /usr/lib, /usr/lib64, /usr/lib/i386-linux-gnu, or /usr/lib/x86_64-linux-gnu;

最后,笔者认为My

参考

本文由 安全客 原创发布,如需转载请注明来源及本文地址。

本文地址:http://bobao.360.cn/learning/detail/3026.html

mysql malloc lib_CVE-2016-6662-MySQL ‘malloc_lib’变量重写命令执行分析 | CN-SEC 中文网...相关推荐

  1. mysql declare与set的区别_浅谈MySQL存储过程中declare和set定义变量的区别

    在存储过程中常看到declare定义的变量和@set定义的变量.简单的来说,declare定义的类似是局部变量,@set定义的类似全局变量. 1.declare定义的变量类似java类中的局部变量,仅 ...

  2. mysql相邻行数据计算的自定义变量@和Lead窗口函数的具体案例适应版本mysq5.7 mysql8.0

    Mysql相邻数据(行)计算的自定义变量与Lead Lag窗口函数的案例 1 相邻行 我们在处理数据时有时需要对业务上定义的相邻行进行统计计算. 比如我们想统计公司里所有部门最近2年或相邻年份)的成本 ...

  3. mysql内置的变量,MySQL服务器模式及相关内置变量

    本章我们主要包含两部分的内容: MySQL服务器模式 MySQL内置变量 1. MySQL服务器模式 不同的MySQL客户端可以通过不同的模式操作MySQL Server.DBA可以设置一个全局模式, ...

  4. linux mysql更改生效_linux下面MySQL变量修改及生效

    今天在访问mysql项目的时候突然报500错误,没有找到连接,因此想到mysql的连接时间. mysql> show global variables; 主要就是连接时间是28800(8小时), ...

  5. mysql索引缓存的内容_mysql服务器变量、缓存及索引

    服务器变量 注意:其中有些参数支持运行时修改,会立即生效:有些参数不支持,且只能通过修改配置文件,并重启服务器程序生效:有些参数作用域是全局的,且不可改变:有些可以为每个用户提供单独(会话)的设置. ...

  6. MySQL数据类型及sql模型及服务器变量

    myisam  不支持事物,表锁 .frm: 储存表的结构 .MYD: 储存数据,MYDATA的缩写 .MYI:  储存索引,MYIndex的缩写 innodb (每表一个表空间文件 ) 支持事物,支 ...

  7. mysql命令(客户端登陆与mysql -uxxx -pxxx的区别;环境变量的使用)

    大家知道安装了mysql从电脑的开始可以找到客户端打开后输入密码就可以进入,还有一个命令 mysql -uxxx -pxxx,也可以进入,区别就是,你必须先进入mysql的安装目录下的bin目录,只有 ...

  8. Mysql学习总结十二:系统变量、用户变量、定义条件和处理程序

    Mysql学习总结十二:系统变量.用户变量.定义条件和处理程序 1.变量 1.1 系统变量 1.1.1 系统变量的分类 1.1.2 查看系统变量 1.2 用户变量 1.2.1 用户变量的分类 1.2. ...

  9. mac 设置mysql登录快捷键_Mac ox mysql启动登录和环境变量配置

    一.启动mysql服务 命令行方式: 启动MySQL服务 sudo /usr/local/mysql/support-files/mysql.server start 停止MySQL服务 sudo / ...

最新文章

  1. [导入]Asp.net 2.0 实现自定义Email格式有效性验证(示例代码下载)
  2. WinAPI: SetTextColor - 设置设备环境的文本颜色
  3. 现代软件工程系列 学生的精彩文章 (3) 如何在Bug 不断的情况下还能保持平常心... [zz]
  4. terminal services 找不到_电脑局域网中查看不到其他计算机或无法连接的解决办法...
  5. 你们公司还没使用HTTP3?赶紧来补一补,学习一下如何在Nginx上配置HTTP3。
  6. CSS3新单位vw,vh,vmin,vmax详解
  7. LeetCode-697. 数组的度
  8. 1011. A+B和C (15)-PAT乙级真题
  9. 远程管理 Mac OSX 设备
  10. coco数据集大小分类_COCO数据集的简单介绍
  11. 手机版wps支持格式
  12. Axure插件axure-chrome-extension安装
  13. 中国大陆芯片设计企业名单
  14. Python爬虫实战之爬取饿了么信息
  15. h5将数字翻译为大写汉字_js 将阿拉伯数字翻译成中文的大写数字
  16. tensorflow输出的人脸图片经过OpenCV write的图片是蓝色的问题的解决方案
  17. ros使用自动驾驶数据集KITTI【1】介绍与可视化
  18. Proteus仿真-步进电机
  19. js通过身份证号获取出生年月日,性别,年龄
  20. 微信小程序识别图片并提取文字_这款微信小程序可以批量图片转文字?识别准确率超高!...

热门文章

  1. C++面试/技巧(四)
  2. 图的表示方法和C++实现
  3. SSD+caffe︱Single Shot MultiBox Detector 目标检测+fine-tuning(二)
  4. 微服务+异步工作流+ Serverless,Netflix 决定弃用稳定运行 7 年的旧平台
  5. 小蜜团队万字长文 | 讲透对话管理模型最新研究进展
  6. 读懂这本书,才算读懂阿里大数据
  7. MaxCompute技术人背后的故事:从ApacheORC到AliORC
  8. 京信通信:数据智能为生产调试“增效瘦身”
  9. 如何在学习机器学习时学习数学?
  10. 披荆斩棘的北森,乘风破浪的HR SaaS