MySQL File priv to SSRF/RCE

AWS hackleme konusunda sıfırdan kahramana dönüşün htARTE (HackTricks AWS Kırmızı Takım Uzmanı)ile öğrenin!

HackTricks'i desteklemenin diğer yolları:

Bu, https://ibreak.software/2020/06/using-sql-injection-to-perform-ssrf-xspa-attacks/ adresindeki MySQL/MariaDB/Percona tekniklerinin bir özetidir.

SQL Fonksiyonları Aracılığıyla Sunucu Tarafından İstek Sahteciliği (SSRF)

SQL Dışında Veri Sızdırma araştırmalarında, ağ isteklerini başlatmak için genellikle LOAD_FILE() fonksiyonu kullanılır. Ancak bu fonksiyon, işletim sistemi ve veritabanının başlangıç yapılandırmaları tarafından sınırlanır.

secure_file_priv global değişkeni, ayarlanmamışsa, /var/lib/mysql-files/ olarak varsayılan değere sahiptir ve dosya erişimini bu dizine sınırlar, boş bir dize ("") olarak ayarlanmadıkça. Bu ayarlamalar, veritabanının yapılandırma dosyasında veya başlangıç parametrelerinde değişiklik yapmayı gerektirir.

secure_file_priv devre dışı bırakıldığında ("") ve gerekli dosya ve file_priv izinleri verildiğinde, belirlenen dizinin dışındaki dosyalar okunabilir. Ancak, bu fonksiyonların ağ çağrıları yapabilme yeteneği, işletim sistemine bağlıdır. Windows sistemlerinde, UNC yollarına ağ çağrıları, işletim sisteminin UNC adlandırma kurallarını anlaması nedeniyle mümkündür ve bu da NTLMv2 karma değerlerinin sızdırılmasına yol açabilir.

Bu SSRF yöntemi, TCP bağlantı noktası 445 ile sınırlıdır ve bağlantı noktası numarası değiştirilmesine izin vermez, ancak tam okuma izinleri olan paylaşımlara erişmek ve önceki araştırmalarda gösterildiği gibi daha fazla istismar için karma değerlerini çalmak için kullanılabilir.

Kullanıcı Tanımlı Fonksiyonlar (UDF) Aracılığıyla Uzaktan Kod Yürütme (RCE)

MySQL veritabanları, harici kitaplık dosyalarından Kullanıcı Tanımlı Fonksiyonlar (UDF) kullanımını sunar. Bu kitaplıklar, belirli dizinlerde veya sistem $PATH'inde erişilebilir durumdaysa, 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 karşılanması durumunda, bir UDF aracılığıyla ağ/HTTP isteklerinin yürütülmesine olanak tanır.

Örneğin, lib_mysqludf_sys kitaplığı veya HTTP isteklerini etkinleştiren diğer UDF kitaplıkları, SSRF gerçekleştirmek için yüklenebilir. Kitaplıkların sunucuya aktarılması gerekmektedir, bunu kitaplığın içeriğinin hex veya base64 kodlamasıyla yaparak ve ardından uygun dizine yazarak başarabilirsiniz.

@@plugin_dir yazılabilir değilse, özellikle v5.0.67 üzeri MySQL sürümleri için işlem farklılık gösterir. Bu 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önlendirmesi veya DNS isteği kaçırma teknikleri kullanılabilir.

AWS hackleme konusunda sıfırdan kahramana dönüşün htARTE (HackTricks AWS Kırmızı Takım Uzmanı)ile öğrenin!

HackTricks'i desteklemenin diğer yolları:

Last updated