/var/log/life.log
Блог программиста из солнечной Бурятии

anti iframer

Достался мне похаканый сайтик на joomla, который был жестоко проифрэймлен. Симптомы такие, во всех папках до 3-го уровня вложенности, где есть один из файлов index.html, index.php, default.php добавлен .htaccess и втсавлены iframe в эти файлы. Пришлось писать “удалятор” этих пакостей. Т.к. это joomal то index.html используются лишь для того, чтобы запретить просмотр содержимого каталогов на сайте, то их я просто очищаю, а из остальных пришлось гадость вырезать:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?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');
?>

0828200905 – это день атаки, что мне показалось неожиданным, так это то, что процесс записи этого вредоносного кода занял несколько часов.