Показать сообщение отдельно
Soniks вне форума      Старый Инклюдинг локальных файлов в PHP-Nuke #1  
Soniks
Администратор
Регистрация: 16.01.2005
Сообщения: 4,814


Пожаловаться на это сообщениеОтветить с цитированием

Посмотреть профиль Отправить персональное сообщение для Soniks Посетить домашнюю страницу Soniks Найти все сообщения от Soniks Добавить Soniks в список друзей  
15.03.2007, 13:51

Продукт: PHP-Nuke
Версия: 8.0 и ниже
Описание:
Уязвимость позволяет удаленному пользователю получить доступ к важным данным на системе. Уязвимость существует из-за недостаточной обработки входных данных в параметре куки файла "lang" в сценарии mainfile.php. Удаленный пользователь может просмотреть произвольные файлы на системе (и не только просмотреть!). Для успешной эксплуатации уязвимости требуется, чтобы на системе опция "magic_quotes_gpc" была отключена.

Источник: http://www.securitylab.ru

Устранение:

Открываем mainfile.php
Находим (318 строка):
PHP код:
 if (isset($newlang) AND !stripos_clone($newlang,".")) {
if (
file_exists("language/lang-".$newlang.".php")) {
setcookie("lang",$newlang,time()+31536000);
include_once(
"language/lang-".$newlang.".php");
$currentlang $newlang;
} else {
setcookie("lang",$language,time()+31536000);
include_once(
"language/lang-".$language.".php");
$currentlang $language;
}
} elseif (isset(
$lang)) {
include_once(
"language/lang-".$lang.".php");
$currentlang $lang;
} else { 

Заменяем на:
PHP код:
 if (isset($_GET['newlang']) AND eregi('^[a-z0-9]+$',$_GET['newlang'])) {
if (
file_exists("language/lang-".$_GET['newlang'].".php")) {
setcookie("lang",$_GET['newlang'],time()+31536000);
include_once(
"language/lang-".$_GET['newlang'].".php");
$currentlang $_GET['newlang'];
} else {
setcookie("lang",$language,time()+31536000);
include_once(
"language/lang-".$language.".php");
$currentlang $language;
}
} elseif (isset(
$_COOKIE['lang']) AND eregi('^[a-z0-9]+$',$_COOKIE['lang'])) {
include_once(
"language/lang-".$_COOKIE['lang'].".php");
$currentlang $_COOKIE['lang'];
} else { 


На этом все!
 
"Если бы вам удалось надавать под зад человеку, виноватому в большинстве ваших неприятностей - вы бы неделю не смогли сидеть".