MySQL File priv to SSRF/RCE
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Це резюме технік MySQL/MariaDB/Percona з https://ibreak.software/2020/06/using-sql-injection-to-perform-ssrf-xspa-attacks/.
У дослідженні SQL витоку даних поза каналом, функція LOAD_FILE()
зазвичай використовується для ініціювання мережевих запитів. Однак ця функція обмежена операційною системою, на якій вона працює, та конфігураціями запуску бази даних.
Глобальна змінна secure_file_priv
, якщо не встановлена, за замовчуванням дорівнює /var/lib/mysql-files/
, обмежуючи доступ до файлів лише цією директорією, якщо не встановлено на порожній рядок (""
). Це налаштування вимагає змін у конфігураційному файлі бази даних або параметрах запуску.
Якщо secure_file_priv
вимкнено (""
), і за умови, що надані необхідні права на файл та file_priv
, файли поза вказаною директорією можуть бути прочитані. Проте можливість цих функцій здійснювати мережеві виклики сильно залежить від операційної системи. На системах Windows мережеві виклики до UNC шляхів можливі завдяки розумінню операційною системою конвенцій іменування UNC, що може призвести до витоку хешів NTLMv2.
Цей метод SSRF обмежений TCP портом 445 і не дозволяє змінювати номер порту, хоча його можна використовувати для доступу до загальних ресурсів з повними правами на читання і, як показано в попередніх дослідженнях, для крадіжки хешів для подальшої експлуатації.
Бази даних 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)