Nalet olası iframe virüsleri

Kategori: Web Teknolojileri

26 Eyl 2009

“Nedir bu virüslerden çektiğim sunucumun her yeri virüs istilasında.  Sitelerimden virüs temizlemekten iş yapamıyorum” diyorsanız benim gibi ve hiç bir yol bulamadıysanız. Ben bunun için bir şey yaptım umarım kullananlarında işine yarar.

Ne yaptım ?

Aslında basit bir şey bütün ilgili dosyaları gezip virüsleri siliyor. Hepsi bu bir kaç paternim var bu paternlere uyan virüsleri temizliyorum. Bu scripti bir cron’a bağladım ve belli aralıklarla çalıştırıyorum. Eski dosyalarında her ihtimale karşı yedeklerini alıyorum. Peki benim iframe kullanan uygulamam var ne yapayım derseniz kendi iframe’lerimi büyük harfle IFRAME şeklinde yazıyorum. Script küçük harfe duyarlı olduğu için sadece onları temizliyor. Paternleri bir dizi içinde tutuyorum bu sayede yeni virüsler çıktıkça buraya ekleyeceğim. Sizde bu paternleri gleiştirir bana yollarsanız sevinirim. Bir de çok fazla dosyaya bakıp uzun sürmemesi için bu virüslerin ulaştığı index|default|main|home|footer|header kelimeleri içeren ve php|htm|html uzantıları ile biten dosyaları tarıyorum.

dosyaListele($dizin) şeklinde çalıştırmanız yeterli.
Eğer bunu sadece tek bir sitede çalıştıracaksanız /httpdocs yada /public_html gibi ana dizine koymanız yeterli. Yok sizinde benim gibi bir çok site ile başınız dertte ise /var/www/vhosts gibi bir dizine koyup çalıştırabilirsiniz. Tabi buradaki tek handikap yetki sorunu bu dosyanın tüm sitelere yazma izni olmalı ama aynı zamanda bu durum açığa sebep olmamalı.

İyi şanslar;

<?
/**
* *************************************************
* Güncelleme 25 Eylül 2009
* Yazan: Salih Özovalı
*
*/
$patern = array(
array(’<iframe’,                        ‘|<iframe .+?></iframe>|’),
array(’eval\(unescape\(’,                ‘|<script>eval\(unescape\(.+</script>|’),
array(’document\.write\(”<i”\+”fr”‘,    ‘|<script>document\.write\(”<i”\+”fr”.+</script>|’),
array(’c10z.+=’,                        ‘|<script>c10z.+=.+</script>|’),
array(’var x=”60S105S102S114S97S109S101S32S115S114S99S61S34S’,    ‘|<script>var x=”60S105S102S114S97S109S101S32S115S114S99S61S34S.+</script>|’),
array(’kpxv\[\'length\'\]‘,                ‘|<script>.+kpxv\[\'length\'\].+</script>|’)
);
function dosyaListele($klasor)
{
global $patern;
$dizin=opendir($klasor);
while ($file = readdir($dizin))
{
if ( $file!=”.” AND $file!=”..” AND $file!=”" )
{
if(is_dir($klasor.’/’.$file))
{
//echo ‘alt:’.$klasor.’/’.$file.”<br>\n”;
dosyaListele($klasor.’/’.$file);
}
elseif(eregi(’.*(index|default|main|home|footer|header).*\.(php|htm|html)$’,$file))
{// bakılacak dosya adları

$oku = file_get_contents($klasor.’/’.$file);
$virusBulundu = false;
for ($i=0; $i<sizeof($patern); $i++)
{
$desenler = $patern[$i];
//echo htmlspecialchars($desenler[0]).”<br>\n”;
if(eregi($desenler[0],$oku))
{
$virusBulundu = true;
//echo “UYGUN: “.htmlspecialchars($desenler[1]).”<br>\n”;
$oku = preg_replace($desenler[1],”,$oku);
}
}

if($virusBulundu)
dosyaYaz($klasor,$file,$oku);
}
}
}
closedir($dizin);
return;
}

function dosyaYaz($klasor, $file, $yaz)
{
// önce yedeğini al
if(file_exists($klasor.’/’.$file))
{
$bakno=1;
while(file_exists($klasor.’/’.$file.’.bak’.$bakno))
$bakno++;
copy($klasor.’/’.$file,  $klasor.’/’.$file.’.bak’.$bakno);
//echo “[kopyası: $klasor/$file.bak$bakno]\n”;
}
// sonra üzerine yaz
file_put_contents($klasor.’/’.$file,$yaz);
//echo “[yazilan: $klasor/$file]\n”;
}

$dizin = dirname(__FILE__)
$dosyalar = dosyaListele($dizin);

echo “ok.”.$dizin;
?>

Nalet olası iframe virüsleri için 1 Yorum

Avatar

ersen aşkın

Eylül 26th, 2009 at 18:24

çok faydalı bi yazı, paylaşım için teşekkürler..

Yorum Yapın

Ne için var bu site?

Yeşillik olsun ağaçlar kesilmesin falan diye değil heralde. Baktım ki yıllardır profesyonel anlamda çalışıyorum ama yazmadıktan sonra bunları kendimin yaptığına ben bile inanmıyorum. Yani bir nevi profesyonel hayatıma bir şaittir bu site.

Resimlerim