DLE > Баг-Фікси > Недостатня фільтрація вхідних даних
Недостатня фільтрація вхідних даних08-06-2010. Автор: Site Administrator |
|
Проблема: Користувач, якому дозволене завантаження файлів на сервер (не картинок), може вийти за межі дозволеної папки завантаження, а якщо він має адміністраторський аккаунт на сайті, то і пошкодити дані скрипта.
Помилка у версії: Всі версії Ступінь небезпеки: Середній (Високий при наявності адміністраторського аккаунту на сайті) Для виправлення відкрийте файл 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 на нашому сайті оновлено. Повернутися назад |