MySQL File priv to SSRF/RCE

Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks

Це резюме технік MySQL/MariaDB/Percona з https://ibreak.software/2020/06/using-sql-injection-to-perform-ssrf-xspa-attacks/.

Підробка запитів на стороні сервера (SSRF) через SQL-функції

У дослідженні SQL-екстракції даних поза каналом, функція 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. Бібліотеки повинні бути передані на сервер, що можна досягти через кодування в hex або base64 вмісту бібліотеки, а потім записати його в відповідну директорію.

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

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

Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks

Last updated