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)