Тема: Php-Nuke POST XSS
Показать сообщение отдельно
Astrix вне форума      Старый #6  
Аватара для Astrix
Astrix
Бывалый
Регистрация: 09.01.2007
Сообщения: 309


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

Посмотреть профиль Отправить персональное сообщение для Astrix Посетить домашнюю страницу Astrix Найти все сообщения от Astrix Добавить Astrix в список друзей  
18.03.2007, 22:02

Цитата: Сообщение от Soniks
И меняем на:
PHP код:
 if (!ini_get('register_globals')) {
 
extract($_COOKIEEXTR_SKIP);
 
extract($_POSTEXTR_SKIP);
 
extract($_GETEXTR_SKIP);




Soniks, я бы от себя порекомендовал сделать небольшую перестановку в этом коде, а именно:

PHP код:
 if (!ini_get('register_globals')) {
 
extract($_POSTEXTR_SKIP);
 
extract($_GETEXTR_SKIP);
 
extract($_COOKIEEXTR_SKIP);



А перед ним вставить вот такой код:

PHP код:
 foreach ($_COOKIE AS $c_key => $c_val)
{
    if (isset(
$_POST[$c_key]) OR isset($_GET[$c_key])) unset($_COOKIE[$c_key]);



Теперь поясню, чем чревато невыполнение этой маленькой просьбы.

Переменные cookie вообще не подлежат никакой проверке в Нюке и (мною было только что проверено!!!) хакер может сформировать определенным образом эти самые куки и выполнить произвольный SQL-запрос в БД жертвы.

В связи с этим предлагаю уничтожать все переменные, содержащиеся одновременно в cookie и передаваемые в post/get запросе, отдавая при этом приоритет post/get, т. к. они проходят проверку.

PS
Уязвимость актуальна только при отключенном параметре magic_quotes_gpc

PPS
Найдено мною только что.
 
Хочешь обнять весь мир? - Купи глобус!