
SQL-инъекция OpenSIS
OpenSIS Аутентифицированная SQL-инъекция
Существует уязвимость SQL-инъекции в файлах Ajax.php, ForWindow.php, ForExport.php, Modules.php, functions/HackingLogFnc.php. Эта проблема затрагивает OpenSis Community Edition версий с 9.1 по 8.0 и, возможно, более ранние версии.
В одном из примеров, Ajax.php, видно, что IP-адреса могут быть записаны в журнал и вставлены в базу данных при обнаружении вредоносных действий. Следует отметить, что если отправляется заголовок "X-Forwarded-For", приложение будет использовать это значение вместо $_SERVER['REMOTE_ADDR']. Поскольку $ip напрямую конкатенируется в SQL-запрос без какой-либо очистки, возможна SQL-инъекция.

В приведённом ниже доказательстве концепции внедрение полезной нагрузки ' AND SLEEP(7) AND '1'='1 вызвало задержку выполнения приложения на 7 секунд, что свидетельствует об успешной SQL-инъекции.

Проверка журнала базы данных дополнительно подтверждает эту уязвимость.

Наконец, использование SQLMap — автоматизированного инструмента для SQL-инъекций — подтвердило уязвимость.

Было обнаружено, что в уязвимых строках кода значение из $_SERVER['HTTP_X_FORWARDED_FOR'] напрямую добавляется в SQL-запрос.
• Ajax.php (строки 260–275)
• Modules.php (строки 1005–1023)
• ForExport.php (строки 135–147)
• ForWindow.php (строки 124–136)
• functions/HackingLogFnc.php (строки 47–68)
• Вместо динамического построения SQL-запросов путём прямой конкатенации пользовательских данных используйте параметризованные запросы (также известные как подготовленные выражения). Параметризованные запросы отделяют SQL-код от пользовательских данных, что значительно снижает риск атак с помощью SQL-инъекций.
• Внедрите надёжные методы проверки и очистки входных данных, чтобы гарантировать, что пользовательские данные соответствуют ожидаемым форматам и не содержат вредоносного SQL-кода. Проверяйте типы, длину и формат входных данных, а также очищайте их, экранируя специальные символы или используя белые списки, разрешающие только определённые символы или шаблоны.
• Не используйте $_SERVER[‘HTTP_X_FORWARDED_FOR’] для записи IP-адресов в журнал.