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

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


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

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

Продукт: PHP-Nuke

Версия: 7.8 - 7.9 + patch 3.1

Затронуты файлы: modules.php

Описание уязвимости:
Вышедший в свет фикс-патч версии 3.1 от http://www.nukeresources.com/
исправляет в PHP-Nuke не только найденные ошибки, а как уже не однократно было замечено и создает новые бреши в коде, что позваляет хаккеру выполнить нападение на сайт! Что больше всего поражает данная уязвимость уже была пофиксина в самой php-nuke на стадии 7.0 версии, а авторы данного патча по причине не знания php или же из за невнимательности, разграничили права на переменную $files, $mop и $name. Вот часть кода обычной php-nuke 7.8:
PHP код:
 ...
  if (
ereg("\.\.",$name) || ereg("\.\.",$file) || ereg("\.\.",$mop)) {
   echo 
"You are so cool...";
  } else {
... 

что в принципе уже запрещало выход из директории modules
А вот код патча 3.1:
PHP код:
 ....
  if (
stripos_clone($name"..") OR ((stripos_clone($modstring,"&file=nickpage") || stripos_clone($modstring,"&user=")) AND ($name=="Private_Messages" OR $name=="Forums" OR $name=="Members_List"))) header("Location: index.php");
....
if (!isset(
$file) OR $file != $_REQUEST['file']) $file="index";
if (
stripos_clone($file,"..") OR stripos_clone($mop,"..")) die("You are so cool...");
..... 

в результате этого идет проверка на вхожден строки начнаю не с символов ..
А этого уже достаточно что бы перейти в другой раздел на сервере используя следующий вызов:
&file=../../../../../../../../../etc/passwd

Устранение:
Вернем все как было, это самый разумный способ:
PHP код:
 if (ereg("\.\."$name) OR ((stripos_clone("&file=nickpage",$modstring) || stripos_clone("&user=",$modstring)) AND ($name=="Private_Messages" OR $name=="Forums" OR $name=="Members_List"))) header("Location: index.php"); 

и
PHP код:
 if (ereg("\.\.",$name) || ereg("\.\.",$file) || ereg("\.\.",$mop)) {
 die(
"You are so cool...");
    } 

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


Ответ


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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ну вот и стоит на localhost phpnuke, далее вопрос... Manchester > In Trance Настройка и Изменение 4 13.06.2005 08:24
PHPNuke Множественные Уязвимости в Модулях Soniks Уязвимости Защиты 3 19.04.2005 05:59


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


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