MySQL File priv to SSRF/RCE

Вивчайте хакінг AWS від нуля до героя з htARTE (HackTricks AWS Red Team Expert)!

Інші способи підтримки HackTricks:

Це краткий огляд технік MySQL/MariaDB/Percona з https://ibreak.software/2020/06/using-sql-injection-to-perform-ssrf-xspa-attacks/.

Використання функцій SQL для виклику запитів на сервері (SSRF)

Під час дослідження витоку даних через SQL Out of Band, функція LOAD_FILE() часто використовується для ініціювання мережевих запитів. Однак ця функція обмежена операційною системою, на якій вона працює, та конфігураціями запуску бази даних.

Глобальна змінна secure_file_priv, якщо не встановлена, за замовчуванням встановлюється в /var/lib/mysql-files/, обмежуючи доступ до файлів у цьому каталозі, якщо вона не встановлена в порожній рядок (""). Ця настройка потребує змін у файлі конфігурації бази даних або параметрах запуску.

Якщо secure_file_priv вимкнено (""), і припускаючи, що надані необхідні дозволи на файли та file_priv, файли за межами визначеного каталогу можуть бути прочитані. Однак можливість цих функцій здійснювати мережеві виклики сильно залежить від операційної системи. На системах Windows мережеві виклики до шляхів UNC можливі завдяки розумінню операційною системою конвенцій іменування UNC, що потенційно може призвести до витоку хешів NTLMv2.

Цей метод SSRF обмежений TCP-портом 445 і не дозволяє змінювати номер порту, хоча його можна використовувати для доступу до ресурсів з повними правами на читання та, як показано в попередніх дослідженнях, для крадіжки хешів для подальшої експлуатації.

Віддалене виконання коду (RCE) через функції, визначені користувачем (UDF)

Бази даних MySQL пропонують використання функцій, визначених користувачем (UDF) з зовнішніх бібліотек. Якщо ці бібліотеки доступні у певних каталогах або в системному $PATH, їх можна викликати з MySQL.

Ця техніка дозволяє виконувати мережеві/HTTP-запити через UDF, за умови виконання кількох умов, включаючи доступ на запис до @@plugin_dir, встановлення file_priv на Y та вимкнення secure_file_priv.

Наприклад, бібліотеку lib_mysqludf_sys або інші бібліотеки UDF, які дозволяють HTTP-запити, можна завантажити для виконання SSRF. Бібліотеки повинні бути передані на сервер, що можливо завдяки шістнадцятковому або base64 кодуванню вмісту бібліотеки, а потім записуванню його в відповідний каталог.

Процес відрізняється, якщо @@plugin_dir не є доступним для запису, особливо для версій MySQL вище v5.0.67. У таких випадках потрібно використовувати альтернативні шляхи, які доступні для запису.

Автоматизацію цих процесів можна спростити за допомогою інструментів, таких як SQLMap, який підтримує впровадження UDF, а для сліпих SQL-ін'єкцій можна використовувати перенаправлення виводу або техніки підманіпулювання запитами DNS.

Last updated