Forum. MyNuke.ru

Forum. MyNuke.ru (http://forum.mynuke.ru/index.php)
-   Уязвимости Защиты (http://forum.mynuke.ru/forumdisplay.php?f=15)
-   -   Инклюдинг локальных файлов в PHP-Nuke (http://forum.mynuke.ru/showthread.php?t=2681)

Soniks 15.03.2007 13:51

Инклюдинг локальных файлов в PHP-Nuke
 
Продукт: PHP-Nuke
Версия: 8.0 и ниже
Описание:
Уязвимость позволяет удаленному пользователю получить доступ к важным данным на системе. Уязвимость существует из-за недостаточной обработки входных данных в параметре куки файла "lang" в сценарии mainfile.php. Удаленный пользователь может просмотреть произвольные файлы на системе (и не только просмотреть!). Для успешной эксплуатации уязвимости требуется, чтобы на системе опция "magic_quotes_gpc" была отключена.

Источник: http://www.securitylab.ru

Устранение:

Открываем mainfile.php
Находим (318 строка):
PHP код:
 if (isset($newlang) AND !stripos_clone($newlang,".")) {
if (
file_exists("language/lang-".$newlang.".php")) {
setcookie("lang",$newlang,time()+31536000);
include_once(
"language/lang-".$newlang.".php");
$currentlang $newlang;
} else {
setcookie("lang",$language,time()+31536000);
include_once(
"language/lang-".$language.".php");
$currentlang $language;
}
} elseif (isset(
$lang)) {
include_once(
"language/lang-".$lang.".php");
$currentlang $lang;
} else { 

Заменяем на:
PHP код:
 if (isset($_GET['newlang']) AND eregi('^[a-z0-9]+$',$_GET['newlang'])) {
if (
file_exists("language/lang-".$_GET['newlang'].".php")) {
setcookie("lang",$_GET['newlang'],time()+31536000);
include_once(
"language/lang-".$_GET['newlang'].".php");
$currentlang $_GET['newlang'];
} else {
setcookie("lang",$language,time()+31536000);
include_once(
"language/lang-".$language.".php");
$currentlang $language;
}
} elseif (isset(
$_COOKIE['lang']) AND eregi('^[a-z0-9]+$',$_COOKIE['lang'])) {
include_once(
"language/lang-".$_COOKIE['lang'].".php");
$currentlang $_COOKIE['lang'];
} else { 


На этом все! :breton:

atex 30.03.2007 18:14

вариант кода для нюки версии 7.6
 
А как быть с mainfile.php для версии 7.6, там этот фрагмент кода выглядит несколько иначе. Каким кодом его заменить?
Код:
if (isset($newlang) AND !eregi("\.","$newlang")) { if (file_exists("language/lang-".$newlang.".php")) { setcookie("lang",$newlang,time()+31536000); include("language/lang-".$newlang.".php"); $currentlang = $newlang; } else { setcookie("lang",$language,time()+31536000); include("language/lang-".$language.".php"); $currentlang = $language; } } elseif (isset($lang)) { if (eregi('[A-Za-z]', $lang)) { if (file_exists("language/lang-".$lang.".php")) { include_once("language/lang-".$lang.".php"); $currentlang = $lang; } else {

Soniks 01.04.2007 15:58

atex в принципе можно оставить как есть, а лучше заминить выше предложенным


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

Copyright © 2005 by Soniks