Уязвимости Web приложений

Защита информации, сетевая безопасность, уязвимости

Модератор: Rostov114

Re: Уязвимости Web приложений

Сообщение Rostov114 » 08 мар 2009, 00:38

Программа: (iNV23) Файловый архив 1.1.1 от Pete Treanor (мод для IPB 2.2.x - 2.3.x )

Опасность: Средняя

Автор: Rostov114

Наличие эксплоита: Да

Тип: Скачивание любых файлов

Описание: Уязвимость позволяет удаленному пользователю выкачать любой фаил из атакуемой системы.
Уязвимость существует из-за не фильтрации параметра file_id в файле ./modules/downloads/get.php и возможности передачи любых символов.

Решение:
Открыть ./modules/downloads/get.php
Найти:
Код: Выделить всёРазвернуть
$path .= "/".$file_name;  

Заменить на:
Код: Выделить всёРазвернуть
$path .= "/".$this->mainlib->clean_path($file_name); 
Некоммерческий проект «HSDN»
Аватара пользователя
Rostov114
Автор
 
Сообщения: 3197
Зарегистрирован: 18 окт 2007, 02:21

Re: Уязвимости Web приложений

Сообщение Rostov114 » 16 мар 2009, 04:05

Программа: Invision Power Board 2.*.*, возможно более ранние версии

Опасность: Низкая

Автор: Rostov114

Наличие эксплоита: Нет

URL производителя: http://www.invisionboard.com

Тип: Обход ограничений

Описание:
Уязвимость позволяет ограниченному администратору сделать запрос и стать Главным администратором.

Уязвимость существует из-за возможности подделки id группы в html коде при редактировании пользователя в админцентре.

Решение:

Файл: ./sources/action_admin/member.php
— найти (в функции «member_do_edit»):
Код: Выделить всёРазвернуть
if( count( $tmp_mgroup_others ) )
                {
                    foreach( $tmp_mgroup_others as $other_mgroup )
                    {
                        if( $other_mgroup == $this->ipsclass->vars['admin_group'] )
                        {
                            $this->ipsclass->admin->error("Вы не можете редактировать главных администраторов.");
                        }
                    }
                }
            }            
        
} 

— добавить после:
Код: Выделить всёРазвернуть
//-----------------------------------------
        // Small fix
        //-----------------------------------------
        
        if 
( $this->ipsclass->member['mgroup'] != $this->ipsclass->vars['admin_group'] )
        {
            if ( $this->ipsclass->input['mgroup'] == $this->ipsclass->vars['admin_group'] )
            {
                $this->ipsclass->admin->error("У вас недостаточно прав для выполнения данного действия.");
            }
        } 

Сохранить.
Некоммерческий проект «HSDN»
Аватара пользователя
Rostov114
Автор
 
Сообщения: 3197
Зарегистрирован: 18 окт 2007, 02:21

Re: Уязвимости Web приложений

Сообщение Rostov114 » 22 мар 2009, 15:08

Программа: Торрент-трекеры основанные на TBDev 2.0 YSE(мод AJAX проверка введенных данных при регистрации)

Опасность: Средняя

Наличие эксплоита: Да

Тип: SQL иньекция

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

Уязвимость существует из-за отсутствующий проверки e-mail и имени пользователя на предварительную валидность. И использование данных в SQL запросе которые небыли экранированы.

Решение:
Открыть: ./check_signup.php
Найти:
Код: Выделить всёРазвернуть
$res = (@mysql_fetch_row(@sql_query("select count(*) from users where username='$wantusername'"))) or die(mysql_error());  

Заменить на:
Код: Выделить всёРазвернуть
$res = (@mysql_fetch_row(@sql_query("SELECT COUNT(*) FROM `users` WHERE username=".sqlesc($wantusername))));  


Найти:
Код: Выделить всёРазвернуть
$res = (@mysql_fetch_row(@sql_query("select count(*) from users where email='$email'"))) or die(mysql_error());  

Заменить на:
Код: Выделить всёРазвернуть
$res = (@mysql_fetch_row(@sql_query("SELECT COUNT(*) FROM `users` WHERE email=".sqlesc($email))));  
Некоммерческий проект «HSDN»
Аватара пользователя
Rostov114
Автор
 
Сообщения: 3197
Зарегистрирован: 18 окт 2007, 02:21

Re: Уязвимости Web приложений

Сообщение Zinger » 23 мар 2009, 16:44

Программа: Торрент-трекеры основанные на TBDev 2.0 YSE

Опасность: Низкая

Наличие эксплоита: Да

Описание: Очень слабая пповерка e-mail на валидность

Решение:

Открыть functions.php
Нати:
Код: Выделить всёРазвернуть
function validemail($email) { 
    if (
ereg("^([A-Za-z0-9]+_+)|([A-Za-z0-9]+\-+)|([A-Za-z0-9]+\.+)|([A-Za-z0-9]+\++))*[A-Za-z0-9]+@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$"$email))  
        return 
true
    else 
        return 
false


Заменить на:
Код: Выделить всёРазвернуть
function validemail($email

  
// First, we check that there's one @ symbol, and that the lengths are right 
  
if (!ereg("^[^@]{1,64}@[^@]{1,255}$"$email)) { 
    
// Email invalid because wrong number of characters in one section, or wrong number of @ symbols. 
    
return false
  } 
  
// Split it into sections to make life easier 
  
$email_array explode("@"$email); 
  
$local_array explode("."$email_array[0]); 
  for (
$i 0$i sizeof($local_array); $i++) { 
     if (!
ereg("^(([A-Za-z0-9!#$%&'*+/=?^_`{|}~-][A-Za-z0-9!#$%&'*+/=?^_`{|}~\.-]{0,63})|(\"[^(\\|\")]{0,62}\"))$"$local_array[$i])) { 
      return 
false
    } 
  } 
  if (!
ereg("^\[?[0-9\.]+\]?$"$email_array[1])) { // Check if domain is IP. If not, it should be valid domain name 
    
$domain_array explode("."$email_array[1]); 
    if (
sizeof($domain_array) < 2) { 
        return 
false// Not enough parts to domain 
    

    for (
$i 0$i sizeof($domain_array); $i++) { 
      if (!
ereg("^(([A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])|([A-Za-z0-9]+))$"$domain_array[$i])) { 
        return 
false
      } 
    } 
  } 
  return 
true
}  
Изображение
Аватара пользователя
Zinger
Автор
 
Сообщения: 168
Зарегистрирован: 15 май 2008, 15:30
Откуда: Саратов
Домен: http://zinger.vfose.ru

Re: Уязвимости Web приложений

Сообщение Rostov114 » 24 мар 2009, 17:20

Программа: IPB 2.x.x возможно (мод mJournal)

Опасность: Низкая

Наличие эксплоита: Да

Тип: Раскрытие путей

Описание: Уязвимость позволяет удаленному пользователю отправить специально сформированный запрос и заставить систему с генерировать ошибку в которой будет содержатся реальный путь к файлу.

Решение:
Открыть ./journal.php
Найти(~ 512 стр):
Код: Выделить всёРазвернуть
$ipsclass->input['p'] = intval($ipsclass->input['user']); 

Заменить на:
Код: Выделить всёРазвернуть
$ipsclass->input['user'] = is_array($ipsclass->input['user']) ? false : $ipsclass->input['user'];
$ipsclass->input['p'] = intval($ipsclass->input['user']); 
Некоммерческий проект «HSDN»
Аватара пользователя
Rostov114
Автор
 
Сообщения: 3197
Зарегистрирован: 18 окт 2007, 02:21

Re: Уязвимости Web приложений

Сообщение ecc » 26 мар 2009, 00:17

Программа: Joomla DatsoGallery 1.6, возможно более ранние версии

Опасность: Средняя

Наличие эксплоита: Да

Описание:
Уязвимость позволяет удаленному пользователю выполнить произвольные SQL команды в базе данных приложения.
Уязвимость существует из-за недостаточной обработки входных данных в HTTP заголовке "User-Agent" в сценарии sub_votepic.php. Удаленный пользователь может с помощью специально сформированного запроса выполнить произвольные SQL команды в базе данных приложения.

Решение:

Открыть ./components/com_datsogallery/sub_votepic.php

Найти:
Код: Выделить всёРазвернуть
   $browser        = $_SERVER['HTTP_USER_AGENT']; 


После добавить:
Код: Выделить всёРазвернуть
    $browser_tmp = ' '.strtoupper($browser);
    if ((strpos($browser_tmp, 'SELECT')) or 
      
(strpos($browser_tmp, 'DELETE')) or 
      
(strpos($browser_tmp, 'UPDATE')) or 
      
(strpos($browser_tmp, 'INSERT')) or 
      
(strpos($browser_tmp, ' FROM ')) or
      
(strpos($browser_tmp, ' INTO ')) or
      
(strpos($browser_tmp, 'VALUES')) 
    
) {
      die('SQL-injection rejected.');
    } 
Последний раз редактировалось ecc 26 мар 2009, 00:34, всего редактировалось 1 раз.
Изображение - все go!go!go!
ecc
Активный участник
 
Сообщения: 121
Зарегистрирован: 21 фев 2009, 13:50
Домен: technology.vfose.ru

Re: Уязвимости Web приложений

Сообщение ecc » 29 мар 2009, 01:57

Программа: Data life engine - версии ниже 7.5

Опастность: Средняя

Наличие эксплоита: Нет

Тип: XSS

Описание: Недостаточная фильтрация входящих данных.

Решение:
Открываем: engine/inc/functions.inc.php
1. ищем:

Код: Выделить всёРазвернуть
function check_xss () {

$url = html_entity_decode(urldecode($_SERVER['QUERY_STRING']));

if ($url) {

if ((strpos($url, '') !== false) ||
(
strpos($url, '"') !== false) ||
(
strpos($url, './') !== false) ||
(
strpos($url, '../') !== false) ||
(
strpos($url, '\'') !== false) ||
(
strpos($url, '.php') !== false)
)
 
{

if ($_GET['mod'] != "editnews" OR $_GET['action'] != "list") die("Hacking attempt!");

}

}

}
 


Заменяем на:
Код: Выделить всёРазвернуть

function check_xss 
() {

$url = html_entity_decode(urldecode($_SERVER['QUERY_STRING']));

if ($url) {

if ((strpos($url, '') !== false) ||
(
strpos($url, '"') !== false) ||
(
strpos($url, './') !== false) ||
(
strpos($url, '../') !== false) ||
(
strpos($url, '\'') !== false) ||
(
strpos($url, '.php') !== false)
)
 
{

if ($_GET['mod'] != "editnews" OR $_GET['action'] != "list") die("Hacking attempt!");

}

}

$url = html_entity_decode(urldecode($_SERVER['REQUEST_URI']));

if ($url) {

if ((strpos($url, '') !== false) ||
(
strpos($url, '"') !== false) ||
(
strpos($url, '\'') !== false)
)
 
{

die(
"Hacking attempt!");

}

}

}
 


2. Идем в: engine/modules/functions.php
Находим:
Код: Выделить всёРазвернуть
function check_xss () {

$url = html_entity_decode(urldecode($_SERVER['QUERY_STRING']));

if ($url) {

if ((strpos($url, '') !== false) ||
(
strpos($url, '"') !== false) ||
(
strpos($url, './') !== false) ||
(
strpos($url, '../') !== false) ||
(
strpos($url, '\'') !== false) ||
(
strpos($url, '.php') !== false)
)
 
{
if ($_GET['do'] != "search" OR $_GET['subaction'] != "search") die("Hacking attempt!");
}

}

}
 


Заменяем на:
Код: Выделить всёРазвернуть
function check_xss () {

$url = html_entity_decode(urldecode($_SERVER['QUERY_STRING']));

if ($url) {

if ((strpos($url, '') !== false) ||
(
strpos($url, '"') !== false) ||
(
strpos($url, './') !== false) ||
(
strpos($url, '../') !== false) ||
(
strpos($url, '\'') !== false) ||
(
strpos($url, '.php') !== false)
)
 
{
if ($_GET['do'] != "search" OR $_GET['subaction'] != "search") die("Hacking attempt!");
}

}


$url = html_entity_decode(urldecode($_SERVER['REQUEST_URI']));

if ($url) {

if ((strpos($url, '') !== false) ||
(
strpos($url, '"') !== false) ||
(
strpos($url, '\'') !== false)
)
 
{
if ($_GET['do'] != "search" OR $_GET['subaction'] != "search") die("Hacking attempt!");

}

}

}
 
Последний раз редактировалось ecc 29 мар 2009, 15:07, всего редактировалось 1 раз.
Изображение - все go!go!go!
ecc
Активный участник
 
Сообщения: 121
Зарегистрирован: 21 фев 2009, 13:50
Домен: technology.vfose.ru

Re: Уязвимости Web приложений

Сообщение ibe » 31 мар 2009, 00:51

Программа: DataLife engine

Версия: все версии

Опастность: Высокая

Наличие эксплойта: нет

Описание: недостаточная фильтрция входящих данных

Решение: открыть файл admin.php:
найти:
Код: Выделить всёРазвернуть
require_once (ENGINE_DIR.'/inc/init.php'); 

ниже добавить:
Код: Выделить всёРазвернуть
if($is_loged_in AND $_SERVER['HTTP_REFERER'] == '' AND !$_SESSION['dle_name'] ) {

$is_loged_in FALSE;

} elseif (
$is_loged_in AND $_SERVER['HTTP_REFERER'] != '' AND strposstrtolower($_SERVER['HTTP_REFERER']), $config['admin_path'] ) === false) {

$allow_mod = array("editusers""editnews""iptools""blockip");
$allow_action = array("edituser""editnews");

if (
$config['extra_login']) $allow_mod[] = "";

if (
in_array($_GET['mod'], $allow_mod)) {

if ((
$_GET['action'] AND !in_array($_GET['action'], $allow_action)) OR $_GET['ifdelete']) $is_loged_in FALSE;

} else 
$is_loged_in FALSE;

} elseif (
$is_loged_in AND strposstrtolower($_SERVER['HTTP_REFERER']), "mod=editnews" ) !== false) {

if (@
strpos$_SERVER['HTTP_REFERER'], $_GET['id'] ) === false AND count($_GET) > AND $_GET['mod'] != "editnews"$is_loged_in FALSE;

}

if (!
$is_loged_in) {

@
session_destroy();
@
session_unset();

Изображение
Аватара пользователя
ibe
Активный участник
 
Сообщения: 893
Зарегистрирован: 31 мар 2009, 00:46

Re: Уязвимости Web приложений

Сообщение ibe » 31 мар 2009, 15:29

Программа: DataLife engine

Версия: все версии ниже 7.3

Опастность: Низкая

Наличие эксплойта:
нет

Описание: Ошибка парсинга заголовков новостей

Решение:
1.открываем файл: engine/inc/editnews.php
найдходим:
Код: Выделить всёРазвернуть
  $title = stripslashes($title); 


заменяем на:
Код: Выделить всёРазвернуть
        $title = htmlspecialchars( stripslashes( $title ), ENT_QUOTES ); 

2. идем в engine/modules/addnews.php
находим:
Код: Выделить всёРазвернуть
$title = $db->safesql($parse->process(trim($_POST['title']))); 

заменяем на:
Код: Выделить всёРазвернуть
$title = $db->safesql( $parse->process( trim( strip_tags ($_POST['title']) ) ) ); 
Изображение
Аватара пользователя
ibe
Активный участник
 
Сообщения: 893
Зарегистрирован: 31 мар 2009, 00:46

Re: Уязвимости Web приложений

Сообщение Rostov114 » 05 апр 2009, 21:55

Программа: IPB 2.x.x

Опасность: Низкая

Наличие эксплоита: Да

Тип: Раскрытие путей

Описание: Уязвимость позволяет удаленному пользователю отправить специально сформированный запрос и заставить систему с генерировать ошибку в которой будет содержатся реальный путь к файлу.

Решение:
Открыть ./sources/action_public/login.php
Найти(~ 570 стр):
Код: Выделить всёРазвернуть
$password = md5( $this->ipsclass->input['PassWord'] ); 

Добавить ВЫШЕ:
Код: Выделить всёРазвернуть
        if( ! is_string($this->ipsclass->input['PassWord']) )
        {
            $this->ipsclass->Error( array( LEVEL => 1, MSG => 'request_hack' ) );
        } 
Некоммерческий проект «HSDN»
Аватара пользователя
Rostov114
Автор
 
Сообщения: 3197
Зарегистрирован: 18 окт 2007, 02:21

Пред.След.

Вернуться в Компьютерная безопасность

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 21