首页 > 数据库 >玄机-第二章日志分析-mysql应急响应

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

时间:2024-07-20 21:40:16浏览次数:14  
标签:文件 提权 flag 黑客 玄机 mysql 日志

目录

前言

这里应急需要知道mysql提权的一些姿势,还有能够提权成功的前提。5金币就当复习一下了。


  • 这里考察的是mysql应急响应,我们应该是根据找flag的需求去就行,但是我做了之后发现没啥用,他这个找的flag顺序其实有问题。我自己就捋顺了一遍后,发现下面这种思路比较适合(新手):
    服务器疑似被入侵,日志中发现有告警,所以我们去分析日志,得到一些信息后,发现黑客可能上传或者写入了websehll,同时在日志中发现黑客还进行了一系列的查询语句,并且发现能够执行系统命令,到这里就要怀疑是否进行了mysql的提权了。
    我的思路就是:
  • 查webshell木马
  • 同时一边分析日志
  • 然后mysql应急

简介

mysql应急响应 ssh账号 root 密码 xjmysql
ssh [email protected] -p 端口号
1.黑客第一次写入的shell flag{关键字符串}
2.黑客反弹shell的ip flag{ip}
3.黑客提权文件的完整路径 md5 flag{md5} 注 /xxx/xxx/xxx/xxx/xxx.xx
4.黑客获取的权限 flag{whoami后的值}

应急开始

准备工作

  • 这里由于需要知道黑客写入的webshell,其实题目中写的不明白不清楚,如果是问:找出黑客写入的webshell,其中藏着flag的内容
    如果是这问的话比较清楚需求一点。

  • 就当他问题问的比较清楚,那我们就需要准备webshell查杀工具。D盾扫一下导出来的web站点文件。
    在这里插入图片描述

  • 其次我们需要了解mysql在Linux中提权知识点
    mysql提权其实很容易就想到udf提权,所以这里可以提前准备好路径:/usr/lib/mysql/plugin/,这个目录下就是一些mysql给用户准备的,放udf文件的目录,将你写好的功能文件进来,就能够像查询语句一样使用你写好的一些功能函数了,这里就是黑客经常用来提权的地方。
    注意,Linux下的udf提权文件后缀名一般是.so结尾,而在windows中的话一般是dll结尾文件。

日志分析

这里我加一个日志分析
首先导出apache的日志:/var/llog/apache2/access.log,

  • 使用360星图进行分析
    在这里插入图片描述
    发现攻击ip是192.168.200.2(其实全是这个ip的日志)
  • 过滤192.168.200.2的日志,由于日志量不是很大,我这里就一条一条得看了,结果发现黑客大概在做:
    • 进行sql注入
    • 执行系统命令
    • 写入反弹shell(这里就是base64解码后发现是反弹shell,反弹的黑客ip也知道了)
      在这里插入图片描述
      在这里插入图片描述

步骤 1

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

  • 我们通过D盾扫描出来的sh.php这个webshell中进行查看即可发现关键字符串。
    在这里插入图片描述

  • flag为:
    flag{ccfda79e-7aa1-4275-bc26-a6189eb9a20b}

步骤 2

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

  • 反弹shell,这里在日志分析中其实就看出来了,黑客通过mysql提权后,使用函数执行系统命令,写入反弹shell,写入到1.sh文件中
    我们要么直接查看1.sh就可以看到黑客ip,要么就是日志中将base64内容进行解码即可。

    • 日志信息为:
      在这里插入图片描述
      在这里插入图片描述
    • 1.sh内容为:
      在这里插入图片描述
      在这里插入图片描述
  • flag为:
    flag{192.168.100.13}

步骤 3

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

  • 提权文件,前面提到过,按照正常逻辑的话,到这里的时候其实就是已经发现黑客可能有通过mysql连接上来,然后进行提权了,所以就要进行mysql应急响应。首要的提权方式就是通过写入udf文件。
  • 直接进入目录:cd /usr/lib/mysql/plugin/
    在这个目录中,我们有可能看不懂哪些是有用哪些是没用,这时候就是问运营了,我们安全人员不可能一个一个的给你分析,这样的话黑客早就到此100游了,不过一般这里也不会有很多的udf文件。
  • 黑客的提权文件是udf.so,这里你就一个一个尝试了,因为我没专门学过,各位道友懂的话就直接看出来了。
    在这里插入图片描述
  • flag为:md5(/usr/lib/mysql/plugin/udf.so)
    flag{b1818bde4e310f3d23f1005185b973e7}

步骤 4

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

首先我们要明白黑客是提权的话,他肯定是知道连接账号和密码,所以我们就要猜他怎么知道的,我们就要去看是不是有东西泄露了密码。

  • 发现在comment.php中泄露了密码,那黑客自然是能够连接上数据库然后尽心提权了。
    用户名:root
    密码:334cc35b3c704593
    连接的数据库名:cms
    在这里插入图片描述

这里就简单了,因为我们知道了黑客是通过那个文件进行提权的,而udf文件是通过在文件中写入某些功能函数,然后使用该函数可以进行提权,甚至可以提权到root,所以我们跟黑客一样使用一下该函数即可。
而该函数的名字我们在日志中也能直接看到黑客是通过该功能函数直接执行了whoami等一系列系统命令, 或者你能够通过mysql中直接查询有哪些函数,查看命令:select * from mysql.func;
在这里插入图片描述
在日志中也是能知道黑客使用了什么函数进行系统命令执行
在这里插入图片描述

  • flag为:
    flag{mysql}
    在这里插入图片描述

总结


成果:
flag{ccfda79e-7aa1-4275-bc26-a6189eb9a20b}

flag{192.168.100.13}

flag{/usr/lib/mysql/plugin/udf.so}
flag{b1818bde4e310f3d23f1005185b973e7}

flag{mysql}


补充mysql中的/var/log/mysql/erro.log

通过本题,我又复习了一遍mysql提权,udf文件自定义功能函数,还有一个就是error.log我们没有注意,看别人wp才发现。
GPT回答如下:
error.log 日志文件中记录上传文件的大小和名字通常属于错误信息警告信息类别。这种日志条目可能由以下原因触发:

  1. 上传文件错误:当文件上传过程中出现错误(例如,文件太大、格式不正确、权限问题等),MySQL 可能会记录这些错误信息。
  2. 安全警告:如果上传的文件触发了安全检查或违反了安全策略,MySQL 可能会将这些警告信息记录到 error.log 中。
  3. 诊断信息:在某些情况下,MySQL 可能会记录详细的诊断信息以帮助管理员调查和解决与文件上传相关的问题。

尽管 MySQL 的 error.log 主要用于记录数据库相关的错误和事件,但某些应用程序或存储过程可能会将文件上传活动的错误或警告信息传递给 MySQL,从而记录在 error.log 中。

如果你看到与文件上传相关的日志条目,具体的类别可能取决于具体的错误或警告上下文。以下是一个示例日志条目,展示了文件上传错误的信息:

2024-07-10T12:34:56.789012Z 1 [ERROR] [MY-012345] [Server] File upload failed: File size exceeds limit. File name: 'example.txt', File size: 10485760 bytes.

在这个示例中,日志条目显示了一个错误(ERROR),指出文件上传失败的原因(文件大小超过限制),并提供了文件名和文件大小的信息。

记录上传文件信息的原因

  • 错误信息:表示在上传过程中发生了错误,需要管理员注意和解决。
  • 警告信息:提醒管理员可能存在潜在的问题,例如上传的文件大小接近限制。
  • 诊断信息:提供详细信息以帮助管理员诊断和解决文件上传相关的问题。

要详细分析这些信息,通常需要查看具体的日志条目内容和上下文,以确定确切的原因和类别。
通过该文件也能定位到1.sh这个反弹shell的文件,这里也能够发现一些黑客的踪迹,所以以后应急mysql的时候不要忘记了,这里又是一个小技巧。

标签:文件,提权,flag,黑客,玄机,mysql,日志
From: https://www.cnblogs.com/dhan/p/18313848

相关文章

  • MySQL数据库MHA实现
    前提:关闭所有机器的防火墙关闭selinux1、主库54从库52/53三台服务器环境mysql8.0.25配置文件:cat>/fan/etc/mysql80/my.cnf<<EOF[mysqld]server_id=54binlog_format=rowdatadir=/fan/data/mysql80/basedir=/fan/softwares/mysql80/port=3308socket=/tmp/mysql330......
  • JAVA零基础小白自学日志——第二十天
    文章目录1.为什么我们需要抽象类2.抽象类3.我们一起来抽象(有病,象也没招你)[1].抽象方法[2].为什么我们先说抽象方法呢?[3].需要明确的4.关于Object的题外话今日提要:抽象类你以为这几天看的内容都是多态?你太小看Java了,咱们来看看真正多态的入门1.为什么我们需要抽......
  • JAVA零基础小白自学日志——第十九天
    文章目录1.private(私有)2.static(静态)3.final(最终)[1].fianl修饰变量[2].fianl修饰方法[3].fianl修饰类[4].为什么需要fianl关键字修饰类和方法4.private\static\final的共同点5.同名变量6.方法重载和方法重写今日提要:private\static\final修饰词;同名变量;方法重载和方法......
  • Day44.MySQL配置文件修改
    1.MySQL配置文件修改_编码问题导致需要修改配置2.MySQL配置文件修改_创建my.ini文件并查看用户登录MySQL是否会执行该文件内容3.MySQL配置文件修改_在my.ini中加入mysql编码配置后,重启mysql服务编码统一即可生效4.MySQL配置文件修改_在my.ini中加入管理员和密码,重启mysql服......
  • MySQL高阶(六)——存储过程
    文章目录6.MySQL高阶——存储过程存储过程数据准备变量定义局部变量实例会话变量-用户变量实例:全局变量实例:会话变量-系统变量实例:存出过程传参存储过程传参-in实例:存储过程传参-out实例:存储过程传参-inout实例:流程控制—判断if判断语句实例:加强case判断实例:......
  • Linux安装MySQL
    一、MySQL安装对于MySQL数据库的安装,我们将要使用第二种安装方式rpm进行安装。那么首先我们了解一下什么是RPM?RPM:全称为Red-HatPackageManager,RPM软件包管理器,是红帽Linux用于管理和安装软件的工具。MySQL数据库的安装,主要的步骤如下:......
  • 帝国CMS网站Fatal error: Call to undefined function mysql_connect() in …
    Fatalerror:Calltoundefinedfunctionmysql_connect()in…解答:你的运行环境问题原因1:你的PHP不支持mysql_connect()函数。PHP是一种模块化的设计,除了核心的内容,其他都是可选的。之所以不支持,是因为在编译PHP时没有加入对MYSQL数据库的支持。原因2:如果你的操作系......
  • Mysql锁机制
    MySQL加锁的原因MySQL加锁的原因主要是为了确保数据库事务的ACID属性,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。原子性(Atomicity):确保事务中的所有操作要么全部完成,要么全部不完成。加锁可以防止多个事务同时修改同一数据,从而避免部分操作......
  • 解决 SpringBoot 应用中 MySQL 时区配置引起的时间不一致问题
    在开发SpringBoot项目时,表中有两个时间字段一个通过Java代码使用newDate()方法获取当前时间再插入数据库另一个是使用MySQL的CURRENT_TIMESTAMP作为默认值实际运行时发现数据库中的这两个时间值不一致,代码插入的时间比数据库自动生成的时间早了8小时,最终发现是y......
  • MySQL数据库 DQL操作
    一、数据库相关概念          1.数据库存储数据的仓库:数据是有组织的进行存储英文:DataBase,简称DB数据库就是将数据存储在硬盘上,可以达到持久化存储的效果2.数据库管理系统:管理数据库的大型软件......