# MySQL File priv to SSRF/RCE
{% hint style="success" %}
AWS Hacking'i öğrenin ve pratik yapın:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
GCP Hacking'i öğrenin ve pratik yapın: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
HackTricks'i Destekleyin
* [**abonelik planlarını**](https://github.com/sponsors/carlospolop) kontrol edin!
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **Twitter'da** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'ı takip edin.**
* **Hacking ipuçlarını paylaşmak için [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna PR gönderin.**
{% endhint %}
**Bu, [https://ibreak.software/2020/06/using-sql-injection-to-perform-ssrf-xspa-attacks/](https://ibreak.software/2020/06/using-sql-injection-to-perform-ssrf-xspa-attacks/) adresinden MySQL/MariaDB/Percona tekniklerinin bir özetidir.**
### SQL Fonksiyonları ile Sunucu Tarafı İstek Sahteciliği (SSRF)
SQL Out of Band veri sızdırma keşfinde, `LOAD_FILE()` fonksiyonu genellikle ağ isteklerini başlatmak için kullanılır. Ancak, bu fonksiyon çalıştığı işletim sistemi ve veritabanının başlangıç yapılandırmaları ile sınırlıdır.
`secure_file_priv` global değişkeni, ayarlanmamışsa, varsayılan olarak `/var/lib/mysql-files/` dizinine ayarlanır ve dosya erişimi bu dizinle sınırlıdır, boş bir dizeye (`""`) ayarlanmadıkça. Bu ayarlama, veritabanının yapılandırma dosyasında veya başlangıç parametrelerinde değişiklik yapılmasını gerektirir.
`secure_file_priv` devre dışı bırakıldığında (`""`), gerekli dosya ve `file_priv` izinleri verildiğinde, belirlenen dizin dışındaki dosyalar okunabilir. Ancak, bu fonksiyonların ağ çağrıları yapabilme yeteneği, büyük ölçüde işletim sistemine bağlıdır. Windows sistemlerinde, UNC yollarına yapılan ağ çağrıları mümkündür çünkü işletim sistemi UNC adlandırma kurallarını anlar, bu da NTLMv2 hash'lerinin sızdırılmasına yol açabilir.
Bu SSRF yöntemi, TCP port 445 ile sınırlıdır ve port numarasının değiştirilmesine izin vermez, ancak tam okuma ayrıcalıkları ile paylaşımlara erişmek için kullanılabilir ve önceki araştırmalarda gösterildiği gibi, daha fazla istismar için hash çalmaya olanak tanır.
### Kullanıcı Tanımlı Fonksiyonlar (UDF) ile Uzaktan Kod Yürütme (RCE)
MySQL veritabanları, dış kütüphane dosyalarından Kullanıcı Tanımlı Fonksiyonlar (UDF) kullanma imkanı sunar. Bu kütüphaneler belirli dizinlerde veya sistemin `$PATH`'inde erişilebilir olduğunda, MySQL içinden çağrılabilir.
Bu teknik, `@@plugin_dir`'e yazma erişimi, `file_priv`'in `Y` olarak ayarlanması ve `secure_file_priv`'in devre dışı bırakılması gibi birkaç koşulun sağlanması durumunda, bir UDF aracılığıyla ağ/HTTP isteklerinin yürütülmesine olanak tanır.
Örneğin, `lib_mysqludf_sys` kütüphanesi veya HTTP isteklerini etkinleştiren diğer UDF kütüphaneleri, SSRF gerçekleştirmek için yüklenebilir. Kütüphaneler, kütüphanenin içeriğinin hex veya base64 kodlaması yapılarak sunucuya aktarılması ve ardından uygun dizine yazılması yoluyla aktarılmalıdır.
`@@plugin_dir` yazılabilir değilse, özellikle `v5.0.67` üzerindeki MySQL sürümleri için süreç değişir. Bu gibi durumlarda, yazılabilir alternatif yollar kullanılmalıdır.
Bu süreçlerin otomasyonu, UDF enjeksiyonunu destekleyen SQLMap gibi araçlarla kolaylaştırılabilir ve kör SQL enjeksiyonları için çıktı yönlendirme veya DNS istek kaçırma teknikleri kullanılabilir.
{% hint style="success" %}
AWS Hacking'i öğrenin ve pratik yapın:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
GCP Hacking'i öğrenin ve pratik yapın: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
HackTricks'i Destekleyin
* [**abonelik planlarını**](https://github.com/sponsors/carlospolop) kontrol edin!
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **Twitter'da** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'ı takip edin.**
* **Hacking ipuçlarını paylaşmak için [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna PR gönderin.**
{% endhint %}