1

Тема: Известные уязвимости CMS DLE

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

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


Исправление с оф. сайта техподдержки 07 июня 2010

Для исправления откройте файл 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;

Поделиться

2

Re: Известные уязвимости CMS DLE

Чем опасна следующая уязвимость я не знаю, но техподдержка оценила степень ее опасности как "Высокая". Дыра присутствует во всех версиях, включая 9.0.

Исправления с оф. сайта техподдержки 14 сентября 2010

Для исправления откройте файлы 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) );

Поделиться

3

Re: Известные уязвимости CMS DLE

Сегодня на оф. сайте разработчика были опубликованы патчи безопасности для DLE версий 9.7 и ниже. Степень опасности существующих ныне уязвимостей движка DLE была оценена как "Высокая", если на сервере существует включенной настройка 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/init.php и там найдти:

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

Заменить найденное на:

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

Открыть файл engine/modules/functions.php и найти:

global $tpl;

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

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

Поделиться