Soniks
18.04.2007, 14:40
Продукт: PHP-Nuke
Версия: 8.0 и ниже
Описание:
В скриптах системы отсутствует проверка входных данных, поэтому при удачных стечениях обстоятельств (magic_quotes - OFF, register_global - ON, отсутствие фильтров SQL-инъекций), злоумышленник может выполнить SQL-Инъекцию.
Устранение:
Для более эффекта добавим проверку в главном файле.
Открываем: mainfile.php
Находим (43 строка):
// override old superglobals if php is higher then 4.1.0
if($phpver >= '4.1.0') {
$HTTP_GET_VARS = $_GET;
$HTTP_POST_VARS = $_POST;
$HTTP_SERVER_VARS = $_SERVER;
$HTTP_POST_FILES = $_FILES;
$HTTP_ENV_VARS = $_ENV;
$PHP_SELF = $_SERVER['PHP_SELF'];
if(isset($_SESSION)) {
$HTTP_SESSION_VARS = $_SESSION;
}
if(isset($_COOKIE)) {
$HTTP_COOKIE_VARS= $_COOKIE;
}
}
Ниже добавляем проверку:
if(isset($_REQUEST['id'])) $id = intval($_REQUEST['id']);
if(isset($_REQUEST['lid'])) $lid = intval($_REQUEST['lid']);
if(isset($_REQUEST['cid'])) $cid = intval($_REQUEST['cid']);
if(isset($_REQUEST['pid'])) $pid = intval($_REQUEST['pid']);
if(isset($_REQUEST['sid'])) $sid = intval($_REQUEST['sid']);
if(isset($_REQUEST['tid'])) $tid = intval($_REQUEST['tid']);
Версия: 8.0 и ниже
Описание:
В скриптах системы отсутствует проверка входных данных, поэтому при удачных стечениях обстоятельств (magic_quotes - OFF, register_global - ON, отсутствие фильтров SQL-инъекций), злоумышленник может выполнить SQL-Инъекцию.
Устранение:
Для более эффекта добавим проверку в главном файле.
Открываем: mainfile.php
Находим (43 строка):
// override old superglobals if php is higher then 4.1.0
if($phpver >= '4.1.0') {
$HTTP_GET_VARS = $_GET;
$HTTP_POST_VARS = $_POST;
$HTTP_SERVER_VARS = $_SERVER;
$HTTP_POST_FILES = $_FILES;
$HTTP_ENV_VARS = $_ENV;
$PHP_SELF = $_SERVER['PHP_SELF'];
if(isset($_SESSION)) {
$HTTP_SESSION_VARS = $_SESSION;
}
if(isset($_COOKIE)) {
$HTTP_COOKIE_VARS= $_COOKIE;
}
}
Ниже добавляем проверку:
if(isset($_REQUEST['id'])) $id = intval($_REQUEST['id']);
if(isset($_REQUEST['lid'])) $lid = intval($_REQUEST['lid']);
if(isset($_REQUEST['cid'])) $cid = intval($_REQUEST['cid']);
if(isset($_REQUEST['pid'])) $pid = intval($_REQUEST['pid']);
if(isset($_REQUEST['sid'])) $sid = intval($_REQUEST['sid']);
if(isset($_REQUEST['tid'])) $tid = intval($_REQUEST['tid']);