玄机应急:Apache日志分析&Mysql应急&Redis应急

目录

第二章:Linux的Apache日志分析

1、提交当天访问次数最多的IP,即黑客IP

2、黑客使用的浏览器指纹是什么,提交指纹的md5

3、查看index.php页面被访问的次数,提交次数:

4、查看黑客IP访问了多少次,提交次数:

5、查看2023年8月03日8时这一个小时内有多少IP访问,提交次数

第二章:MySQL的应急响应:

[1.黑客第一次写入的shell flag{关键字符串}](#1.黑客第一次写入的shell flag{关键字符串})

[2.黑客反弹shell的ip flag{ip}](#2.黑客反弹shell的ip flag{ip})

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

[4.黑客获取的权限 flag{whoami后的值}](#4.黑客获取的权限 flag{whoami后的值})

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

[1.通过本地 PC SSH到服务器并且分析黑客攻击成功的 IP 为多少,将黑客 IP 作为 FLAG 提交](#1.通过本地 PC SSH到服务器并且分析黑客攻击成功的 IP 为多少,将黑客 IP 作为 FLAG 提交)

[2.通过本地 PC SSH到服务器并且分析黑客第一次上传的恶意文件,将黑客上传的恶意文件里面的 FLAG 提交;](#2.通过本地 PC SSH到服务器并且分析黑客第一次上传的恶意文件,将黑客上传的恶意文件里面的 FLAG 提交;)

[3.通过本地 PC SSH到服务器并且分析黑客反弹 shell 的IP 为多少,将反弹 shell 的IP 作为 FLAG 提交;](#3.通过本地 PC SSH到服务器并且分析黑客反弹 shell 的IP 为多少,将反弹 shell 的IP 作为 FLAG 提交;)

[4.通过本地 PC SSH到服务器并且溯源分析黑客的用户名,并且找到黑客使用的工具里的关键字符串(flag{黑客的用户-关键字符串} 注关键字符串 xxx-xxx-xxx)。将用户名和关键字符串作为 FLAG提交](#4.通过本地 PC SSH到服务器并且溯源分析黑客的用户名,并且找到黑客使用的工具里的关键字符串(flag{黑客的用户-关键字符串} 注关键字符串 xxx-xxx-xxx)。将用户名和关键字符串作为 FLAG提交)

[5.通过本地 PC SSH到服务器并且分析黑客篡改的命令,将黑客篡改的命令里面的关键字符串作为 FLAG 提交;](#5.通过本地 PC SSH到服务器并且分析黑客篡改的命令,将黑客篡改的命令里面的关键字符串作为 FLAG 提交;)


第二章:Linux的Apache日志分析

先来介绍一下什么是Linux的Apache日志:

‌Linux的Apache日志是记录Apache服务器活动的文件‌。主要分为访问日志和错误日志两类:

‌1.访问日志‌:记录客户端的访问信息,如IP地址、请求时间、请求方法、URL等,默认文件名为access_log,可通过CustomLog参数设置其位置和文件名‌。

‌2.错误日志‌:记录Apache启动和运行时产生的错误信息,默认文件名为error_log,可通过ErrorLog参数进行设置‌。
Linux系统中,这些日志文件通常存储在/var/log/apache2/或/var/log/httpd/目录下‌,管理员可以使用cat、tail、grep、awk等命令行工具查看和分析日志内容,以了解服务器运行状态、客户端访问情况及排查问题‌,同时,Apache的配置文件中也包含了日志文件的位置信息,可通过查看配置文件找到日志文件的确切路径‌

开启环境,直接连上Xshell

1、提交当天访问次数最多的IP,即黑客IP

直接在日志中筛选ssh登录信息:

Apache日志一般在:/var/log/auth.log.1

复制代码
grep 'sshd' /var/log/auth.log.1

发现大量的相同IP,提交一下试试

复制代码
flag{192.168.200.2}

2、黑客使用的浏览器指纹是什么,提交指纹的md5

黑客IP已经知道,直接在日志中筛选黑客IP的请求数据

首先先进入网站目录,再在日志中筛选访问数据

复制代码
cd /var/log/apache2
cat access.log.1 |grep 192.168.200.2 |more

命令解析:

  1. **cat access.log.1**‌:

    • cat 是一个命令,用于连接文件并打印到标准输出设备上(通常是终端或屏幕)。
    • access.log.1cat 命令要读取和打印内容的文件名。这个文件可能是一个访问日志,记录了某个服务(如 Web 服务器)的访问记录。
  2. ‌**|(管道)**‌:

    • 管道符号 | 用于将前一个命令的输出作为后一个命令的输入。
    • 在这个命令串中,cat 命令的输出(即 access.log.1 文件的内容)被传递给 grep 命令。
  3. ‌**grep 192.168.200.2**‌:

    • grep 是一个命令,用于在文本中搜索特定的字符串或模式。
    • 192.168.200.2grep 命令要搜索的字符串,这里是一个 IP 地址。
    • grep 会从它的输入(在这个例子中是 cat 命令的输出)中查找所有包含 192.168.200.2 字符串的行,并将这些行输出。
  4. ‌**| more**‌:

    • 再次使用管道符号 |,将 grep 命令的输出传递给 more 命令。
    • more 是一个命令,用于分页显示文本。当输出内容很多时,more 命令会暂停显示,并等待用户输入命令来继续显示下一页或退出。
    • 在这个上下文中,more 命令允许用户逐页查看 grep 命令找到的所有包含 192.168.200.2 字符串的行

在这个日志中发现了黑客的浏览器指纹

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36

将其进行MD5加密:MD5 在线加密工具 | 菜鸟工具 (jyshare.com)

复制代码
flag{2d6330f380f44ac20f3a02eed0958f66}

3、查看index.php页面被访问的次数,提交次数:

wc -l 查看次数, 筛选一下

复制代码
cat access.log.1 | grep "/index.php" | wc -l

命令解析:

  1. cat access.log.1

    这个命令使用cat工具来显示access.log.1文件的内容。cat是concatenate(连接)的缩写,但在这里它被用来简单地输出文件的内容到标准输出(通常是终端屏幕)。

  2. | grep "/index.php"

    管道符号|cat命令的输出传递给grep工具。grep是一个文本搜索工具,用于搜索包含指定模式的行。在这里,/index.php是搜索模式,意味着grep会输出所有包含/index.php文本的行。这些行通常是访问日志中请求/index.php页面的记录。

  3. | wc -l

    再次使用管道符号将grep的输出传递给wc工具。wc是一个用于计算字数的程序,但在这里我们使用-l选项来告诉它只计算行数。因此,wc -l会输出一个数字,表示grep找到的包含/index.php的行数

复制代码
flag{27}

4、查看黑客IP访问了多少次,提交次数:

三种方式:选其一即可(在日志中筛选黑客IP访问的次数)

复制代码
cat access.log.1 | grep 192.168.200.2 | wc -l

cat access.log.1 | grep 192.168.200.2 | cut -d' ' -f1 | sort | uniq -c

grep 192.168.200.2 access.log.1 | cut -d' ' -f1 | sort | uniq -c

命令解析:

  1. grep 192.168.200.2 access.log.1

    这个命令使用grep工具在access.log.1文件中搜索包含192.168.200.2的行。grep会输出所有包含这个IP地址的日志条目。

  2. | cut -d' ' -f1

    管道符号|grep命令的输出传递给cut工具。cut用于按列分割文本,这里使用-d' '指定空格作为字段分隔符,-f1指定提取第一个字段,即每行的第一个空格分隔的部分。在标准的Apache访问日志格式中,这通常是IP地址。但是,如果日志格式有所不同,或者如果IP地址后面紧跟着其他信息而没有空格分隔,这个命令可能不会按预期工作。

  3. | sort

    再次使用管道符号将cut的输出传递给sort工具。sort会对输入进行排序,默认情况下是按字典顺序(即ASCII顺序)排序。在这个上下文中,它会对提取出的IP地址进行排序,但由于我们实际上只关心一个特定的IP地址,这个排序步骤可能是多余的。

  4. | uniq -c

    最后,使用uniq工具来统计每个唯一行的出现次数。-c选项会在每个唯一行的前面加上一个计数。在这个特定的命令中,由于我们之前已经使用grep过滤了特定的IP地址,并且(理论上)cut只提取了IP地址,所以uniq -c应该会为这个特定的IP地址返回一个计数,表示它在日志中出现的次数。

发现访问了6555次

复制代码
flag{6555}

5、查看2023年8月03日8时这一个小时内有多少IP访问,提交次数

筛选这个时间段内的IP,也是有三种筛选方式,任选其一即可

复制代码
cat access.log.1 | grep 03/Aug/2023:08: | awk '{print $1}' | sort -nr| uniq -c | wc -l

cat access.log.1 | grep 03/Aug/2023:08: | awk '{print $1}' | sort -nr| uniq -c

grep 03/Aug/2023:08: access.log.1 | awk '{print $1}' | sort -nr | uniq -c | wc -l

命令解析:

  1. grep 03/Aug/2023:08: access.log.1

    这个命令使用grep工具在access.log.1文件中搜索包含03/Aug/2023:08的行。这意味着它会找到所有在该日期和时间(具体到小时)发生的请求记录。

  2. | awk '{print $1}'

    管道符号|grep命令的输出传递给awk工具。awk是一个强大的文本处理工具,这里使用它来打印每行的第一个字段,通常这是日志中的IP地址。

  3. | sort -nr

    再次使用管道符号将awk的输出传递给sort工具。-n选项告诉sort以数值顺序排序,而-r选项则指定逆序(从大到小)。在这个上下文中,它可能是对IP地址进行排序,但由于IP地址不是纯数字,这个排序可能不是按预期进行的。通常,对IP地址排序需要更复杂的处理。

  4. | uniq -c

    接下来,使用uniq工具来统计每个唯一IP地址的出现次数。-c选项会在每个唯一行的前面加上一个计数。

  5. | wc -l

    最后,使用wc工具的-l选项来计算行数。在这个上下文中,它实际上是在计算唯一IP地址的数量,因为uniq -c已经为每个唯一IP地址生成了一行。

这里我选的第三种方式

发现5次

复制代码
flag{5}

第二章:MySQL的应急响应:

先来介绍一下什么是MySQL:

‌MySQL是一种开源的关系型数据库管理系统(RDBMS)‌,它使用结构化查询语言(SQL)进行数据库管理。

一些MySQL特点:

‌1.开源特性‌:MySQL是开放源代码的,任何人都可以在GPL许可下下载并修改。

‌2.关系型数据库‌:数据保存在不同的表中,提高了速度和灵活性。

‌3.SQL语言‌:使用最常用的数据库管理语言SQL进行数据操作。

‌4.广泛应用‌:MySQL是最流行的RDBMS之一,特别在WEB应用方面表现出色。

‌5.高性能‌:优化了SQL查询算法,支持多线程,充分利用CPU资源。

‌6.多语言支持‌:提供多种语言支持,包括中文、日文等。

‌7.跨平台性‌:使用C和C++编写,源代码可移植性强。

MySQL因其速度、可靠性和适应性而广受好评,是许多中小型和大型网站的首选数据库‌

开启环境,直接连上Xshell

在开始之前,先介绍一下MySQL的常见提权函数

MySQL常见提权函数:

利用INTO OUTFILE 写入文件:SELECT '' INTO OUTFILE '/var/www/html/shell.php';

利用 LOAD_FILE 读取文件:SELECT LOAD_FILE('/etc/passwd');

以及利用 UDF来写入自定义函数进行提权
MySQL的默认插件目录:/usr/lib/mysql/plugin/

攻击者一般将UDF提权放在默认插件目录,因为其目录有权限加载和执行该目录中的共享库文件。件必须放置在 MySQL 的插件目录中,才能被 MySQL 识别和加载。由于 MySQL 服务运行时需要访问插件目录,通常该目录的权限设置相对宽松,允许 MySQL 服务有读写权限

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

老样子查找可疑文件:

复制代码
cd /var/www/html

find ./ type f -name "*.jsp" | xargs grep "exec("

find ./ type f -name "*.php" | xargs grep "eval("

find ./ type f -name "*.asp" | xargs grep "execute("

find ./ type f -name "*.aspx" | xargs grep "eval("

命令解析:

  1. find ./ type f -name "*.php"

    这个命令使用find工具在当前目录(./)及其所有子目录中搜索文件。type f指定只查找文件(而不是目录或其他类型的文件系统对象)。-name "*.php"是一个条件,指定只匹配文件名以.php结尾的文件。因此,这个命令会输出所有符合条件的文件的路径。

  2. | xargs grep "eval("

    管道符号|find命令的输出传递给xargs工具。xargs用于构建并执行命令行,它将从标准输入接收到的数据作为参数传递给指定的命令。在这里,xargsfind找到的每个文件路径作为参数传递给grep命令。

发现 sh.php 查看

复制代码
cat ./sh.php

其实这里还有另一种方式,通过Xshell的FTP,将这个根目录下载到本地,通过D盾扫描,也可以看到webshell

复制代码
flag{ccfda79e-7aa1-4275-bc26-a6189eb9a20b}

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

因为本题是关于Mysql的应急,一般思路是先看数据库信息,先进入数据库目录

复制代码
cd /var/log/mysql/

正好发现一个error.log ,查看

复制代码
cat error.log

在往下翻时,发现一个1.sh被保存了,不知道这个是什么文件,直接查找分析

复制代码
 find / -name "1.sh"

查看这个文件

复制代码
cat /tmp/1.sh

发现这是一个反弹shell,直接提交即可

复制代码
flag{192.168.100.13}

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

进入网站的根目录,查看是否能发现密码:

复制代码
cd /var/www/html
find ./ -name "*.php" | xargs grep "root"

命令解析:

  1. find ./ -name "*.php"

    这个命令使用find工具在当前目录(./)及其所有子目录中搜索文件。-name "*.php"是一个条件,指定只匹配文件名以.php结尾的文件。因此,这个命令会输出所有符合条件的文件的路径。

  2. | xargs grep "root"

    管道符号|find命令的输出传递给xargs工具。xargs用于构建并执行命令行,它将从标准输入接收到的数据(在这里是find命令输出的文件路径列表)作为参数传递给grep命令。

    grep "root"是搜索命令,用于在每个文件中搜索包含字符串root的行。grep会输出所有包含该字符串的行,前面会带有它们所在文件的路径,以便你知道每个匹配项来自哪个文件。

发现账号密码

连接数据库:

复制代码
mysql -uroot -p334cc35b3c704593

查看MySQL配置,因为是要找提权文件,当然先看MySQL配置

复制代码
show global variables like '%secure%';

发现**secure_file_priv为空,这很有可能造成UDF提权**

secure_file_priv 变量用于限制 MySQL 服务进程访问文件系统的能力。具体来说,它定义了允许 LOAD DATA 和 SELECT ... INTO OUTFILE 操作的路径。如果这个变量为空,表示 MySQL 可以访问服务器上的任何路径,没有任何限制。

UDF提权:

UDF 提权是利用 MySQL 的用户定义函数进行权限提升的攻击方法。攻击者可以编写恶意的 UDF 插件,并将其加载到 MySQL 中,从而执行系统级别的命令

一般来说进行UDF提权时,一般会将恶意函数写入到MySQL的默认插件中去,那么看一下MySQL默认插件目录

MySQL的默认插件目录:

复制代码
cd /usr/lib/mysql/plugin/

查看权限:

复制代码
ls -la

发现udf.so,不用想,这应该是写入的提权文件

查看一下这个文件

复制代码
cat udf.so

发现这是一个一句话木马

拼接路径加密

/usr/lib/mysql/plugin/udf.so

复制代码
flag{b1818bde4e310f3d23f1005185b973e7}

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

题目让我们找黑客获取的权限,因为进行了UDF提权,肯定写入了自定义函数

我们去数据库中查询一下新增的函数有那些

还是先登录进去数据库

复制代码
mysql -uroot -p334cc35b3c704593

查询新增函数:

复制代码
SELECT * FROM mysql.func;

发现了 sys_eval 就是新增的函数

我们直接用这个函数去执行命令

复制代码
select sys_eval('whoami');
复制代码
flag{mysql}

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

先来介绍一下什么是Redis

Redis是一个开源的、内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。Redis 支持多种数据结构,如字符串(strings)、散列(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets)与范围查询、bitmaps、hyperloglogs 和 地理空间(geospatial)索引半径查询。

以下是 Redis 的一些关键特性:

‌1.速度快‌:由于 Redis 是基于内存的,并且使用了高效的数据结构,因此读写速度非常快。

‌原子性‌:Redis 的所有命令都是原子性的,这意味着它们会被完整地执行,而不会在执行过程中被其他命令中断。

‌2.丰富的数据类型‌:Redis 支持多种基本和高级的数据结构,这使得它能够灵活地处理各种类型的数据。

‌3.持久性‌:Redis 支持两种持久化机制:RDB(快照)和 AOF(Append-only file)。RDB 持久化会定期生成数据快照,而 AOF 则会记录每次写操作,以便在服务器重启时重建数据。

‌发布/订阅‌:Redis 提供了发布/订阅功能,允许消息在多个客户端之间进行广播。

‌4.Lua 脚本‌:Redis 支持通过 Lua 脚本来执行一系列的操作,这可以实现更复杂的逻辑和事务性操作。

‌5.事务‌:Redis 支持通过 MULTI、EXEC、DISCARD 和 WATCH 命令来实现事务操作。

‌高可用性‌:Redis 支持主从复制和自动故障转移,以提高数据的可用性和可靠性。Redis Sentinel 和 Redis Cluster 提供了更高级的高可用性和可扩展性解决方案。

‌6.广泛的客户端支持‌:Redis 有多种语言的客户端库,使得它可以在多种编程环境中轻松使用。

7.Redis 通常被用于需要快速访问和修改数据的场景,如缓存、会话存储、实时分析等。由于其高性能和丰富的功能集,Redis 已经成为许多现代应用程序中不可或缺的一部分。

开启环境,连上Xshell

1.通过本地 PC SSH到服务器并且分析黑客攻击成功的 IP 为多少,将黑客 IP 作为 FLAG 提交

题目是Redis应急,一般要查找Redis的日志进行分析

查看Redis日志

复制代码
cat /var/log/redis.log

发现了大量的这个IP,提示连接错误,这应该不是要我们找的成功连接的IP

继续往下找,发现了一个没有报错的

尝试提交一下

复制代码
flag{192.168.100.20}

2.通过本地 PC SSH到服务器并且分析黑客第一次上传的恶意文件,将黑客上传的恶意文件里面的 FLAG 提交;

恶意脚本一般会在Redis 的数据目录或临时目录中生成,查找一下

复制代码
grep "Module 'system' loaded from" /var/log/redis.log

命令解析:

  1. ‌**grep**‌:这是一个在文本文件中搜索特定模式的命令行工具。当找到匹配的行时,它会输出那些行到标准输出(通常是终端或屏幕)。

  2. ‌**"Module 'system' loaded from"** ‌:这是 grep 命令要搜索的字符串模式。在这个例子中,模式是 Module 'system' loaded from,意味着 grep 会查找所有包含这个确切字符串的行。

  3. ‌**/var/log/redis.log** ‌:这是 grep 命令要搜索的文件路径。/var/log/redis.log 通常是 Redis 数据库服务的日志文件,其中记录了 Redis 的运行信息、错误、警告和其他重要事件。

当执行这个命令时,grep 会打开 /var/log/redis.log 文件,并逐行读取内容,查找所有包含 Module 'system' loaded from 字符串的行。每当找到一个匹配项时,grep 就会将该行输出到终端。

发现了一个exp.so,那么根据这个分析一下

查询恶意文件在哪:

复制代码
find / -name exp.so

查看这个恶意脚本:

复制代码
cat /exp.so

发现大量的字符串,肯定不好找flag,

那么在文件中定位字符:

复制代码
strings /exp.so | grep "flag"
复制代码
flag{XJ_78f012d7-42fc-49a8-8a8c-e74c87ea109b}

3.通过本地 PC SSH到服务器并且分析黑客反弹 shell 的IP 为多少,将反弹 shell 的IP 作为 FLAG 提交;

黑客进行了反弹shell,一般来说配置了持久化,可以从计划任务,开机启动服务等等方面来查找

查看计划任务:

复制代码
crontab -l
复制代码
flag{192.168.100.13}

4.通过本地 PC SSH到服务器并且溯源分析黑客的用户名,并且找到黑客使用的工具里的关键字符串(flag{黑客的用户-关键字符串} 注关键字符串 xxx-xxx-xxx)。将用户名和关键字符串作为 FLAG提交

黑客ssh到服务器有两种方式,一种是密码验证,一种是公钥验证

那么查看公钥文件

复制代码
cat /root/.ssh/authorized_keys 

这个应该是用户名,但是还要找工具,那么直接在百度里搜

最后拼接flag即可

复制代码
flag{xj-test-user-wow-you-find-flag}

5.通过本地 PC SSH到服务器并且分析黑客篡改的命令,将黑客篡改的命令里面的关键字符串作为 FLAG 提交;

查日志:cat /var/log/auth.log

查历史命令:history

定时任务:crontab -l

启动项(如/etc/init.d、/etc/systemd/system)

检查系统路径中的命令:/bin、/sbin、/usr/bin等目录下的命令,确保与之前一致

最后在/usr/bin 中发现一个高权限命令

复制代码
cd /usr/bin
ls -la

查看一下

复制代码
cat ps

猜测下面的应该是flag

提交

复制代码
flag{c195i2923381905517d818e313792d196}
相关推荐
用户962377954484 天前
VulnHub DC-3 靶机渗透测试笔记
安全
叶落阁主5 天前
Tailscale 完全指南:从入门到私有 DERP 部署
运维·安全·远程工作
用户962377954487 天前
DVWA 靶场实验报告 (High Level)
安全
数据智能老司机7 天前
用于进攻性网络安全的智能体 AI——在 n8n 中构建你的第一个 AI 工作流
人工智能·安全·agent
数据智能老司机7 天前
用于进攻性网络安全的智能体 AI——智能体 AI 入门
人工智能·安全·agent
用户962377954487 天前
DVWA 靶场实验报告 (Medium Level)
安全
red1giant_star7 天前
S2-067 漏洞复现:Struts2 S2-067 文件上传路径穿越漏洞
安全
用户962377954487 天前
DVWA Weak Session IDs High 的 Cookie dvwaSession 为什么刷新不出来?
安全
cipher9 天前
ERC-4626 通胀攻击:DeFi 金库的"捐款陷阱"
前端·后端·安全
一次旅行11 天前
网络安全总结
安全·web安全