
Модифицированный PoC для RCE в MariaDB v11.1 через UDF, возвращающий вывод команды непосредственно в SQL-запросах. Включает подробное сравнение кода и инструкции по компиляции для Windows.
MariaDB v11.1 RCE через UDF — модифицированный PoC на основе Ant1sec-ops/CVE-2024-27766.
| Затронуто | MariaDB v11.1 |
| Исправлено в | 10.5.25 / 10.6.18 / 10.11.8 / 11.0.6 / 11.1.5 / 11.2.4 / 11.4.2+ |
| Тип | RCE через пользовательскую функцию (UDF) |
MariaDB v11.1 позволяет атакующему с достаточными привилегиями базы данных (привилегия FILE + доступ на запись в каталог плагинов) зарегистрировать вредоносную UDF и выполнять произвольные команды ОС через неё.
Примечание: Фонд MariaDB оспаривает этот CVE на том основании, что границы привилегий не нарушаются. Для эксплуатации требуется доступ к БД на уровне администратора или эквивалентный.
Оригинальный PoC использует тип возврата longlong, поэтому do_system() только возвращает, успешно ли выполнена команда — вы не можете увидеть вывод напрямую из SQL.
Эта версия меняет тип возврата на char *, что направляет stdout обратно как результат запроса. Не требуется внеполосный канал; просто выполните SELECT do_system('whoami'), и вывод появится прямо в строке.
| Оригинал | Этот PoC | |
|---|---|---|
| Тип возврата | longlong | char * |
| Исполнение | system() | _popen() + цикл fgets() |
| Результат SQL | код выхода | stdout команды |
| Память | нет | выделяется в куче, освобождается в deinit |
Стоит отметить: возврат char * из UDF требует, чтобы MariaDB заранее знала размер буфера. do_system_init устанавливает initid->max_length = 65536, что соответствует буферу вывода, выделенному в основной функции.
Поскольку тип возврата изменился, при регистрации функции необходимо использовать RETURNS STRING, а не RETURNS INTEGER, как в оригинале.
CREATE FUNCTION do_system RETURNS STRING SONAME 'do_system.dll';
_popen / _pclose)FILE и доступом на запись в каталог плагиновТолько для образовательных и исследовательских целей. Не используйте против систем, которыми вы не владеете или на тестирование которых не имеете явного разрешения.