MySQL File priv to SSRF/RCE
Reading time: 3 minutes
tip
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- Bize katılın 💬 Discord grubuna veya telegram grubuna veya bizi takip edin Twitter'da 🐦 @hacktricks_live.
- Hacking ipuçlarını paylaşın, HackTricks ve HackTricks Cloud github reposuna PR göndererek.
Bu, 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 Dışarıdan Veri Sızdırma keşfi sırasında, 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 dize (""
) olarak ayarlanmadıkça. Bu ayarlama, veritabanının yapılandırma dosyasında veya başlangıç parametrelerinde değişiklikler 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, işletim sisteminin UNC adlandırma kurallarını anlaması nedeniyle UNC yollarına ağ çağrıları mümkündür ve bu, 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'leri çalmak amacıyla kullanılabilir.
Kullanıcı Tanımlı Fonksiyonlar (UDF) ile Uzaktan Kod Çalıştırma (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ılabilirler.
Bu teknik, @@plugin_dir
'ye yazma erişimi, file_priv
'in Y
olarak ayarlanması ve secure_file_priv
'in devre dışı bırakılması gibi birkaç koşul sağlandığında, bir UDF aracılığıyla ağ/HTTP isteklerinin gerçekleştirilmesine 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ı ile sunucuya aktarılması ve ardından uygun dizine yazılması yoluyla aktarılmalıdır.
@@plugin_dir
yazılabilir değilse, süreç değişir, özellikle v5.0.67
üzerindeki MySQL sürümleri için. 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.
tip
AWS Hacking'i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking'i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
HackTricks'i Destekleyin
- abonelik planlarını kontrol edin!
- Bize katılın 💬 Discord grubuna veya telegram grubuna veya bizi takip edin Twitter'da 🐦 @hacktricks_live.
- Hacking ipuçlarını paylaşın, HackTricks ve HackTricks Cloud github reposuna PR göndererek.