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

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


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

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

Появилась новая уязвимость в PHP-NUKE 6.x-7.6



Описание:
Уязвимость позволяет злоумышленнику произвести XSS нападение и получить доступ к важным данным пользователей.

Уязвимость существует в модуле Downloads при обработке параметра newdownloadshowdays и модуле Web_Links при обработке параметра newlinkshowdays. Злоумышленник может с помощью специально сформированного URL выполнить произвольный HTML сценарий в браузере целевого пользователя в контексте безопасности уязвимого сайта. Злоумышленник может получить данные об установочной директории приложения.

Пример/Эксплоит:

http://[target]/nuke75/modules....wnloadshowdays=[xss code here]

http://[target]/nuke75/modules....&l_op=NewLinks& newlinkshowdays=[xss code here]

http://[target]/nuke75/db/db.php

http://[target]/nuke75/index.php?inside_mod=1

http://[target]/nuke75/modules....loads&d_op=menu

http://[t arget]/nuke75/modules.php?name=Web_Links&l_op=menu

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


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

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

Устраняем неполадку :) :
Для начала откройте фаил db/db.php, в самом начале увидите код:
PHP код:
 global $forum_admin
if (
$forum_admin == 1) { 
    
$the_include "../../../db"
} elseif (
$inside_mod == 1) { 
    
$the_include "../../db"
} else { 
    
$the_include "db"


Немного изменим код и кое-что удали, в результате получи такой код:
PHP код:
 if (eregi('db.php',$_SERVER['PHP_SELF'])) 

    die(
'Direct access not allowed!'); 

 
global 
$forum_admin
if (
$forum_admin == 1) { 
    
$the_include "../../../db"
} else { 
    
$the_include "db"



Дальше открываем фаил mainfile.php и приблизительно на строке 100 увидите код:
PHP код:
 if ($forum_admin == 1) { 
    require_once(
"../../../config.php"); 
    require_once(
"../../../db/db.php"); 
} elseif (
$inside_mod == 1) { 
    require_once(
"../../config.php"); 
    require_once(
"../../db/db.php"); 
} else { 


Удаляем не нужнуя часть и в результате получим:
PHP код:
 if ($forum_admin == 1) { 
    require_once(
"../../../config.php"); 
    require_once(
"../../../db/db.php"); 
} else { 


Теперь перейдем к downloads модулю, откройте modules/Downloads/index.php и приблизительно на строке 2354 найдите код:
PHP код:
 switch($d_op) { 
 
    case 
"menu"
    
menu($maindownload); 
    break; 
 
    case 
"AddDownload"
    
AddDownload(); 
    break; 

удаляем вредоносный кейс "menu" и получаем:
PHP код:
 switch($d_op) { 
 
    case 
"AddDownload"
    
AddDownload(); 
    break; 


Теперь давайте устраним брешь в переменной "newdownloadshowdays" в том же файле, в самом начале, найдите код:
PHP код:
 if (!eregi("modules.php"$_SERVER['PHP_SELF'])) { 
    die (
"You can't access this file directly..."); 

if (isset(
$show)) { 
    
$show intval($show); 


И замените на:
PHP код:
 if (!eregi("modules.php"$_SERVER['PHP_SELF'])) { 
    die (
"You can't access this file directly..."); 

if (isset(
$show)) { 
    
$show intval($show); 

 
if(isset(
$newdownloadshowdays)) 

$newdownloadshowdays min(max(intval($newdownloadshowdays),1),30); 


Теперь перейдем к модулю Web Links, откройте фаил modules/Web_Links/indeks.php и найдите приблизительно 2095 строке следующий код:
PHP код:
 switch($l_op) { 
 
    case 
"menu"
    
menu($mainlink); 
    break; 
 
    case 
"AddLink"
    
AddLink(); 
    break; 

Так же как и в даунлоде удаляем кейс "menu":
PHP код:
 switch($l_op) { 
 
    case 
"AddLink"
    
AddLink(); 
    break; 


Теперь переместитесь в начало файла, найдите код:
PHP код:
 get_lang($module_name); 
$pagetitle "- "._WEBLINKS.""
require_once(
"modules/Web_Links/l_config.php"); 
 
function 
getparent($parentid,$title) { 
    global 
$prefix$db

И замените его на:
PHP код:
 get_lang($module_name); 
$pagetitle "- "._WEBLINKS.""
require_once(
"modules/Web_Links/l_config.php"); 
 
if(isset(
$newlinkshowdays)) 

$newlinkshowdays min(max(intval($newlinkshowdays),1),30); 

 
function 
getparent($parentid,$title) { 
    global 
$prefix$db


Все баг устранен и исправлен )))

Ответ


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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Совмещаю PHP Nuke 7.8 и vBulletin 3.0.7 Ernest-Oleg-Iv Настройка и Изменение 5 07.01.2007 17:18
уязвимость в редакторе FCKeditor Soniks Уязвимости Защиты 2 26.12.2005 11:55
Nuke 7.9 Rus + ... нештатный форум Eurgene_I Настройка и Изменение 1 23.10.2005 05:18
пробоемы с Php nuke 7.5 rus незарегистрированный Установка 3 08.09.2005 01:20


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


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