17 ноя 2011
Недостаточная фильтрация данных - способ взлома и защиты DLE
У нас вы можете скачать бесплатно Недостаточная фильтрация данных - способ взлома и защиты DLE

Данный материал предоставлен сайтом Skripter.info исключительно в ознакомительных целях. Администрация не несет ответственности за его содержимое.
Недостаточная фильтрация данных - способ взлома и защиты DLE


За последнее время участились случаи взлома сайтов на CMS DataLife Engine, это связано с новоиспеченной уязвимостью в популярном движке. Думаю пора открыть завесу тайны и рассказать как использовать эту дыру и как уберечь свой сайт. Почему я это делаю спросите Вы, отвечаю - больше половины проектов обновились до DLE 9.0, а на старые версии поставлены заплатки. Не расстраиваетесь, еще можно отыскать "дырявые" сайты, администратор которых не следит за выходом исправлений. В полной новости вы узнаете как взломать сайт на DLE и как уберечь свой проект от покушений.

Взлом сайта на DLE версии ниже 9.0, инструкция (Работаем через браузер Opera 10).

1. Заходим на сайт жертвы

2. Регистрируемся и авторизуемся на сайте

3. Переходим по ссылке https://site.ru/engine/images.php (где site.ru - адрес жертвы)

4. Открываем исходный код открытой нами страницы и после:
<input type="hidden" name="area" value="" />


(строка может немного отличаться и повторяться 2 раза, вставляем после 1й)

вставляем:
<input type="hidden" name="serverfile" value="../../engine/data/dbconfig.php" />


Нажимаем в браузере, под вкладками Применить изменения

5. После этих действий необходимо проверить работоспособность дырки, для этого на странице https://site.ru/engine/images.php, чей исходный код мы редактировали пунктом выше, нажимаем Загрузить. В списке загруженных файлов должен появиться dbconfig.php, мы можем продолжить...

Что бы скачать файл конфига мы должны навести на него указатель мыши и посмотреть ID, затем через Исходный код страницы / Применить изменения мы вставляем в любое место страницы сайта жертвы ссылку вида:
<a href='https://site.ru/engine/download.php?id=ID_файла'>[download]</a>


и скачиваем файл dbconfig.php с данными для входа в phpMyAdmin, адрес которой обычно site.ru/phpmyadmin/ или site.ru/myadmin/

Только что я рассказал Вам как взломать сайт на DataLife Engine, удачи.

Сейчас настало время перейти к рассмотрению способа защиты от взлома, описанного выше:


1. Открываем файл 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!");


2. Открываем файл 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;


Установка защиты от взлома DLE, а точнее исправление недостаточной фильтрации данных завершена.









Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
Linux | 17 ноября 2011 20:58
  • Группа: Посетители |
  • Комментарий: 1 (ссылка)

аФтор это было на dle <=8.5 Уже не актуально!

JabbaWockeez | 17 ноября 2011 21:03

Linux,
Какая разница? Кому то может пригодиться!

МоРкоВкА | 17 ноября 2011 21:04
  • Группа: Посетители |
  • Комментарий: 3 (ссылка)

JabbaWockeez,
Только хотел написать)

Vadim) | 17 ноября 2011 21:08
  • Группа: Посетители |
  • Комментарий: 4 (ссылка)

Не работает на DLE 9.2

Gamer | 17 ноября 2011 21:15
  • Группа: Посетители |
  • Комментарий: 5 (ссылка)

на линейках DLE 9.х уже давно эти дыры зашиты.

san9-n | 17 ноября 2011 21:41
  • Группа: Посетители |
  • Комментарий: 6 (ссылка)

Тупой копипаст! Скопировано с источников до последнего слова!

МоРкоВкА | 17 ноября 2011 22:16
  • Группа: Посетители |
  • Комментарий: 7 (ссылка)

san9-n,
А где сейчас нету копипаста? Особенно на госте!

J.O.K.E.R. | 17 ноября 2011 22:35
  • Группа: Посетители |
  • Комментарий: 8 (ссылка)

Эта хня не пашет с 8.2! а сайтов ниже 8.3 я не видел уже давно...

san9-n | 17 ноября 2011 22:54
  • Группа: Посетители |
  • Комментарий: 9 (ссылка)

МоРкоВкА,Мог бы написать статью сам, либо найти дырки на новых версиях, а то dle 8.3 и нижу ушли в древние века!

Linux | 18 ноября 2011 00:09
  • Группа: Посетители |
  • Комментарий: 10 (ссылка)

san9-n,
не ну юзается еще кое-где 8.5,но там данный баг не актуален......

Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.