MySQL File priv to SSRF/RCE
Reading time: 4 minutes
tip
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Soutenir HackTricks
- Vérifiez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PRs au HackTricks et HackTricks Cloud dépôts github.
Ceci est un résumé des techniques MySQL/MariaDB/Percona provenant de https://ibreak.software/2020/06/using-sql-injection-to-perform-ssrf-xspa-attacks/.
Server-Side Request Forgery (SSRF) via SQL Functions
Dans l'exploration de l'exfiltration de données SQL Out of Band, la fonction LOAD_FILE()
est couramment utilisée pour initier des requêtes réseau. Cependant, cette fonction est contrainte par le système d'exploitation sur lequel elle fonctionne et les configurations de démarrage de la base de données.
La variable globale secure_file_priv
, si elle n'est pas définie, par défaut à /var/lib/mysql-files/
, limitant l'accès aux fichiers à ce répertoire à moins qu'elle ne soit définie sur une chaîne vide (""
). Cet ajustement nécessite des modifications dans le fichier de configuration de la base de données ou les paramètres de démarrage.
Étant donné que secure_file_priv
est désactivé (""
), et en supposant que les permissions nécessaires sur les fichiers et file_priv
sont accordées, des fichiers en dehors du répertoire désigné peuvent être lus. Pourtant, la capacité de ces fonctions à effectuer des appels réseau dépend fortement du système d'exploitation. Sur les systèmes Windows, les appels réseau vers des chemins UNC sont réalisables en raison de la compréhension par le système d'exploitation des conventions de nommage UNC, ce qui peut conduire à l'exfiltration de hachages NTLMv2.
Cette méthode SSRF est limitée au port TCP 445 et ne permet pas la modification du numéro de port, bien qu'elle puisse être utilisée pour accéder à des partages avec des privilèges de lecture complets et, comme démontré dans des recherches antérieures, pour voler des hachages pour une exploitation ultérieure.
Remote Code Execution (RCE) via User Defined Functions (UDF)
Les bases de données MySQL offrent l'utilisation de User Defined Functions (UDF) à partir de fichiers de bibliothèque externes. Si ces bibliothèques sont accessibles dans des répertoires spécifiques ou dans le $PATH
du système, elles peuvent être invoquées depuis MySQL.
Cette technique permet l'exécution de requêtes réseau/HTTP via un UDF, à condition que plusieurs conditions soient remplies, y compris l'accès en écriture au @@plugin_dir
, file_priv
défini sur Y
, et secure_file_priv
désactivé.
Par exemple, la bibliothèque lib_mysqludf_sys
ou d'autres bibliothèques UDF permettant des requêtes HTTP peuvent être chargées pour effectuer SSRF. Les bibliothèques doivent être transférées sur le serveur, ce qui peut être réalisé par l'encodage hexadécimal ou base64 du contenu de la bibliothèque, puis en l'écrivant dans le répertoire approprié.
Le processus varie si le @@plugin_dir
n'est pas accessible en écriture, en particulier pour les versions de MySQL supérieures à v5.0.67
. Dans de tels cas, des chemins alternatifs qui sont accessibles en écriture doivent être utilisés.
L'automatisation de ces processus peut être facilitée par des outils tels que SQLMap, qui prend en charge l'injection UDF, et pour les injections SQL aveugles, des techniques de redirection de sortie ou de contournement de requêtes DNS peuvent être utilisées.
tip
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Soutenir HackTricks
- Vérifiez les plans d'abonnement !
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PRs au HackTricks et HackTricks Cloud dépôts github.