Merhaba,
Ana sunucum üzerinde, güncel (aslında eski ama yeni yaygınlaşan) bir perl açığınının/suistimalinin raporunu aldım. Konu yakın zamanda (2010 şubat-mart) bir webmaster forumunda da tartışılmış. Kimi ücretli yaparım, kimi çözümü imkansız demiş. PL uzantılı scripti inceleyerek işe yarar bir çözüm üretmeye çalıştım. Direk uygulama yönüyle bunu engellemiş görünüyorum. Çözümü şöyle:
* Tüm sunucu sahiplerinin bu yolu izlemesini öneririm.
1. ssh root girişi yapın. chmod 711 /usr/bin/perl komutunu verin. Eğer diğer forumlarda belirtildiği gibi bu değeri 710 veya 444 yaparsanız perl kullanan webmail, awstats gibi scriptler çalışmayacaktır. Bu nedenle bu değeri 711 yapın.
2. httpd.conf dosyanızı açın. Yerini bilmiyorsanız whereis httpd.conf . pico /etc/httpd/conf/httpd.conf veya nano /etc/httpd/conf/httpd.conf ardından ctrl+w tuşuyla addhand yazıp entera basın. Sizi şu satıra götürecektir: AddHandler cgi-script .cgi .pl .plx .ppl .perl bu satırın başına # işareti koyarak pl, perl okumayı engelleyin. Böylece .htaccess ile pl çalıştırma izninin de önüne geçmiş olacağız.
3. Sunucunuzun http servisini yeniden başlatın.
Önemli Uyarılar:
* İki adımı da tam olarak uygulamadan bu açığın önüne geçmeniz mümkün görünmüyor.
* Mod-security rulesi yapsanız dahi pl scripti aspx, asp (sunucunuz linux olsa da) şeklinde çalıştırılabiliyor.
* Scriptin PHP tabanlı olanı "system" fonksiyonunu kullanıyor. Php.ini'den bu fonksiyonu disable etmelisiniz.
Ek-1: Bu tür bir scripti bulmak için sunucumuzu taratalım. PHP veya PL uzantısını siz belirleyebilirsiniz:
rm -rf /root/tara.txt
find /home/ -name "*.php" -print | xargs egrep -l 'ls -al' >> /root/tara.txt
işlem bitince pico /root/tara.txt
pl taramak için: "*.php" olan yeri "*.pl" olarak değiştirin.
NOT: Bu konuyla ilgili deneyimlerinizi, bilgilerinizi paylaşmaktan çekinmeyin. Böyle böyle bir açık var bunu ücretli yaparım diyebilirdim. Konu hakkında ne tür görüşünüz varsa belirtin irdeleyelim.
NOT-2: Perl scriptin chmodu 777 yapıldığında script çalışıyor. Ancak ls -al /home/*/public_html/wp-config.php abc.txt gibi komutların çıktısı boş dönüyor. abc.txt'i okutmak mümkün olmadı.
Ana sunucum üzerinde, güncel (aslında eski ama yeni yaygınlaşan) bir perl açığınının/suistimalinin raporunu aldım. Konu yakın zamanda (2010 şubat-mart) bir webmaster forumunda da tartışılmış. Kimi ücretli yaparım, kimi çözümü imkansız demiş. PL uzantılı scripti inceleyerek işe yarar bir çözüm üretmeye çalıştım. Direk uygulama yönüyle bunu engellemiş görünüyorum. Çözümü şöyle:
* Tüm sunucu sahiplerinin bu yolu izlemesini öneririm.
1. ssh root girişi yapın. chmod 711 /usr/bin/perl komutunu verin. Eğer diğer forumlarda belirtildiği gibi bu değeri 710 veya 444 yaparsanız perl kullanan webmail, awstats gibi scriptler çalışmayacaktır. Bu nedenle bu değeri 711 yapın.
2. httpd.conf dosyanızı açın. Yerini bilmiyorsanız whereis httpd.conf . pico /etc/httpd/conf/httpd.conf veya nano /etc/httpd/conf/httpd.conf ardından ctrl+w tuşuyla addhand yazıp entera basın. Sizi şu satıra götürecektir: AddHandler cgi-script .cgi .pl .plx .ppl .perl bu satırın başına # işareti koyarak pl, perl okumayı engelleyin. Böylece .htaccess ile pl çalıştırma izninin de önüne geçmiş olacağız.
3. Sunucunuzun http servisini yeniden başlatın.
Önemli Uyarılar:
* İki adımı da tam olarak uygulamadan bu açığın önüne geçmeniz mümkün görünmüyor.
* Mod-security rulesi yapsanız dahi pl scripti aspx, asp (sunucunuz linux olsa da) şeklinde çalıştırılabiliyor.
* Scriptin PHP tabanlı olanı "system" fonksiyonunu kullanıyor. Php.ini'den bu fonksiyonu disable etmelisiniz.
Ek-1: Bu tür bir scripti bulmak için sunucumuzu taratalım. PHP veya PL uzantısını siz belirleyebilirsiniz:
rm -rf /root/tara.txt
find /home/ -name "*.php" -print | xargs egrep -l 'ls -al' >> /root/tara.txt
işlem bitince pico /root/tara.txt
pl taramak için: "*.php" olan yeri "*.pl" olarak değiştirin.
NOT: Bu konuyla ilgili deneyimlerinizi, bilgilerinizi paylaşmaktan çekinmeyin. Böyle böyle bir açık var bunu ücretli yaparım diyebilirdim. Konu hakkında ne tür görüşünüz varsa belirtin irdeleyelim.
NOT-2: Perl scriptin chmodu 777 yapıldığında script çalışıyor. Ancak ls -al /home/*/public_html/wp-config.php abc.txt gibi komutların çıktısı boş dönüyor. abc.txt'i okutmak mümkün olmadı.