Forum. MyNuke.ru
Forum. MyNuke.ruСообщения за сегодняПерсональные сообщения

Навигация  
Вернуться   Forum. MyNuke.ru > PHP-NUKE > Безопасность > Уязвимости Защиты
Ник
Пароль
Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Soniks вне форума      Старый PHP-Nuke POST - SQL-Инъекция #1  
Soniks
Администратор
Регистрация: 16.01.2005
Сообщения: 4,814


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

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

Продукт: PHP-NUKE

Версия: 7.8 (и ниже)

Уровень: Высокий

Описание:
Непонятно почему раньше эту уязвимость не нашли, точнее, устранили , но все же. В самой PHP-NUKE есть фильтр запросов к скриптам системы, он находится в файле mainfile.php. Он фильтрует как и XSS, так и sql-инъекции, но в отличие от xss атак, sql-иньекции фильтруются только запросы GET (то что вы вводите в адресную строку браузера), а вот POST метод не фильтруется, поэтому у злоумышленника появляется возможность при написании правильного POST запроса к скрипту выполнить SQL-инъекцию и получить данные с вашей БД. Что странно и системы безопасности, как NukeSentinel так же этот момент обошли.

Устанение:
Если вы переименовали стандартные префиксы (_nuke) таблиц в свои, то уже можете быть спокойны на 70%

Откройте mainfile.php
Найдите:
PHP код:
 $queryString strtolower($_SERVER['QUERY_STRING']);
if (
stripos_clone($queryString,'%20union%20') OR stripos_clone($queryString,'/*') OR stripos_clone($queryString,'*/union/*') OR stripos_clone($queryString,'c2nyaxb0')) {
header("Location: index.php");
die();


Ниже добавим проверку POST:
PHP код:
 $postString "";
foreach (
$_POST as $postkey => $postvalue) {
    if (
$postString "") {
     
$postString .= "&".$postkey."=".$postvalue;
    } else {
     
$postString .= $postkey."=".$postvalue;
    }
}
str_replace("%09""%20"$postString);
$postString_64 base64_decode($postString);
if (
stristr($postString,'%20union%20') OR stristr($postString,'*/union/*') OR stristr($postString,' union ') OR stristr($postString_64,'%20union%20') OR stristr($postString_64,'*/union/*') OR stristr($postString_64,' union ')) {
header("Location: index.php");
die();



Далее пофиксим еще небольшую дырочку, открываем modules.php
Находим:
PHP код:
 $result $db->sql_query("SELECT active, view FROM ".$prefix."_modules WHERE title='$name'"); 

изменяем на:
PHP код:
 $result $db->sql_query("SELECT active, view FROM ".$prefix."_modules WHERE title='".addslashes($name)."'"); 

Находим:
PHP код:
 $result2 $db->sql_query("SELECT mod_group FROM ".$prefix."_modules WHERE title='$name'"); 

изменяем на:
PHP код:
 $result2 $db->sql_query("SELECT mod_group FROM ".$prefix."_modules WHERE title='".addslashes($name)."'"); 


Единственный минус решение этой проблемы если будите постить, скажем, в форуме сообщение и в нем встретится слово union, то это сообщение не пройдет!

Последний раз редактировалось Soniks, 13.09.2005 в 19:24.
 
"Если бы вам удалось надавать под зад человеку, виноватому в большинстве ваших неприятностей - вы бы неделю не смогли сидеть".


Vek вне форума      Старый #2  
Аватара для Vek
Vek
Участник+
Регистрация: 09.07.2005
Сообщения: 244


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

Посмотреть профиль Отправить персональное сообщение для Vek Найти все сообщения от Vek Добавить Vek в список друзей  
22.01.2006, 14:31

это нужно делать для Nuke 7.9?
 
У меня вопросов до ... :)


Soniks вне форума      Старый #3  
Soniks
Администратор
Регистрация: 16.01.2005
Сообщения: 4,814


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

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

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


Ответ


Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Совмещаю PHP Nuke 7.8 и vBulletin 3.0.7 Ernest-Oleg-Iv Настройка и Изменение 5 07.01.2007 17:18
пробоемы с Php nuke 7.5 rus незарегистрированный Установка 3 08.09.2005 01:20


Часовой пояс GMT +4, время: 16:03.


На Верх
Рейтинг@Mail.ru