
API SAS Используйте его поток RCE
Идентификатор: CVE-2025-50881
Затронутый продукт: API Use it Flow версии 8.2.0 (Rev 15851), версии 9.2.0 (Rev 18093)
Редактор: https://www.tenorsolutions.com (ранее https://api-sas.fr/)
Затронутые компоненты: flow/admin/moniteur.php
Тип уязвимости: Удаленное выполнение кода (RCE) через внедрение eval()
Серьезность: Критическая
Описание:
Сценарий flow/admin/moniteur.php уязвим к удаленному выполнению кода. При обработке GET-запросов сценарий берет ввод пользователя из параметра URL action, выполняет недостаточную проверку и включает этот ввод в строку ($wscom), которая затем выполняется функцией eval(). Хотя выполняется проверка , она проверяет только часть пользовательского ввода первой скобки , что позволяет атакующему добавлять произвольный PHP-код после корректной структуры вызова метода. Успешная эксплуатация позволяет неаутентифицированному или легко аутентифицированному атакующему выполнять произвольный PHP-код на сервере с привилегиями процесса веб-сервера.
method_exists()(Уязвимые фрагменты кода:
Файл: flow/admin/moniteur.php
Чтение пользовательского ввода (строка ~45):
if (isset($_GET['action'])) {$action=urldecode(htmlentities($_GET['action']));} else notice($server);
Примечание: $action получен напрямую от пользовательского ввода ($_GET['action']) только с декодированием URL и кодированием HTML-сущностей, что не предотвращает внедрение кода.
Формирование строки команды (строка ~47):
$wscom='$ws->'.$action;
Примечание: Управляемый пользователем $action конкатенируется в строку $wscom.
Недостаточная проверка (строка ~49):
$func=explode("(",$action);
if (method_exists($ws, $func[0])) {
Примечание: Проверяется только часть $action до первой скобки на соответствие допустимым методам класса UIFWebService.
Выполнение кода через eval() (строка ~50):
eval('$res=' . $wscom . ';');
Примечание: Сформированная строка $wscom, содержащая пользовательский ввод, выполняется как PHP-код.
Эксплуатация:
Атакующий может сформировать GET-запрос к moniteur.php, указав произвольные параметры login и password (поскольку они используются для аутентификации внутри вызванного метода, а не для самого eval) и вредоносный параметр action. Параметр action должен начинаться с допустимого имени метода из класса UIFWebService (например, get_data), чтобы пройти проверку method_exists, за которым следует внедренный PHP-код.
Пример полезной нагрузки:
GET /admin/moniteur.php?login=foo&password=bar&action=get_data(1);phpinfo();$res=0; HTTP/1.1
Host: <target>
Эта полезная нагрузка приводит к тому, что eval() выполняет код, подобный:
$res = $ws->get_data(1);phpinfo();$res=0;;
Это выполняет метод get_data, затем выполняет phpinfo(), и, наконец, устанавливает $res в 0.
Воздействие: Атакующий может выполнять произвольные команды на сервере, что может привести к:
Раскрытие: