Soniks
10.03.2007, 05:16
Продукт: PHP-Nuke
Версия: 8.0 и ниже
Описание:
При определенных настройках сервера (4.0.7<=PHP<=5.2.1 и выключенном параметре register_globals off), позволяет злоумышленнику подменять переменные в скриптах, при помощи POST запроса.
Устранение:
Открываем:
mainfile.php
Находим (89 строка):
if (!ini_get('register_globals')) {
@import_request_variables("GPC", "");
}
И меняем на:
if (!ini_get('register_globals')) {
extract($_COOKIE, EXTR_SKIP);
extract($_POST, EXTR_SKIP);
extract($_GET, EXTR_SKIP);
}
Для версий php-nuke ниже 8.0 нужно так же добавить еще ниже:
// Die message for empty HTTP_REFERER
$posttags = "<b>Внимание:</b> ваш браузер не отправляет шапку HTTP_REFERER на сайт.<br>";
$posttags .= "Это может быть вызвано вашим браузером, использования proxy server или Firewall.<br>";
$posttags .= "Пожалуйста, измените ваш браузер или выключите использование proxy<br>";
$posttags .= "или выключите 'Deny servers to trace web browsing' в вашем firewall<br>";
$posttags .= "и вы не должны иметь проблем с отсылкой POST запросов на сайт.";
if ($_SERVER['REQUEST_METHOD'] == "POST") {
if (isset($_SERVER['HTTP_REFERER'])) {
if (!stripos_clone($_SERVER['HTTP_REFERER'], $_SERVER['HTTP_HOST'])) {
die('Posting from another server not allowed!');
}
} else {
die($posttags);
}
}
На этом все!:breton:
Версия: 8.0 и ниже
Описание:
При определенных настройках сервера (4.0.7<=PHP<=5.2.1 и выключенном параметре register_globals off), позволяет злоумышленнику подменять переменные в скриптах, при помощи POST запроса.
Устранение:
Открываем:
mainfile.php
Находим (89 строка):
if (!ini_get('register_globals')) {
@import_request_variables("GPC", "");
}
И меняем на:
if (!ini_get('register_globals')) {
extract($_COOKIE, EXTR_SKIP);
extract($_POST, EXTR_SKIP);
extract($_GET, EXTR_SKIP);
}
Для версий php-nuke ниже 8.0 нужно так же добавить еще ниже:
// Die message for empty HTTP_REFERER
$posttags = "<b>Внимание:</b> ваш браузер не отправляет шапку HTTP_REFERER на сайт.<br>";
$posttags .= "Это может быть вызвано вашим браузером, использования proxy server или Firewall.<br>";
$posttags .= "Пожалуйста, измените ваш браузер или выключите использование proxy<br>";
$posttags .= "или выключите 'Deny servers to trace web browsing' в вашем firewall<br>";
$posttags .= "и вы не должны иметь проблем с отсылкой POST запросов на сайт.";
if ($_SERVER['REQUEST_METHOD'] == "POST") {
if (isset($_SERVER['HTTP_REFERER'])) {
if (!stripos_clone($_SERVER['HTTP_REFERER'], $_SERVER['HTTP_HOST'])) {
die('Posting from another server not allowed!');
}
} else {
die($posttags);
}
}
На этом все!:breton: