В сети опубликовали PoC для CVE-2024-53376. Эксплуатация уязвимости позволяет авторизированным пользователям внедрять произвольные команды через уязвимый параметр phpSelection. Уязвимы все версии CyberPanel до
2.3.8 .CVSS: 8.8 (High)
CWE-78
Настоятельно рекомендуем обновиться!
Условия эксплуатации
1. Злоумышленник должен быть авторизован.
2. POST-, GET-запросы, содержащие спецсимволы, блокируются внутренним Firewall. Эксплуатация реализуется с использованием других http-методов.
Суть уязвимости состоит в том, что на конечной точке
/websites/submitWebsiteCreation существует часть кода, которая выглядит так:execPath = execPath + " createVirtualHost --virtualHostName " + domain + " --administratorEmail " + adminEmail + " --phpVersion '" + phpSelection + "' --virtualHostUser " + externalApp + " --ssl " + str(1) + " --dkimCheck " + str(1) + " --openBasedir " + str(data['openBasedir']) + ' --websiteOwner "' + websiteOwner + '" --package "' + packageName + '" --tempStatusPath ' + tempStatusPath + " --apache " + apacheBackend + " --mailDomain %s" % (mailDomain)
ProcessUtilities.popenExecutioner(execPath)
Обратите внимание на параметр
phpSelection в execPath: злоумышленник может манипулировать его значением, и оно никак не будет очищаться сервером. Для успешной эксплуатации злоумышленнику необходимо «выйти из строки»:
1. закрыть ‘, которая идет перед
phpSelection,2. выйти из выполнения операции, например, через ; или | и т.д.,
3. ввести нагрузку, например,
touch /tmp/test, 4. закомментировать остальную часть, например, через #.
Вариантов выхода может быть множество!
Пример полезных нагрузок, которые могут передаваться в теле запросов в формате Json:
{"package":"Default","domainName":"cyberpanel.net","adminEmail":"asd@ss.dd","phpSelection":"PHP 8.0'asdasdasdadadadadaadad $(touch /tmp/test)# ","ssl":0,"websiteOwner":"admin","dkimCheck":0,"openBasedir":0,"mailDomain":0,"apacheBackend":0} Как защититься
1. Проверяем, что запрос не содержит POST- или GET-методы.
2. Смотрим, что конечная точка в URI содержит
/websites/submitWebsiteCreation.3. Значение параметра
body в phpSelection содержит спецсимвол ; например, через подобное регулярное выражение:
[;|&#><$\/\[\]\{\}\(\):`\'\"]+
