前言
之前打玄机靶场的时候感觉这道题挺有趣的,最近刚好重温了一遍,就把这个记录下来,方便以后回顾
步骤#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}