ECSC课堂 | MySQL安全事件排查_自定义函数


数据库是“按照数据结构来组织、存储和管理数据的仓库”。它是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。而MySQL作为一款安全、跨平台、高效的数据库系统,能与PHP、Java等主流编程语言紧密结合。目前MySQL被广泛地应用在Internet上的中小型网站中,因此在应急响应中学会如何对MySQL数据库进行排查具有非常重要的意义。


一、MySQL日志

MySQL的日志主要包含:错误日志、查询日志、慢查询日志、事务日志、中继日志、二进制日志。在MySQL的日志中保存着各种操作的记录,因此在应急响应时有必要对数据库日志进行分析,从而进一步的还原攻|击场景以及追溯攻|击源。


二、MySQL入侵痕迹排查


1、爆破攻|击排查

通过查询日志可以查看到用户尝试连接数据库的信息,倘若存在短时间内出现大量尝试连接数据库的日志信息来判断数据库是否遭受爆破攻|击。

ECSC课堂 | MySQL安全事件排查_自定义函数_02



2、Webshell写入排查

接下来我们来介绍通过数据库获取Webshell常用的两种方式:

(1)日志写入:攻|击者通过修改数据库查询日志的存储路径达到获取Webshell目的。

首先判断查询日志的存储路径配置的函数“general_log_file”的值指向来是否被修改。

ECSC课堂 | MySQL安全事件排查_MySQL_03


再通过分析查询日志中是否存在攻|击者的攻|击信息。

ECSC课堂 | MySQL安全事件排查_自定义函数_04


因此可以通过分析查询日志的存储路径配置以及日志的内容来判断是否被攻|击。

(2)函数写入:攻|击者通过数据库的文件操作函数“into outfile”或“into dumpfile”达到获取Webshell目的。

首先判断“secure_file_priv”函数的值来判断是否具备读写文件权限,当value值为空时即不对读写文件进行限制。


ECSC课堂 | MySQL安全事件排查_数据库_05


再通过分析查询日志中是否存在攻|击者的攻|击信息。


ECSC课堂 | MySQL安全事件排查_MySQL_06

因此可以通过分析查询日志中文件操作函数的使用情况来判断是否被攻|击。


3、UDF提权排查

UDF是MySQL的一个拓展接口,UDF(Userdefined function)可翻译为用户自定义函数,是用来拓展MySQL的技术手段。用户通过自定义函数可以实现在MySQL中无法方便实现的功能,其添加的新函数都可以在SQL语句中调用,利用MySQL的自定义函数功能将MySQL账号转换为SYSTEM权限。

我们可以通过对数据库排查来判断攻|击者是否有进行提权操作行为,具体操作如下。

(1)首先排查是否存在恶意的.dll或.so文件。

ECSC课堂 | MySQL安全事件排查_MySQL_07


(2)再者通过SQL语句【select * from mysql.func】查看是否存在创建的自定义函数。

ECSC课堂 | MySQL安全事件排查_MySQL_08


(3)最后分析查询日志文件中是否有使用创建的自定义函数的记录。

ECSC课堂 | MySQL安全事件排查_MySQL_09


除上述应急响应MySQL数据库排查外,如需了解更加全面的数据库安全事件排查方法以及更多的网络安全技术,敬请关注安胜网络。


更多阅读

ECSC课堂 | Apache安全事件排查

ECSC课堂 | 一文详解 Nginx 日志分析

ECSC课堂 | 如何快速排查克隆账号?干货奉上!