|
|
|
|
|
|
|
|
|
PHPNuke Множественные Уязвимости в Модулях
| |
#1 | |
|
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();
Ниже добавляем:
Открываем 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])) {
Выше добавляем:
Открываем banners.php
Находим:
PHP код:
$name = $row['name']; $email = $row['email']; if ($email=="") {
Ниже добавляем:
PHP код:
$bid = htmlspecialchars($bid); $name = htmlspecialchars($name);
Уязвимость устранена
|
|
|
|
|
|
"Если бы вам удалось надавать под зад человеку, виноватому в большинстве ваших неприятностей - вы бы неделю не смогли сидеть". |
|
|
|
|
|
|
|
|
|
|
|
|
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"); }
И эти баги устранены
|
|
|
|
|
|
"Если бы вам удалось надавать под зад человеку, виноватому в большинстве ваших неприятностей - вы бы неделю не смогли сидеть". |
|
|
|
|
|
|
|
|
|
|
|
|
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($username, 0, 25);
Ниже добавляем:
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;
Ниже добавьте:
Откройте modules/Surveys/index.php
Найдите:
PHP код:
} elseif($op == "results" && $pollID > 0) {
Ниже добавьте:
PHP код:
if (isset($tid)) { Header("Location: modules.php?name=$module_name"); }
И самое главное!!
откройте фаил mainfile.php и после <?php ниже добавьте
тем самым вы запретите вывод любых ошибок на сайте, что предотвратит выявления полного пути к вашей дирректории!
Последний раз редактировалось Soniks, 15.04.2005 в 16:35.
|
|
|
|
|
|
"Если бы вам удалось надавать под зад человеку, виноватому в большинстве ваших неприятностей - вы бы неделю не смогли сидеть". |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SQL - инъекция в модуле Top PHP-NUKE v7.6
| |
#4 | |
|
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);
|
|
|
|
|
|
"Если бы вам удалось надавать под зад человеку, виноватому в большинстве ваших неприятностей - вы бы неделю не смогли сидеть". |
|
|
|
|
|
|
|
|
Опции темы |
Поиск в этой теме |
|
|
Опции просмотра |
Линейный вид
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 20:07.
|
|
|
|
|
|
|
|
|
|
|
|
|