玄机应急: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}
相关推荐
极客先躯27 分钟前
高级java每日一道面试题-2024年12月03日-JVM篇-什么是Stop The World? 什么是OopMap? 什么是安全点?
java·jvm·安全·工作原理·stop the world·oopmap·safepoint
jinan88628 分钟前
公司的外带资料怎么通过U盘安全的管理?
安全
羊村懒哥1 小时前
linux-安全-iptables防火墙基础笔记
linux·网络·安全
闲人-闲人9 小时前
CIA安全属性简介
网络·安全
weixin_4426434214 小时前
工程设计行业内外网文件交换解决方案:FileLink助力高效、安全的跨网协作
运维·服务器·安全·filelink内外网文件交换
xing.yu.CTF15 小时前
攻防世界-fileclude-文件包含
网络·安全·web安全·文件包含漏洞·基础漏洞
岛屿旅人17 小时前
警惕开源信息成为泄密源头
网络·安全·网络安全
网络安全技术分享17 小时前
新手参加2025年CTF大赛——Web题目的基本解题流程
前端·学习·安全·web安全·php·ddos
群联云防护小杜17 小时前
阿里云流量异常:是黑客攻击吗?如何识别和应对
网络·网络协议·安全·web安全·阿里云·云计算·ddos