玄机-第二章日志分析-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后的值}

查找hacker第一次写入的shell

登入主机

在 /var/log/mysql/ 路径下只存在一个 error.log 日志

我们要找出黑客写入的 shell,我们思考一下,黑客通过数据库去写入 shell 目的是不是要拿到 webshell 呢,那么服务器的网站目录下是不是肯定会被写入 webshell

河马查杀 /var/www/html

找到一句话后门

shell 下面的注释就是 flag {ccfda79e-7aa1-4275-bc26-a6189eb9a20b}

查找黑客反弹 shell 的 IP 地址

在 error.log 日中有一段非常可疑的错误日志信息

/tmp/1.sh: line 1: --2023-08-01: command not found
/tmp/1.sh: line 2: Connecting: command not found
/tmp/1.sh: line 3: HTTP: command not found
/tmp/1.sh: line 4: Length:: command not found
/tmp/1.sh: line 5: Saving: command not found
/tmp/1.sh: line 7: 0K: command not found
/tmp/1.sh: line 9: syntax error near unexpected token `('
/tmp/1.sh: line 9: `2023-08-01 02:16:35 (5.01 MB/s) - '1.sh' saved [43/43]'
 
//这段日志表明有人尝试在MySQL服务器上执行一个位于/tmp/1.sh的shell脚本,但是该脚本的内容并非有效的shell命令或脚本格式,而是看起来像HTTP响应或者是一个下载日志的内容。每行的错误信息,如command not found,指出脚本中的每一行都被解释器当作命令来尝试执行,但由于这些行实际上是HTTP响应的一部分(例如日期、状态信息、长度描述等),shell无法识别并执行它们,从而导致了一系列的错误。

 我们查看这个 1.sh 的内容,发现它是一条反弹 shell 的命令,这不就是黑客的反弹 shell 地址吗,但是从日志来看这里并没有反弹成功

flag{192.168.100.13}

这个文件同时也还存在于 /var/lib/mysql/1.sh 目录下

 查找黑客提权的完整路径

我们来还原一下被攻击的场景,黑客是如何拿到我们服务器的 shell 的呢,他做过反弹 shell 的操作,并且做过提权操作,既然是从数据库权限提权到主机用户权限,那肯定是通过数据库服务打过来的

那可不可能是网站目录下有什么配置文件泄露了数据库的账号密码,让黑客远程登录了数据库再进行了提权和反弹 shell 的一系列操作呢

在 /var/www/html 目录下存在一个 common.php 文件,那么黑客应该是通过对网站进行目录探测的时候发现了此文件,恰好此文件还泄露了数据库的账号和密码,那么他的常规操作肯定是远程连接上了数据库后再从数据库作为切入点进行提权,mysql 的常见提权方式就是 UDF 提权

UDF 提权
UDF 是什么

UDF(Userdefined function)可翻译为用户自定义函数,其为 mysql 的一个拓展接口,可以为 mysql 增添一些函数。比如 mysql 一些函数没有,我就使用 UDF 加入一些函数进去,那么我就可以在 mysql 中使用这个函数了。

使用过 MySQL 的人都知道,MySQL 有很多内置函数提供给使用者,包括字符串函数、数值函数、日期和时间函数等,给开发人员和使用者带来了很多方便。MySQL 的内置函数虽然丰富,但毕竟不能满足所有人的需要,有时候我们需要对表中的数据进行一些处理而内置函数不能满足需要的时候,就需要对 MySQL 进行一些扩展,幸运的是,MySQL 给使用者提供了添加新函数的机制,这种使用者自行添加的 MySQL 函数就称为 UDF (User Define Function)。

UDF 提权有哪些条件
  • 获取 mysql 控制权限:知道 mysql 用户名和密码,并且可以远程登录(即获取了 mysql 数据库的权限)
  • mysql 具有写入文件的权限:mysql 有写入文件的权限,即 secure_file_priv 的值为空
什么情况下需要 UDF 提权
  • 拿到了 mysql 的权限,但是没拿到 mysql 所在服务器的任何权限,通过 mysql 提权,将 mysql 权限提升到操作系统权限
查看我们数据库的情况

连接上我们数据库的终端

root@xuanji:/var/lib/mysql/mysql# mysql -u root -p334cc35b3c704593 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2
Server version: 5.5.64-MariaDB-1ubuntu0.14.04.1 (Ubuntu)
 
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
 
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

查看我们的 mysql 是否有写文件权限

show global variables like '%secure%';

 确实符合要求,前面泄露的账号密码也刚好是 root 权限

也就是说黑客如果进行了 UDF 提权肯定会在 /usr/lib/mysql/plugin/ 路径下留下攻击痕迹

我们来到 /usr/lib/mysql/plugin/ 路径下查看确实看到了 udf.so

注:
/usr/lib/mysql/plugin/ 目录是MySQL用来存放用户定义函数(UDF, User Defined Function)动态链接库文件的地方。一个名为udf.so的文件出现在此目录下,表明有人安装了一个自定义函数到MySQL服务器中。
这个自定函数就是用来被调用执行命令的

也就是说提权文件的完整路径为 /usr/lib/mysql/plugin/udf.so 

md5 加密路径后 flag {b1818bde4e310f3d23f1005185b973e7}

黑客提权后获取的权限

ps -aux 查看进程的详细信息

 进程显示 MySQL 服务器进程正在运行,它于 12:10 启动,使用了指定的配置目录、数据目录和插件目录,那个目录不就是 UDF 提权使用的目录吗,所以提权后的权限为 mysql,flag {mysql}

参考文章

 

https://xz.aliyun.com/t/13680?time__1311=mqmxnQ0Qex2iD%2FD0DkGk8Dkm%3DmCrDWwD&alichlgref=https%3A%2F%2Fcn.bing.com%2F#toc-3
 
https://nlrvana.github.io/%E7%AC%AC%E4%BA%8C%E7%AB%A0-%E6%97%A5%E5%BF%97%E5%88%86%E6%9E%90-mysql%E5%BA%94%E6%80%A5%E5%93%8D%E5%BA%94/
 
https://blog.csdn.net/qq_44159028/article/details/121193134
 

 

 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值