Sunucu Sahiplerine: Perl Scripti Açığı Uyarısı ve Önlemi

0
Onaylı Üye
Üye
Katılım
8 Kasım 2005
Mesajlar
717
Tepki puanı
16
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ı.
 
0
Onaylı Üye
Üye
Katılım
8 Kasım 2005
Mesajlar
717
Tepki puanı
16
bir tarama şekli daha: find /home/ -name "*.pl" -print | xargs egrep -l 'alarm($CommandTimeoutDuration)' >> /root/tara2.txt
 
0
Onaylı Üye
Üye
Katılım
16 Kasım 2008
Mesajlar
532
Tepki puanı
20
Konum
istanbul
Teşekkürler
 
0
Onaylı Üye
Üye
Katılım
13 Kasım 2006
Mesajlar
6,192
Tepki puanı
44
Konum
localhost
Teşekkürler.
 
0
Onaylı Üye
Üye
Katılım
29 Ocak 2010
Mesajlar
1,489
Tepki puanı
16
Süpersin dostum bu tür konular oldukça iyinet eski haline kısa sürede gelicektir, teşekkürler +rep.

Edit: K.bakma u LaTenT Mesajı yeniden değerlendirebilmeniz için başka Üyelerin Mesajlarınıda değerlendirmeniz gerekmektedir.

Bir dahaki sefere artık:p
 
0
Onaylı Üye
Üye
Katılım
1 Şubat 2010
Mesajlar
290
Tepki puanı
0
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ı.



pico /usr/lib/php.ini içinde
ctrl w system aradım disable_functions karşısında zaten Ayarlı

disable_functions = ini_set,ini_get_all,hopenbasedir,system,dl,passth ru,cat,exec,popen,proc_close,proc_get_status,proc_ nice,proc_open,escapeshellcmd,escapeshellarg,show_ source,posix_mkfifo,mysql_list_dbs,get_current_use r,getmyuid,pconnect,link,symlink,pcntl_exec,ini_al ter,leak,apache_child_terminate,posix_kill,posix_s etpgid,posix_setsid,posix_setuid,posix_getpwuid,pr oc_terminate,syslog,fpassthru,stream_select,socket _select,socket_create,socket_create_listen,socket_ create_pair,socket_listen,socket_accept,socket_bin d,socket_strerror,pcntl_fork,pcntl_signal,pcntl_wa itpid,pcntl_wexitstatus,pcntl_wifexited,pcntl_wifs ignaled,pcntl_wifstopped,pcntl_wstopsig,pcntl_wter msig,openlog,apache_get_modules,apache_get_version ,apache_getenv,apache_note,apache_setenv,virtual,u ser_dir,ini_restore



burda bir sorun görünmüyor anladığım kadarıyla benim php.ini de acaba başka hangi kmutlarıda disable etmemiz gerek
 
0
Onaylı Üye
Üye
Katılım
8 Kasım 2005
Mesajlar
717
Tepki puanı
16
ek olarak;
chmod 700 /bin/cat
chmod 700 /bin/ln
chmod 700 /bin/ls

böylece bu komutları sadece roota açtık.

@Klamp: disable ettiğin fonksiyonlarda sorun var. kopyala yapıştır yapmışsın aralarda boşluk kalmış. örneğin u ser_dir değil user_dir olmalı.
 
0
Onaylı Üye
Üye
Katılım
1 Şubat 2010
Mesajlar
290
Tepki puanı
0
ek olarak;
chmod 700 /bin/cat
chmod 700 /bin/ln
chmod 700 /bin/ls

böylece bu komutları sadece roota açtık.

@Klamp: disable ettiğin fonksiyonlarda sorun var. kopyala yapıştır yapmışsın aralarda boşluk kalmış. örneğin u ser_dir değil user_dir olmalı.

teşekkürler Latenet Ni-osman makalesinden almıştım o kodları kodları kontrol etmeden yapıştırmışım bilgilendirma için teşekkür ederim
 
0
Onaylı Üye
Üye
Katılım
1 Şubat 2010
Mesajlar
290
Tepki puanı
0
chmod 700 /bin/cat
chmod 700 /bin/ln
chmod 700 /usr/bin/perl
chmod 700 /bin/dir
chmod 700 /usr/bin/dir
chmod 700 /usr/bin/find
chmod 700 /usr/bin/tac
chmod 700 /usr/bin/ls


chmod 700 /usr/bin/ls
chmod: cannot access `/usr/bin/ls': No such file or directory


chmod 700 /bin/dir
chmod: cannot access `/bin/dir': No such file or directory

hata aldım burada chmod 700 vermemiz örneğin şifre değiştirmlerde sorun yaşatmazmı




bir webmaster sitesindeki bir üyenin yorumlarından alıntı yaparak yazayım birde


"

".pl" yi engellesek bile telnet.req olarak çalıştırabiliyorum ve Co$kuN 'un dediği gibi chmod ile bitmiyor iş.

Fake symlink yöntemi var. Ayrıca ln komutu engelli olsa bile açılıyor. "



" Kernel'inizi iyi bilen birisine ücret karşılığında derletin. home ve tmp klasörlerinizi noexec nosuid olarak mount ettirin. Bunların her biri kalenizin surlarını yükseltecektir "
 
0
Onaylı Üye
Üye
Katılım
1 Şubat 2010
Mesajlar
290
Tepki puanı
0
pico /etc/httpd/conf/httpd.conf

veya

nano /etc/httpd/conf/httpd.conf


sunucuda güncelleme yapınca girdiğimiz bu ayarı sıfırlıyor

birde belli süre sonrada sıfırlıyo bunu sıfırlamaması için Ne yapabiliriz
 
Onaylı Üye
Üye
Katılım
18 Temmuz 2008
Mesajlar
12,391
Tepki puanı
255
geçen gün güncelledi sunucuyu host, bu açıktan yararlanarak bi kaç siteye "sadece" index atılmış
 
1
Onaylı Üye
Üye
Katılım
7 Şubat 2011
Mesajlar
573
Tepki puanı
6
Konum
İstanbul
0
Onaylı Üye
Üye
Katılım
9 Mart 2008
Mesajlar
104
Tepki puanı
1
En büyük tehlike perl perl e chmod 700 yapmak iyi bir çözüm olabilir.
 
Geri
Üst