Персональный SEO блог


Обновление DLE 9.0. Cоветы по защите DLE. Баг Фиксы для DLE 8.0 – 9.0.

27.11.2010, обновлено: 24.01.2011 Опубликовано в разделе: DLE

Приветствую всех ещё раз, никогда не пишу два поста в день, но предыдущий рождался долго, поэтому его трудно отнести к сегодняшнему дню. Сейчас вернёмся к практике вебмастера, к нашим насущным проблема. В этом посте я выкладываю официальную версию DLE 9.0 (от 27 ноября 2010 года), где нет никаких багов и дырок по состоянию на этот день. Так же я напишу немного об самых уязвимых частях этого популярного php скрипта, дам заплатки для дыр, начиная с версии 8.0.

Все из нас встречали мнение типа «DLE – дырявый движок, им нельзя пользоваться», с первым абсолютно согласен, второе положение отрицаю полностью. Да, в DLE есть дырки и они будут всегда, имея такую популярность он подвержен пристальному вниманию сотен хакеров, от школьников до профи. Нужно чётко понимать для каких проектов можно использовать DLE и как защищать свой сайт.

Самые простые советы по защите DLE от меня:

  1. Ставим только официальную версию, во взломанных общедоступных версиях намного больше дырок.
  2. Если нам не нужна регистрация пользователей, отключаем её. Нет возможности регистрации, это значительно снижает возможность взлома.
  3. Пытаемся не использовать любые левые модули, их код всегда ослабляет защиту.
  4. Вовремя обновляем все новые версии, устраняем дырки в тот же день, как появилось предупреждение на официальном сайте.
  5. Правильно расставляем права на доступы к разным директориям, пишем robots.txt, закрывающий всё лишние. Не забываем вставлять .htaccess в папки /uploads/ и /templates/.
  6. Следим за вирусами на своём компе и аккуратно храним ftp пароли.

6 лёгких пунктов и мы на 95% защитились от школьников.

Баг Фиксы для DLE 8.0 – 9.0:

Заплатки для дыр на последних версиях:

Версия 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) );

Версия DLE 8.5

Проблема: Пользователю которому разрешена загрузка файлов на сервер (не картинок), может выйти за пределы разрешенной папки загрузки, а если он имеет администраторский аккаунт на сайте, то и повредить данные скрипта.
Ошибка в версии: 7.x – 8.5
Степень опасности: Средняя (Высокая при наличии администраторского аккаунта на сайте)

Для исправления откройте файл engine/inc/files.php и найдите:

$serverfile = trim( htmlspecialchars( strip_tags( $_POST['serverfile'] ) ) );
замените на:

if ($member_id['user_group'] == 1) $serverfile = trim( htmlspecialchars( strip_tags( $_POST['serverfile'] ) ) ); else $serverfile = ”;

if ( $serverfile != ” ) {

$serverfile = str_replace( “\\”, “/”, $serverfile );
$serverfile = str_replace( “..”, “”, $serverfile );
$serverfile = str_replace( “/”, “”, $serverfile );
$serverfile_arr = explode( “.”, $serverfile );
$type = totranslit( end( $serverfile_arr ) );
$curr_key = key( $serverfile_arr );
unset( $serverfile_arr[$curr_key] );

if ( in_array( strtolower( $type ), $allowed_files ) )
$serverfile = totranslit( implode( “.”, $serverfile_arr ) ) . “.” . $type;
else $serverfile = ”;

}

if( $serverfile == “.htaccess”) die(”Hacking attempt!”);
Откройте файл engine/classes/thumb.class.php и найдите:

$this->img['des'] = imagecreatetruecolor( $this->img['lebar_thumb'], $this->img['tinggi_thumb'] );
и добавьте выше:

if ($this->img['lebar_thumb'] < 1 ) $this->img['lebar_thumb'] = 1;
if ($this->img['tinggi_thumb'] < 1 ) $this->img['tinggi_thumb'] = 1;

Проблема: При определенных условиях на сайт можно провести атаку XSS. Данными условиями является посещение авторизованным администратором, сайта злоумышленника, при этом использование администратором устаревшего браузера, что может привести к перехвату куков браузера.
Ошибка в версии: 7.x – 8.5
Степень опасности: Низкая
Для исправления скачайте и скопируйте на свой сервер патч:

http://dle-news.ru/files/dle7_85_path.zip
Данный патч применим ко всем версиям: 7.x – 8.5

Версия DLE 8.2

Проблема: Недостаточная фильтрация входящих данных в модуле восстановления пароля.
Ошибка в версии: только 8.2, версии ниже 8.2, а также актуальная версия 8.3 данной уязвимости не подвержены
Степень опасности: Очень высокая
Для исправления скачайте и скопируйте на свой сервер патч:

http://dle-news.ru/files/dle82_path.zip

Версия DLE 8.0

Проблема: Недостаточная фильтрация входящих данных при обработке новостей.
Ошибка в версии: все версии
Степень опасности: Низкая
Ручное исправление:
Откройте файл: 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( “`”, “&#96;”, $source );
Ниже добавьте:

$source = preg_replace( “#<iframe#i”, “&lt;iframe”, $source );
$source = preg_replace( “#<script#i”, “&lt;script”, $source );

Скачать DLE 9.0

DLE 9.0 – последняя версия, все известные баги устранены на 27 ноября 2010 года.

Внимание: версия имеет открытый код, но есть ограничения в количество постов, после чего нужен ключ.



Комментариев 17

17 комментариев к «Обновление DLE 9.0. Cоветы по защите DLE. Баг Фиксы для DLE 8.0 – 9.0.»

  1. Не знал, что ты и с DLE работаешь. Сам тоже с ним чуток знаком, хорошая вещь по нагрузке, если делать сайты в основном из текстового наполнения. А какие конкретно сайты ты на нем делаешь? Только варез? Новостники какие?

  2. буквально всё, 90% использую его многие годы. 6-7 тысяч в день держит спокойно на обычном хостинге, без превышения нагрузок, таких показателей у остальных движков нет. DLE – отличный инструмент, главное умело им пользоваться. Под варез и новостники заточен ни он сам, а дизайны из паблика под него и куча школоты. В целом нормальный двиг, дырявый всегда, но к этому нужно подходить философски))

  3. Абсолютно со всем согласен. Все было интересно, сколько точно без напряга будет держать DLE. Теперь буду знать. В принципе для меня преимущества этой CMS как двига под хороший нагон трафа очевидны, сдерживает от того, чтобы перескочить на разработку сайтов под трафик на этом двиге только пока что его незнание. На WP я все же делаю крайне быстро, половину Кодекса как минимум изучил уже. А про шабы под варез четко отмечено! На самом деле на DLE абсолютно такие же сайты можно делать, как на Joomla или WP, просто шабы почему-то только под варез. Точно знаю, что наш коллега, бывший владелец блога, как раз все до единого свои сайты под траф делает на DLE и не жалуется :) .

  4. wp – всё-таки блоггерский двиг, он не выдерживает больших нагрузок и ни всегда удобен для нормального сайта. был у меня на wp сайт около 2 тыс в день, я запарился его оптимизировать, всё висло, сервер грузило, кароче это был ужас. в итоге я его так “выдрочил”, что он теперь под агс и траф идёт только с гугла))) так я понял, что посещаемые проекты и wp совместимы очень трудно.
    Перспективный блоггер написал:

    На WP я все же делаю крайне быстро

    дело привычки, dle тоже освоишь быстро.

  5. Ну, у меня WP как раз 2К на онкельхосте вообще без проблем. Правда по функционалу только 3-4 плагина, даже комментирования нет. Как испытаю на собственной шкуре его предел, то скорее всего как раз обращусь к ДЛЕ. Правда с моими черепашьими темпами это еще с год где-то :) .

  6. Виктор пишет:

    Спасибо. Скачал архив, установил. Перед этим устанавливал 8.5trial с офсайта. Я не вебмастер, пока не вижу принципиальных отличий, хотя знаю, что они есть. У меня 3 вопроса:
    1. Если моё вмешательство будет ограничиваться только корректировкой шаблона, стоит ли мне устанавливать версию с открытым кодом? Какие плюсы “вашей” версии?
    2. Относительно безопасности – лучше открытый или закрытый код?
    3. Не приравнивается ли версия, выложенная Вами, к нуленой? Я просто противник любых нуледов, сборок и т.д.

    Извините, если мои вопросы покажутся глупыми – кроме жумлы пока ни с чем отношений не имел :) . Достала она, вот я и решил. Спасибо за терпение и ответ.

  7. @ Виктор:
    добрый день, отвечаю в порядке заданных вопросов:
    1. стоит, потому что на демо с закрытым кодом ничего нельзя толком настроить и изменить, потому что код закрыт.
    2. не влияет, лучшая безопасность – самая новая версия, плюс ставить все заплатки, которые появляются на официальном сайте.
    3. нет, это официальная версия, без единого изменения. я гарантирую это. Более того, я призываю после установки скрипта покупать на него лицензию, если у вас позволяют средства. Я не распространяю пиратский или нуленый софт, а даю возможность Вам познакомиться с движком. Платить или нет за него, решать только Вам.

  8. JayK пишет:

    @ Заводской seo раб:Я уже решил, подтверждаю, это именно та самая полумифическая “чистая” версия бледный призрак которой носится по дээлешным варезникам, только что сравнивал побайтово еще с четыремя дистрибутивами, и методом сравнения с этой вот много чего интересного в них нашел.
    Автору респект, разработчикам уважуха;)

  9. JayK пишет:

    @ Виктор:
    Нуллы категорически не рекомендуются не только по идейным соображениям или высокой и чистой морали. А в основном потому что делаются они не просто так, грамотно сделанный нулл такого большого скрипта может выглядеть неотличимым от оригинала за мааааленькими исключениями, например ваш любимый сайт будет распространять тонны спама, и его забанят, выполнять левые скрипты и накручивать чужие пузомерки, и его забанят, учавствовать в зомби сетях и прочая прочая прочая… итог один, про банальное воровство контента молчу, контент с говносайтов мало кому нужен;)

  10. Виктор пишет:

    Спасибо за ответы. Уже начинает проясняться. Лицензию куплю однозначно, просто если есть возможность – хочу ознакомиться. Кстати, начал выбирать из коммерческих – сначала поставил UMI, потом NetCat, сечас вот DLE. Наверное, на нём и остановлюсь, чем то он меня зацепил. Для того, чтобы у первых двух был функционал, как у DLE, нужно покупать их самые дорогие пакеты.
    И ещё, Вы часом не сталкивались с “eleanor-cms”? Стоял в моем списке после DLE, да уже и не знаю – нужен ли он?
    Ещё раз благодарю.

  11. JayK пишет:

    @ Виктор:
    Самое главное преимущество дле это его нмизкая ресурсоемкость, то есть скрипт, естественно грамотно настроенный и не увешанный пачкой левых плагинов и кривых хаков работает заметно быстрее конкурентов…

  12. @ JayK:
    да, вы абсолютно правы по поводу того кто и зачем делает нул.
    Виктор написал:

    eleanor-cms

    слышал, видел, но не работал. я предпочитаю тот же dle, функционально и недорого. возможно и нужен для расширения кругозора.
    Виктор написал:

    Лицензию куплю однозначно, просто если есть возможность – хочу ознакомиться.

    когда проект уже даёт первые плоды и намечается его успешность, тогда можно спокойно покупать лицензию. на дле можно построить почти всё, он потребляет мало ресурсов, у меня сайты с 7 тысячами уников и 30 тыс просмотров в день, держаться на обычном хосте без превышения нагрузок.

  13. JayK пишет:

    DLE обновилось до версии 9,2 среди изменений достаточно интересные фичи, такие скажем как работа с robots.txt, нашел несколько релизов про которые утверждается что они чистые, хотел бы сравнить их с действительно скачанным с dle-news…

  14. @ JayK:
    сегодня к вечеру выложу, проблемы с интернетом. Adsl падает постоянно, третий день разбираюсь с провайдером.

  15. JayK пишет:

    @ Заводской seo раб:
    Будем ждать-с…

  16. Афанасий пишет:

    я школьник и php знаю с 13 лет. Взламываю любые ДЛЕ гс, поэтому не нужно так прям относиться к школьникам! Есть умнее Вас в 4 раза!
    ЗЫ – нуллы ставят нубы, ибо нету средств и даже не знают какие в нулле дле баги есть) я прав?

  17. о наших школьниках я очень высокого мнения. ещё бы они применяли свои умения в нормальной плоскости, была бы просто сказка.

Авторский seo блог заводского трудяги, seo новости и полезная seo информация

Дизайн и создание шаблона