前言

之前打玄机靶场的时候感觉这道题挺有趣的,最近刚好重温了一遍,就把这个记录下来,方便以后回顾

步骤#1.1

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

在根目录发现wireshark.pcap文件,可以用wireshark进行流量分析

将文件通过SFTP传到本地,过滤出http流量

一个一个分析,发现可疑流量,直接得到账号密码

md5加密得

flag{d63edb0e9df4cf411398e3658c0237e0}

步骤#1.2

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

继续往下分析,发现可疑流量

发现这里上传了一个zip压缩包,追踪TCP流

发现一句话木马,确定攻击者是通过该页面上传木马文件,加密pluginmgr.php字符得到

flag{b05c0be368ffa72e6cb2df7e1e1b27be}

步骤#1.3

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

直接查找关键字

grep -r --include="*.php" 'eval($_POST' /

加密文件得到flag

flag{a097b773ced57bb7d51c6719fe8fe5f5}

步骤#1.4

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

继续分析流量,发现可疑流量

发现这个木马文件在尝试下载一个文件,直接搜索这个文件

find / -name "is.world"

这里有个坑,不能直接加密文件,要用引号括起来再加密,不然中间的空格会分隔指令

md5sum "/var/www/html/plugins/.       /is.world"

得到flag

flag{ee279c39bf3dcb225093bdbafeb9a439}

步骤#1.5

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

查看用户列表

cat /etc/passwd

发现有个用户的用户ID和组ID都为0,权限很高,一般情况下只有管理员的UID和GID为0,说明这个是后门用户,直接加密得到flag

flag{4cda3461543c9a770a3349760594facd}

步骤#1.6

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

一般这种情况是修改了shell配置文件,常见的配置文件包括

用户级别
1、"~/.bashrc"	用于配置非登录 Shell 的环境(例如桌面终端), 每次启动新的非登录 Shell 时加载
2、"~/.bash_profile"	用于配置 登录 Shell 的环境, 每次登录(例如通过 SSH 或控制台登录系统)
3、"~/.profile"	用于配置 登录 Shell 环境变量, 在用户登录时执行
4、"~/.zshrc"	每次启动 Z Shell 的非登录会话时加载
5、"~/.bash_logout"	在用户退出登录 Shell 时执行

系统级别
1、"/etc/profile"	用于设置所有用户的登录 Shell 环境变量, 所有用户登录时加载
2、"/etc/bash.bashrc"	提供全局的非登录 Shell 配置, 每次启动新的非登录 Shell 时加载
3、"/etc/profile.d/*.sh"	当 /etc/profile 加载时, 会依次加载 /etc/profile.d 中的所有脚本文件(通常是 .sh 文件)
4、"/etc/environment"	用于配置系统范围的环境变量, 在用户登录前加载,影响所有用户和守护进程

一般情况执行顺序,可以用作参考

1.登录 Shell
	系统级配置文件:
	/etc/profile
	/etc/profile.d/*.sh
	用户级配置文件:
	~/.bash_profile(如果不存在,则加载 ~/.profile)
2.非登录 Shell
	系统级配置文件:
	/etc/bash.bashrc(如果系统支持)
	用户级配置文件:
	~/.bashrc

这里一个一个尝试即可,发现/etc/profile有问题

直接md5sum加密得到flag

md5sum /etc/profile
#flag{65bf3e4a9ac90d75ec28be0317775618}

步骤#1.7

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

搜索后门触发命令,这里搜索的是用户目录下的可疑配置文件

grep -r -E '(nc|curl|wget|bash|python|eval|base64)' ~/

发现有个配置文件尝试外联恶意网址

直接加密得到flag

flag{4acc9c465eeeb139c194893ec0a8bcbc}

步骤#1.8

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

确定数据库类型

systemctl list-units --type=service | grep -E '(mysql|mariadb|postgresql|mongodb|redis)'

查看数据库的登录信息,一般放在配置文件“config.inc.php”里面

find / -name config.inc.php

得到数据库账号密码,用 Premium连接,一个一个尝试,发现有个数据库无法查看,说明被加密了,这里用的网图

查找对应文件,可以得到文件所在路径

find / -name JPMorgan@0020Chase

加密文件夹名得到flag

flag{0928a5424aa6126e5923980ca103560e}

步骤#1.9

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

查看mysql文件夹,发现有个可疑文件

直接抓取内容看看,发现是个加密脚本

这里要写一个逆推脚本,参考网上的文章

<?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);  
                        }  
}  
?>

这里的时间是JPMorgan@0020Chase的创建时间

stat JPMorgan@0020Chase	#查看详细信息

把脚本写进/var/www/mysql/目录

vim 1.php

先按i插入代码,然后按一下Esc,再按住shift + :,然后输入wq保存

运行代码

php 1.php

重启数据库

systemctl restart mysql

这时再返回Premium,可以发现数据库解密了,Harper用户对应Areer为Chef,加密即可

flag{8fd82b8864d71ed7fa12b59e6e34cd1c}

步骤#1.10

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

这里攻击者用到提权,可以查找以 root 用户身份拥有并设置了 SUID(Set User ID)权限的文件。

find / -user root -perm -4000 2>/dev/null	#4000 代表文件权限中的 SUID 位。

当一个文件被设置了 SUID 位,并且用户执行该文件时,该程序会以文件拥有者(通常是 root)的权限运行,而不是以当前用户的权限运行

发现/usr/bin/sudo,sudo 被广泛用于权限提升,估计攻击者通过这个提权,/etc/sudoers 包含了系统上 sudo 的配置和权限设置,这里抓取内容看一下

cat /etc/sudoers

www-data用户被赋予了root权限,而且不需要输入密码,到这里已经可以确认漏洞配置了,就是/etc/sudoers ,加密文件得到flag

flag{6585817513b0ea96707ebb0d04d6aeff}