当前位置: 首页 > 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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Spring Boot 集成 zxing 生成条形码与二维码
  • 23.在游戏中按下Home键呼出辅助窗口
  • 【C++类和对象中篇】(构造函数和析构函数)
  • 【设计模式深度剖析】【4】【行为型】【策略模式】
  • 如何使用最简单、通俗地理解Python的函数呢?
  • iOS 之homebrew ruby cocoapods 安装
  • 解密Spring Boot:深入理解条件装配与条件注解
  • java+Vue +Spring boot技术开发的UWB高精度定位技术系统源码 uwb定位系统+基站定位
  • ABC351
  • 上心师傅的思路分享(三)--Nacos渗透
  • adb多设备多屏幕调试
  • yarn保姆级安装和使用
  • 实战:部署三台kafka服务集群
  • Linux 内核参数-相关介绍
  • 力扣刷题--728. 自除数【简单】
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • AzureCon上微软宣布了哪些容器相关的重磅消息
  • Js基础知识(一) - 变量
  • Less 日常用法
  • session共享问题解决方案
  • Spring-boot 启动时碰到的错误
  • vue2.0项目引入element-ui
  • 初识 beanstalkd
  • 动手做个聊天室,前端工程师百无聊赖的人生
  • 聊聊redis的数据结构的应用
  • 使用 Xcode 的 Target 区分开发和生产环境
  • 网络应用优化——时延与带宽
  • 文本多行溢出显示...之最后一行不到行尾的解决
  • 我的业余项目总结
  • 一份游戏开发学习路线
  • 异步
  • 智能合约Solidity教程-事件和日志(一)
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​低代码平台的核心价值与优势
  • (1)Android开发优化---------UI优化
  • (1)STL算法之遍历容器
  • (arch)linux 转换文件编码格式
  • (PWM呼吸灯)合泰开发板HT66F2390-----点灯大师
  • (附源码)ssm航空客运订票系统 毕业设计 141612
  • (更新)A股上市公司华证ESG评级得分稳健性校验ESG得分年均值中位数(2009-2023年.12)
  • (回溯) LeetCode 78. 子集
  • (十)c52学习之旅-定时器实验
  • (详细文档!)javaswing图书管理系统+mysql数据库
  • (轉貼) 蒼井そら挑戰筋肉擂台 (Misc)
  • ***微信公众号支付+微信H5支付+微信扫码支付+小程序支付+APP微信支付解决方案总结...
  • .bat批处理(六):替换字符串中匹配的子串
  • .libPaths()设置包加载目录
  • .net core 外观者设计模式 实现,多种支付选择
  • .NET DevOps 接入指南 | 1. GitLab 安装
  • .NET Framework 3.5安装教程
  • .net MySql
  • .net知识和学习方法系列(二十一)CLR-枚举
  • @AliasFor注解
  • @reference注解_Dubbo配置参考手册之dubbo:reference