İçeriğe geç

MySQL Kullanıcı Tanımlı Fonksiyonlar (UDF)

Yakın zamanda Youtube üzerinden açacağım kanalda zafiyetli makinelerin çözümlerini yayınlamayı düşünüyorum. Bunlar içerisined tabiki de kioptrix serisi olacak ve kioptrix serisiinde MySQL aracılığı ile yetki yükseltebildiğimiz bir kısım olacaktır. Buradaki mantığı iyi bir şekilde anlayabilmek için aslında UDF konusunu bilmemiz gerekmektedir.

Veritabanlarında default olarak gelen fonksiyonlar haricinde Veritabanı yöneticilerinin tanımlamış olduğu fonksiyonlarda olabilir. Bunlara UDF yani User Defined Functions denilmektedir.

Zafiyetli makinamızda mysql servisi root olarak çalışmaktaydı, kendi bilgisayarımızda hazırlayacağımız UDF’ler iler bunu karşı tarafa attığımızda aslında root olarak shell alabiliriz. UDF’lerin dosya uzantıları windows için DLL, linux için SO olmaktadır ve kali içerisinde bunlara sqlmap dizi altından ulaşabilirsiniz. Tam dosya adı lib_mysqludf_sys.so olacaktır…

Bu dosyalarda string ile okuma işlemi yaptığınızda sys_eval, sys_exec isimli fonksiyonlar göreceksiniz.

Ne zaman eval ifadesi görsem istihza python3 kitabındaki yazı aklıma gelmekte eval şeytani bir fonksiyondur…

  • sys_eval: İşletim sistemi üzerinde Mysql servisi yetkileri ile kod çalıştırılır ve sonucu çıktı olarak verilir.
  • sys_exec: İşletim sistemi üzerinde Mysql servisi yetkileri ile kod çalıştırılır ve sonucu çıktı kodu olarak verilir.

Bu kısıma kadar aslında yetki yükseltme işleminde kullanacağımız yöntem için ön hazırlık yaptık şimdi yetki yükseltme işleminin nasıl gerçekleşeceğine bakalım… Veritabanına komut satırı üzerinden bağlandığımızı düşünelim. Kullanıcı adı root şifresi toor olsun. Veritabanı adımız ise deneme olsun… Aşağıdaki şekilde ilerleyerek veri tabanına bağlanabiliriz…

mysql -u root deneme -p
toor
show databases;
//BU ALANDA DATABASE'LER LİSTELENECEK VE BİZ MYSQL'İ SEÇECEĞİZ
use mysql;
SHOW TABLES;
//BU ALANDA TABLOLAR LİSTELENECEK BİZİM İÇİN ÖENMLİ OLAN FUNC TABLOSUDUR
select * from func;
//KULLANABİLECEĞİMİZ FONK'lar listelenecek ve bunları kullanarak yetki yükselteceğiz...

Yukarıda veritabanında yapmış olduğum ilemlerin ekran görüntüsü… Şimdi sys_exec ile işlemler yapalım.

Burada id komutunun çıktısını /tmp altında bir dosyay yazmış daha sonra bu dosyanın herkes tarafından okunabilmesine, çalıştırılabilmesine ve yazılmasına izin vermiş. Çünkü dosya root tarafından oluşturuluyor ve eğer izinlerini değiştimezsek normal bir kullanıcı ile bu dosyayı okuyamayız. Görüldüğü üzere dosyanın içerisinde de root olduğu yazmakta bu işlemden sonra aslında hayal gücümüze kalmakta. Kioptrix makinasında sudoers dosyasında admin isimli kullanıcının bütün komutlara yetkisi olduğundan john kullanıcısını bu gruba eklemiştik ve daha sonra yetki yükseltmiştik. Ancak başka senaryolarda bulunabilir…

Kategori:MySQL

İlk Yorumu Siz Yapın

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir