当前位置: 首页 > news >正文

玄机靶场 第二章日志分析-mysql应急响应

第二章日志分析-mysql应急响应

简介

1.黑客第一次写入的shell flag{关键字符串}
2.黑客反弹shell的ip flag{ip}
3.黑客提权文件的完整路径 md5 flag{md5} 注 /xxx/xxx/xxx/xxx/xxx.xx
4.黑客获取的权限 flag{whoami后的值}

首先思考本题目为mysql应急响应,也就是黑客是通过数据库写入的webshell到web目录,所以第一题对应想去web目录下查找webshell,可以手动静态检测特征函数也可使用工具,第二题可以通过netstat查看异常连接或者通过查看日志找一下是否有一场执行的日志。至于提权mysql常见的提权方式是udf提权、mof提权和开机启动脚本,其中最常用的是udf提权,直接连接服务器开干。

flag 1.黑客第一次写入的shell flag{关键字符串}

使用命令查找带特征函数的webhsell文件,通过查看webshell内容获取flag。

find / -name "*.php"|grep xarge grep "eval("

在这里插入图片描述

2.黑客反弹shell的ip flag{ip}

查看mysql日志,日志路径为/var/log/mysql路径下。只有一个error.log文件,查看发现一条奇怪的日志。
在/tmp/目录下上传了一个1.sh的文件,后面则是这个文件引发的一系列错误信息

每行的错误信息,如command not found,指出脚本中的每一行都被解释器当作命令来尝试执行,但由于这些行实际上是HTTP响应的一部分(例如日期、状态信息、长度描述等),shell无法识别并执行它们,从而导致了一系列的错误。

在这里插入图片描述
查看文件内容发现反弹shell地址

在这里插入图片描述

flag 3.黑客提权文件的完整路径 md5 flag{md5} 注 /xxx/xxx/xxx/xxx/xxx.xx

上面说过mysql提权方式主要有三种
udf提权(常用)
mof提权
开机启动脚本(启动项提权)
提权目的:mysql权限 —> 操作系统权限

UDF提权

有时候我们通过一些方式获取了目标主机mysql的用户名和密码,并且可以远程连接。我们远程登录上了mysql服务器,这时,我们想通过mysql来执行系统命令,此时我们可以考虑使用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的值为空。
什么情况下需使用mysql提权?

拿到了mysql的权限,但是没拿到mysql所在服务器的任何权限,通过mysql提权,将mysql权限提升到操作系统权限
ps:mysql提权获取到的权限大小跟运行mysql所在服务器登录的账号的权限相关,如操作系统以普通用户登录的并启动mysql,经udf提权后也只能获取到系统的普通用户权限。而使用管理员登录操作系统运行mysql,提权后获取的权限则为系统管理员权限。

手动提取

  1. 查看mysql是否有写入文件的权限
 show global variables like '%secure%';

secure_file_priv是用来限制load dumpfile、into outfile、load_file()函数在哪个目录下拥有上传和读取文件的权限。如下关于secure_file_priv的配置介绍

secure_file_priv的值为null ,表示限制mysqld 不允许导入|导出
当secure_file_priv的值为/tmp/ ,表示限制mysqld 的导入|导出只能发生在/tmp/目录下
当secure_file_priv的值没有具体值时,表示不对mysqld 的导入|导出做限制
如下,代表mysql有写入的权限
在这里插入图片描述

科普完毕我们需要进入数据库,在数据库的配置文件中没有找到
我们来还原一下被攻击的场景,黑客是如何拿到我们服务器的 shell 的呢,他做过反弹 shell 的操作,并且做过提权操作,既然是从数据库权限提权到主机用户权限,那肯定是通过数据库服务打过来的

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

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

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

在这里插入图片描述

flag 4.黑客获取的权限 flag{whoami后的值}

通过使用ps -aux查看
既然hacker进行了提权,在库中写入了自定义函数,我们去数据库中查询一下

select * from mysql_func;

这个表会查询到新增函数

使用新增的这个函数执行系统命令

select sys_eval('whoami');

得到flag falg{mysql}

在这里插入图片描述

参考文章:

https://blog.csdn.net/yujiahui0203/article/details/139074400?ops_request_misc=&request_id=&biz_id=102&utm_term=%E7%8E%84%E6%9C%BAmysql%E5%BA%94%E6%80%A5%E5%93%8D%E5%BA%94&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-0-139074400.142^v100^pc_search_result_base8&spm=1018.2226.3001.4187
https://blog.csdn.net/JACKBREAK/article/details/139037618?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171755146016800215039351%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=171755146016800215039351&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-3-139037618-null-null.142^v100^pc_search_result_base8&utm_term=%E7%8E%84%E6%9C%BAmysql%E5%BA%94%E6%80%A5%E5%93%8D%E5%BA%94&spm=1018.2226.3001.4187

相关文章:

  • 【运维】如何更换Ubuntu默认的Python版本,update-alternatives如何使用
  • 【设计模式深度剖析】【3】【行为型】【职责链模式】| 以购物中心客户服务流程为例加深理解
  • leetcode hot100 之 最长公共子序列
  • 工作总结1
  • 苹果WWDC 2024 带来的 AI 风暴:从生产力工具到个人助理,AI 将如何融入我们的生活?
  • Kotlin 委托
  • 面试Flask需要知道的知识点1
  • 【目标检测】基于深度学习的车牌识别管理系统(含UI界面)【python源码+Pyqt5界面 MX_002期】
  • 【Nginx系列】基于请求头的分发
  • Linux fallocate工具用于预分配或释放文件空间的块
  • 【qt】项目移植
  • pdf添加书签的软件,分享3个实用的软件!
  • LLVM Cpu0 新后端6
  • 【HarmonyOS】HUAWEI DevEco Studio 下载地址汇总
  • SQL学习小记(六)将数据库中表为NULL的地方补上需要的值
  • NSSCTF中的popchains、level-up、 What is Web、 Interesting_http、 BabyUpload
  • 防火墙安全管理
  • 【数据分析基础】实验一 Python运算符、内置函数、序列基本用法
  • RabbitMQ 见解一
  • go语言后端开发学习(一)——JWT的介绍以及基于JWT实现登录验证
  • 山大齐鲁医院护士论文现“男性确诊子宫肌瘤”,院方称将核实
  • 科普|治疗腰椎间盘突出症,筋骨平衡理论如何提供新视角?
  • 李学明谈笔墨返乡:既耕春圃,念兹乡土
  • 长三角铁路今日预计发送386万人次,沪宁、沪杭等方向尚有余票
  • 美国加州州长:加州继续对中国“敞开贸易大门”
  • 英国传统两党受挫地方选举后反思,改革党异军突起“突破想象”