MySQL File priv to SSRF/RCE
Last updated
Last updated
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)
Bu, https://ibreak.software/2020/06/using-sql-injection-to-perform-ssrf-xspa-attacks/ adresinden MySQL/MariaDB/Percona tekniklerinin bir özetidir.
SQL Dışarıdan 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.
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şul sağlandığında, 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ıyla 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.
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)