一、前言
MySQL应急响应是指在MySQL数据库遇到故障、入侵或其他紧急情况时,采取的一系列快速、有效的措施,以确保数据库的完整性、安全性和可用性,这里我们主要分析的是日志信息,里面记录黑客入侵的大部份信息。
二、概览
简介
mysql应急响应 ssh账号 root 密码 xjmysql
ssh env.xj.edisec.net -p xxxxx
1.黑客第一次写入的shell flag{关键字符串}
2.黑客反弹shell的ip flag{ip}
3.黑客提权文件的完整路径 md5 flag{md5} 注 /xxx/xxx/xxx/xxx/xxx.xx
4.黑客获取的权限 flag{whoami后的值}
使用Xshell连接靶机;(直接新建或者SSH连接,接着正常输入账户密码即可,这里不再多强调)
连接上靶机,这一个靶场,是mysql应急响应,我们思考一下,既然hacker要在mysql里写入shell,那么首先他一定是先拿下了网站,并上传了shell,第一次写入的shell,我们可以去web目录下查找一番!
1.黑客第一次写入的shell flag{关键字符串}
写入了shell肯定是想要获取目标网站,所以在linux下,/var/www/html/目录下,把html文件直接扔到D盾分析即可;发现是sh.php文件
直接用我之前文章用过的webshell查找命令,来到web目录下
find ./ -name "*.php" | xargs grep "@eval("
flag{ccfda79e-7aa1-4275-bc26-a6189eb9a20b}
2.黑客反弹shell的ip flag{ip}
查看mysql的日志文件,在/var/log/mysql下
这里只有一个error.log文件
查看之后看到有一条很奇怪的信息
在/tmp/目录下上传了一个1.sh的文件,后面则是这个文件引发的一系列错误信息
每行的错误信息,如command not found,指出脚本中的每一行都被解释器当作命令来尝试执行,但由于这些行实际上是HTTP响应的一部分(例如日期、状态信息、长度描述等),shell无法识别并执行它们,从而导致了一系列的错误。
全局查找一下这个文件,还在/var/lib/mysql/下存在
查看文件内容
正是一条反弹shell的命令,hacker的IP也在这文件中
flag{192.168.100.13}
3.黑客提权文件的完整路径 md5 flag{md5} 注 /xxx/xxx/xxx/xxx/xxx.xx
提权我直接猜测为udf提权了,最常用的提权方式
UDF提权说明:
UDF 是什么
UDF(Userdefined function)可翻译为用户自定义函数,其为 mysql 的一个拓展接口,可以为 mysql 增添一些函数。比如 mysql 一些函数没有,我就使用 UDF 加入一些函数进去,那么我就可以在 mysql 中使用这个函数了。
条件:
获取了MySQL控制权:获取到账号密码,并且可以远程连接
获取到的账户具有写入权限,即secure_file_priv值为空
什么情况下需使用mysql提权?
拿到了mysql的权限,但是没拿到mysql所在服务器的任何权限,通过mysql提权,将mysql权限提升到操作系统权限
既然要提权,那黑客肯定知晓了账号密码,而且连接上了,那么我们可以猜想,是不是web目录下有页面泄露了mysql账号密码,回到web目录
find ./ -name "*.php" | xargs grep "root"
xargs:将前面的查询结果作为后面查询的条件,这里的命令是:查询*.php文件里面含有root关键字的文件。
通过匹配root关键字符串,发现common.php文件确实泄露了账号密码
连接一下数据库
show global variables like '%secure%';
查到secure_file_priv字段为空,具有写入权限
在 MySQL 数据库中,自定义函数(UDF, User Defined Functions)提权通常涉及到将恶意的共享库 (.so 文件) 放置到 MySQL 能加载的目录中,以便执行不受信任的代码。这种方法可能会被用于利用数据库系统的特权漏洞。
在 MySQL 中,UDF 共享库文件通常位于以下目录之一:
- MySQL 插件目录 (
plugin_dir
):
-
- 这是 MySQL 配置中的一个参数,指向存放插件和 UDF 共享库的目录。可以通过以下命令查找该目录:
SHOW VARIABLES LIKE 'plugin_dir';
- MySQL 数据目录 (
datadir
):
-
- 这是 MySQL 存放数据库文件的目录,有时也会被用于存放 UDF 共享库文件。可以通过以下命令查找该目录:
SHOW VARIABLES LIKE 'plugin_dir';
进入目录:
这个目录是mysql存放用户自定义函数的,出现了一个udf.so文件,肯定是有人写入了一个自定义函数到库中。
通过md5加密/usr/lib/mysql/plugin/udf.so得到flag
flag{b1818bde4e310f3d23f1005185b973e7}
4.黑客获的权限 flag{whoami后的值}
既然hacker进行了提权,在库中写入了自定义函数,我们去数据库中查询一下
select * from mysql.func;
这个表会查询到新增函数
使用新增的这个函数执行系统命令
select sys_eval('whoami');
得到flag{mysql}