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


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

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

Продукт: PHP-Nuke
Версия: 8.0 и ниже
Описание:
При определенных настройках сервера (4.0.7<=PHP<=5.2.1 и выключенном параметре register_globals off), позволяет злоумышленнику подменять переменные в скриптах, при помощи POST запроса.
Устранение:

Открываем:
mainfile.php

Находим (89 строка):
PHP код:
 if (!ini_get('register_globals')) {
@
import_request_variables("GPC""");


И меняем на:
PHP код:
 if (!ini_get('register_globals')) {
extract($_COOKIEEXTR_SKIP);
extract($_POSTEXTR_SKIP);
extract($_GETEXTR_SKIP);


Для версий php-nuke ниже 8.0 нужно так же добавить еще ниже:
PHP код:
 // 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);
}



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