anti iframer
Достался мне похаканый сайтик на joomla, который был жестоко проифрэймлен. Симптомы такие, во всех папках до 3-го уровня вложенности, где есть один из файлов index.html, index.php, default.php добавлен .htaccess и втсавлены iframe в эти файлы. Пришлось писать «удалятор» этих пакостей. Т.к. это joomal то index.html используются лишь для того, чтобы запретить просмотр содержимого каталогов на сайте, то их я просто очищаю, а из остальных пришлось гадость вырезать:
<?php
function fixIframe($directory, $level, $day) {
if ($handle = opendir($directory)) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
if (is_dir($directory. "/" . $file)) {
if($level > 0) {
fixIframe($directory. "/" . $file, $level - 1, $day);
}
} else {
$path = $directory . "/" . $file;
if (date("mdYH", filemtime($path)) == $day){
switch($file){
case ".htaccess":@unlink($path);break;
case "index.html":copy($path,$path.".bak");$f=fopen($path,"w");fclose($f);break;
case "index.php":
case "default.php":copy($path,$path.".bak");
$content = file_get_contents($path);
file_put_contents($path,preg_replace("#(.*?)(<\\?php echo '<\\?eval\\(base64_decod.*?\\);\\?>'; \\?>)(.*)#","\\1\\3",$content));
break;
}
}
}
}
}
closedir($handle);
}
}
fixIframe("./", 3, '0828200905');
?>
function fixIframe($directory, $level, $day) {
if ($handle = opendir($directory)) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
if (is_dir($directory. "/" . $file)) {
if($level > 0) {
fixIframe($directory. "/" . $file, $level - 1, $day);
}
} else {
$path = $directory . "/" . $file;
if (date("mdYH", filemtime($path)) == $day){
switch($file){
case ".htaccess":@unlink($path);break;
case "index.html":copy($path,$path.".bak");$f=fopen($path,"w");fclose($f);break;
case "index.php":
case "default.php":copy($path,$path.".bak");
$content = file_get_contents($path);
file_put_contents($path,preg_replace("#(.*?)(<\\?php echo '<\\?eval\\(base64_decod.*?\\);\\?>'; \\?>)(.*)#","\\1\\3",$content));
break;
}
}
}
}
}
closedir($handle);
}
}
fixIframe("./", 3, '0828200905');
?>
0828200905 — это день атаки, что мне показалось неожиданным, так это то, что процесс записи этого вредоносного кода занял несколько часов.
31.08.2009 в 10:06
А ifram-ы были добавлены в конец файлов?
Я вроде с таким встречался. Тогда был заражен весь хостинг и после удаления фрейма он опять появлялся в конце.
Но я сделал так просто в конце inex.php дописал exit() и даже когда фрейм опять дописывался в файл он просто не отобрался.
31.08.2009 в 19:06
А ifram-ы были добавлены в конец файлов?
Я вроде с таким встречался. Тогда был заражен весь хостинг и после удаления фрейма он опять появлялся в конце.
Но я сделал так просто в конце inex.php дописал exit() и даже когда фрейм опять дописывался в файл он просто не отобрался.
31.08.2009 в 10:15
Судя по всему да, в конец. У меня подозрение, что тоже весь хоcтинг заражён, посмотрим что будет. С exit() идея интересная, спасибо.
31.08.2009 в 19:15
Судя по всему да, в конец. У меня подозрение, что тоже весь хоcтинг заражён, посмотрим что будет. С exit() идея интересная, спасибо.
01.09.2009 в 03:00
хотя для joomla такое не подойдёт, там вель инклудятся они
01.09.2009 в 12:00
хотя для joomla такое не подойдёт, там вель инклудятся они