MySQL File priv to SSRF/RCE

HackTricks'i Destekleyin

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 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.

HackTricks'i Destekleyin

Last updated