dle патчи безопасности

Время не стоит на месте, как и разработка движков. Однако как и разработчики, так и хакеры тоже не дремлют и ищут дырки в движках. Обезопасить свой сайт на движке DLE можно, закрывая выявленные уязвимости.

Устанавливайте все, согласно своей версии движка.

—————————————————————
Update 11.08.2017
Уязвимые версии: 11.3 и все более ранние
Степень опасности: Высокая
скачать архив dle113_path.zip, распаковать и загрузить по фтп с заменой файлов.

—————————————————————
Update 04.04.2017
Уязвимые версии: 11.2 и все более ранние
Степень опасности: Высокая
зайти на сайт по фтп, открыть файл /engine/go.php, найдите код

$url = @str_replace ( "&", "&", $url );

и замените на

$url = htmlspecialchars( $url, ENT_QUOTES, $config['charset'] );
$url = str_replace ( "&", "&", $url );

откройте файл /engine/ajax/typograf.php и найдите:

$txt = trim( convert_unicode( $_POST['txt'], $config['charset'] ) );

ниже добавьте:

require_once ENGINE_DIR . '/classes/parse.class.php';
$parse = new ParseFilter();
$txt = $parse->process( $txt );
$txt = preg_replace( "/javascript:/i", "jаvascript:", $txt );
$txt = preg_replace( "/data:/i", "dаta:", $txt );

—————————————————————
Update 09.12.2016
Уязвимые версии: 11.1 и все более ранние
Степень опасности: Высокая
зайти на сайт по фтп, открыть файл /engine/classes/parse.class.php, найдите код

if( preg_match( "/[?&;%< \[\]]/", $url ) ) {

			if( $align != "" ) return "[img=" . $align . "]" . $url . "[/img]";
			else return "[img]" . $url . "[/img]";

		}

и замените на

if( preg_match( "/[?&;%< \[\]]/", $url ) ) {

			return $matches[0];

		}

—————————————————————
Уязвимые версии: 10.0 — 8.5
Степень опасности: Высокая
зайти на сайт по фтп, открыть файл /engine/classes/min/index.php, 1ую строку файла изменить

< ?php

на

< ?php
if (isset($_GET['f'])) { 
$_GET['f'] = str_replace(chr(0), '', (string)$_GET['f']); 
} 

—————————————————————
Уязвимые версии: только 9.7
Степень опасности: Высокая
скачать архив dle97_path.zip, распаковать и загрузить по фтп с заменой файлов.

—————————————————————
Уязвимые версии: 9.6 и все более ранние
Степень опасности: Высокая
скачать архив dle97_path_2.zip, распаковать и загрузить по фтп с заменой файлов.

—————————————————————
Уязвимые версии: 9.6 и все более ранние
Степень опасности: Высокая при использовании включенной настройки register_globals
зайти на сайт по фтп, открыть файл /engine/modules/sitelogin.php, найти строку

$dle_login_hash = "";

после нее добавить

$_TIME = time () + ($config['date_adjust'] * 60);

найти строку

if( $member_id['user_id'] ) {

после нее добавить

session_regenerate_id();

найти строку

$member_id = $db->super_query( "SELECT * FROM " . USERPREFIX . "_users WHERE user_id='" . intval( $_COOKIE['dle_user_id'] ) . "'" );

после нее добавить

session_regenerate_id();

открыть файл /engine/modules/functions.php, найти строку

global $tpl;

после нее добавить

if (!class_exists('dle_template')) {
return;
}

открыть файл /engine/init.php, найти строку

if (in_array ( $_POST['dlenewssortby'], $allowed_sort )) {

заменить на

if (in_array($_POST['dlenewssortby'], $allowed_sort) AND stripos($find_sort, "dle_sort_") === 0) {

—————————————————————
Уязвимые версии: 9.6 и все более ранние
Степень опасности: Высокая
скачать архив dle96_path.zip, распаковать и загрузить по фтп с заменой файлов.

—————————————————————
Уязвимые версии: 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) );

Для версии 9.0 можно скачать готовый архив dle90_path.zip, распаковать, закачать по фтп с заменой файлов.

—————————————————————
Уязвимые версии: 8.5 — 7.x
Степень опасности: Средняя (Высокая при наличии администраторского аккаунта на сайте)
зайти на сайт по фтп, открыть файл /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;

—————————————————————
Уязвимые версии: 8.5 — 7.x
Степень опасности: Низкая
скачать архив dle7_85_path.zip, распаковать и загрузить по фтп с заменой файлов.

—————————————————————
Уязвимые версии: только 8.2
Степень опасности: Очень высокая
скачать архив dle82_path.zip, распаковать и загрузить по фтп с заменой файлов.

—————————————————————
Уязвимые версии: 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") || ($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 = str_replace( "`", "&#96;", $source );

после нее добавить

$source = preg_replace( "#<iframe #i", "<iframe", $source );
$source = preg_replace( "#<script#i", "<script", $source );

—————————————————————
Уязвимые версии: 7.5 и все более ранние
Степень опасности: Низкая
скачать архив dle75_path.zip, распаковать и загрузить по фтп с заменой файлов.

Патчи для версий ниже 7.5 выкладывать не буду, вряд ли их кто то еще использует.

2 комментария

Аватар

Marina on 24.04.2014 at 13:36.

Спасибо, полезный пост про все версии, иногда просят залатать дыряшки в разных dle версиях.

Ответить

manager

manager on 24.04.2014 at 13:43.

Удобно ;-)

Ответить

Скажите свое мнение

ваш email не публикуется. обязательно *

;-) :yawn: :whew: :toivo: :tmi: :time: :thinking: :talking: :sweating: :swear: :sun: :star: :smoke: :smirk: :sleepy: :skype: :shock: :shake: :rofl: :rain: :punch: :puke: :poolparty: :pizza: :phone: :party: :oops: :nod: :no: :ninja: :neutral: :nerd: :music: :muscle: :mrgreen: :movie: :mooning: :mmm: :middlefinger: :makeup: :mail: :mad: :lol: :lipssealed: :kiss: :itwashtme: :inlove: :idea: :hi: :heidy: :heart: :headbang: :happy: :handshake: :giggle: :fubar: :flower: :evilgrin: :emo: :dull: :drunk: :drink: :doh: :devil: :dance: :cry: :cool: :coffie: :clapping: :cash: :call: :cake: :bug: :brokenheart: :bow: :blush: :beer: :bear: :bandit: :arrow: :angry: :angel: :^) :???: :?: :-| :-o :-P :-D :-) :-( :!:

 

*

code

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.