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

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


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

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

Описание:
В PHPNuke найдены многократные уязвимости, затрагивающей различные модули. Затронутые модули: 'Search', 'FAQ' и 'Encyclopedia'. И так же 'banners.php'. Нападавший может эксплуатировать эти уязвимости, создавая злонамеренную ссылку, содержащую HTML и XSS атаку. При помощи этой уязвимости, злоумышленник может присвоить себе права администратора, так же возможна подстройка куков. Были затронуты PHPNuke 7.6 и предшествующие версии.

Устранение уязвимости:

Открываем modules/Search/index.php
Находим:
PHP код:
 default:
$ThemeSel get_theme(); 

Ниже добавляем:
PHP код:
 $min intval($min); 


Открываем modules/FAQ/index.php
Находим:
PHP код:
 function ShowFaq($id_cat$categories) {
    global 
$bgcolor2$sitename$prefix$db$module_name;
    
OpenTable(); 

Ниже добавляем:
PHP код:
 $categories htmlspecialchars($categories); 


Открываем modules/Encyclopedia/index.php
Находим:
PHP код:
 $numrows $db->sql_numrows($result3);
 if (
$numrows == 0) { 

Ниже добавляем:
PHP код:
 $ltr htmlspecialchars($ltr); 

Открываем modules/Your_Account/index.php
Находим:
PHP код:
 if((strtolower($username) == strtolower($cookie[1])) AND ($userinfo[user_password] == $cookie[2])) { 

Выше добавляем:
PHP код:
 if ($username != ''

Открываем banners.php
Находим:
PHP код:
 $name $row['name'];
    
$email $row['email'];
    if (
$email=="") { 

Ниже добавляем:
PHP код:
 $bid htmlspecialchars($bid);
$name htmlspecialchars($name); 


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


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


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

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

Тут неожиданно обнаружились еще несколько багов, так что и фиксим их.
Открываем banners.php
Находим:
PHP код:
 function EmailStats($login$cid$bid$pass) {
    global 
$prefix$db

Ниже добавляем:
PHP код:
 $cid intval($cid);
$bid intval($bid); 

Проверьте пофиксили ли вы в свое время этот баг
http://forum.mynuke.ru/showthread.php?t=22
Откройте modules/Web_Links/index.php
Найдите:
PHP код:
 function getparent($parentid,$title) { 

Выше добавьте:
PHP код:
 $ttitle htmlspecialchars($ttitle); 

Откройте modules/Your_Account/index.php
Найдите:
PHP код:
 $username substr("$username"0,25); 

Измените на:
PHP код:
 $username htmlentities(substr("$username"0,25)); 

Откройте modules/Surveys/comments.php
Найдите:
PHP код:
 function navbar($pollID$title$thold$mode$order) {
    global 
$user$bgcolor1$bgcolor2$textcolor1$textcolor2$anonpost$pollcomm$prefix$db$module_name;
    
OpenTable(); 

Заменяем на:
PHP код:
 function navbar($pollID$title$thold$mode$order) {
    global 
$user$bgcolor1$bgcolor2$textcolor1$textcolor2$anonpost$pollcomm$prefix$db$module_name;
      if(
function_exists(OpenTable)){
   
OpenTable();
   } else {
   echo 
"Function OpenTable() don't exists";
   exit; 
   } 

Открываем themes/Ваша_тема/theme.php
Найдите:
PHP код:
 include("themes/Ваша_тема/tables.php"); 

Замените на:
PHP код:
 if(file_exists("themes/Ваша_тема/tables.php")){
include(
"themes/Ваша_тема/tables.php");


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


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


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

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

Просто не вероятно, еще найдены уязвимости, фиксим их

Открываем modules/Your_Account/index.php
Находим:
PHP код:
 function mail_password($username$code) {
    global 
$sitename$adminmail$nukeurl$user_prefix$db$module_name;
    
$username substr($username025); 

Ниже добавляем:
PHP код:
 $username htmlspecialchars($username); 

Найдите:
PHP код:
 function avatarlist($avatarcategory) {
    global 
$module_name;
    @include(
"header.php");
$avatarcatname ereg_replace ("_"" "$avatarcategory); 

Замените:
PHP код:
 function avatarlist($avatarcategory) {
    global 
$user$module_name;
    @include(
"header.php");
    if (
is_user($user)) { 
$avatarcategory htmlspecialchars($avatarcategory);
$avatarcatname ereg_replace ("_"" "$avatarcategory); 

Найдите:
PHP код:
 $d->close();
    
CloseTable();
    @include(
"footer.php"); 

Ниже добавьте:
PHP код:
 } else die("Access Denied"); 


Откройте modules/Downloads/index.php
Найдите:
PHP код:
 function outsidedownloadsetup($lid) {
    global 
$module_name$sitename$nukeurl

Ниже добавьте:
PHP код:
 $lid intval($lid); 

Откройте modules/Surveys/index.php
Найдите:
PHP код:
 } elseif($op == "results" && $pollID 0) { 

Ниже добавьте:
PHP код:
 if (isset($tid)) {
Header("Location: modules.php?name=$module_name"); 



И самое главное!!
откройте фаил mainfile.php и после <?php ниже добавьте
PHP код:
 error_reporting(0); 

тем самым вы запретите вывод любых ошибок на сайте, что предотвратит выявления полного пути к вашей дирректории!

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


Soniks вне форума      Старый SQL - инъекция в модуле Top PHP-NUKE v7.6 #4  
Soniks
Администратор
Регистрация: 16.01.2005
Сообщения: 4,814


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

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

Описание:
Найдена критическая уязвимость в модуле Top PHP-Nuke 7.6 (и ниже). Была допущена ошибка в названии переменной, в замен $queryplang в базу добавлялась переменнвя $querylang (отличие одной буквой "p"), которая была не определена не кем и не чем и следовательно не проверялась.
Данная уязвимость позволяет злоумышленнику выполнить sql-инъекцию.
Устраняем уязвимость:
Откройте modules/Top/index.php
Найдите:
PHP код:
 $result9 sql_query("SELECT pollID, pollTitle, timeStamp, voters FROM ".$prefix."_poll_desc $querylang order by voters DESC limit 0,$top"$dbi); 

Замените на:
PHP код:
 $result9 sql_query("SELECT pollID, pollTitle, timeStamp, voters FROM ".$prefix."_poll_desc $queryplang order by voters DESC limit 0,$top"$dbi); 
 
"Если бы вам удалось надавать под зад человеку, виноватому в большинстве ваших неприятностей - вы бы неделю не смогли сидеть".


Ответ


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

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

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

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

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


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


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