
Концепт-доказательство неавторизованной уязвимости SQL-инъекции в XOne Web Monitor, позволяющей извлекать учетные данные и данные с помощью сформированных POST-запросов.
Автор: Javier Carabantes
Затронутое ПО: XOne Web Monitor
ПО: https://xone.es/
Затронутая версия: 02.10.2024.530 framework 1.0.4.9
В функционале входа XOne Web Monitor версии 02.10.2024.530 framework 1.0.4.9 обнаружена неаутентифицированная SQL-инъекция. Эта ошибка позволяет злоумышленникам использовать некорректную обработку пользовательского ввода во время аутентификации для извлечения всех сохранённых имён пользователей и паролей. В частности, конструкция конечной точки входа позволяет атакующим манипулировать предложением WHERE через уязвимый входной параметр.
/webcore/api/itf/DoAction
Следующий пример демонстрирует, как можно использовать уязвимость с помощью специально сформированного POST-запроса к уязвимой версии:

Когда вводится неверная пара логин/пароль, например "test:test", отправляется следующий запрос
POST /webcore/api/itf/DoAction HTTP/1.1
Host: redacted:44330
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/115.0
Accept: */*
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Referer: http://redacted:44330/
Content-Type: application/json
Authorization: Bearer redacted
Content-Length: 124
Origin: http://redacted:44330
Connection: keep-alive
{"action":"select","count":false,"page":{},"coll":"Usuarios","macros":{},"where":"(LOGIN='test')","sort":"","loadall":false}
Обратите внимание, что пароль не отправляется, а имя пользователя заключено в свойство where. Изменение оператора поля LOGIN позволит получить полный список пользователей и паролей в открытом виде:

Ответ раскрывает список всех имён пользователей и соответствующих паролей, хранящихся в базе данных. Любой пользователь имеет возможность получить доступ к конфиденциальным данным (клиенты, должности сотрудников и т.д.).

Эта уязвимость SQL-инъекции также поддерживает использование запросов UNION в MSSQL, что позволяет злоумышленникам перечислять и извлекать данные из других таблиц базы данных.

Та же инъекция позволяет выполнять LFD, если атакующий знает абсолютный путь; пример чтения файла C:/windows/system32/grouppolicy/machine/registry.pol, привилегированного файла:

Вендор был уведомлён об этой уязвимости на неделе 11/11/2024.
Веб-страница, показанная в PoC, была снята с публикации.