MySQL File priv to SSRF/RCE
Reading time: 3 minutes
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.
Це резюме технік 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 запитів.
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.