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

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

Модератор: Rostov114

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

Сообщение ibe » 23 апр 2009, 15:14

Программа: DataLife engine (все версии, кроме 7.5)

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

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

Тип: XSS

Описание: Не достаточная фильтрация входящих данных дает возможность совершить XSS атаку на сайт через скрипт imagepreview.php. Это вызвано не достаточной фильтрацией входящего параметра image

Решение:
Открыть файл: engine/modules/imagepreview.php

Найти строку:
Код: Выделить всёРазвернуть
$_GET['image'] = htmlspecialchars ($_GET['image'], ENT_QUOTES); 

Ниже вставить:
Код: Выделить всёРазвернуть
$_GET['image'] = str_replace"document.cookie"""$_GET['image'] );
$_GET['image'] = str_replace"javascript"""$_GET['image'] );


if ( 
preg_match"/[?&;%<[]]/"$_GET['image']) ) {

$_GET['image'] = "";

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

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

Сообщение Rostov114 » 24 апр 2009, 23:13

Программа: phpBB-WAP 6

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

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

Тип: XSS

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

Уязвимость существует из-за недостаточной обработки принимаемого IP адреса и есть возможность подменить IP адрес на активный JS скрипт.

Решение:
Открыть ./includes/functions.php
Найти:
Код: Выделить всёРазвернуть
function encode_ip($dotquad_ip)
{
    $ip_sep = explode('.', $dotquad_ip);
    return sprintf('%02x%02x%02x%02x', $ip_sep[0], $ip_sep[1], $ip_sep[2], $ip_sep[3]);
}
 

Заменить на:
Код: Выделить всёРазвернуть
function encode_ip($dotquad_ip)
{
    if(!preg_match("/^([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/", $dotquad_ip))
    {
        die("Hacking attempt");
    }

    $ip_sep = explode('.', $dotquad_ip);
    return sprintf('%02x%02x%02x%02x', $ip_sep[0], $ip_sep[1], $ip_sep[2], $ip_sep[3]);
}
 
Некоммерческий проект «HSDN»
Аватара пользователя
Rostov114
Автор
 
Сообщения: 3183
Зарегистрирован: 18 окт 2007, 02:21
Откуда: Россия ( Саратов / Ростов-на-Дону )

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

Сообщение CRUSADE » 23 май 2009, 00:12

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

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

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

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

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

Сама по себе SQL инъекция не опасна т.к. нету вывода ошибки. Но при не правильно выставленных правах на директорию с торрент трекером есть возможность спровоцировать MySQL записать фаил который будет содержать пассхеш запрошенного пользователя.

Решение:
Открыть: ./rss.php
Найти:
Код: Выделить всёРазвернуть
$user = mysql_fetch_row(sql_query("SELECT COUNT(*) FROM users WHERE passkey = '$passkey'")); 


Заменить на:
Код: Выделить всёРазвернуть
$user = mysql_fetch_row(sql_query("SELECT COUNT(*) FROM users WHERE passkey = ".sqlesc($passkey))); 
Последний раз редактировалось Rostov114 23 май 2009, 01:17, всего редактировалось 4 раз(а).
Причина: Редактирование
Изображение
CRUSADE
Участник
 
Сообщения: 35
Зарегистрирован: 28 мар 2009, 14:50
Откуда: Саратов
Домен: stalker-tracker.vfose.ru

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

Сообщение ibe » 04 июн 2009, 21:38

Программа: DataLife engine (все версии, включая 8.0)

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

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

Тип: XSS

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

Решение:

Открыть: engine/classes/parse.class.php
Найти:
Код: Выделить всёРазвернуть
   if( ((strposstrtolower$attrSubSet[1] ), 'expression' ) !== false) && ($attrSubSet[0] == 'style')) || (strposstrtolower$attrSubSet[1] ), 'javascript:' ) !== false) || (strposstrtolower$attrSubSet[1] ), 'behaviour:' ) !== false) || (strposstrtolower$attrSubSet[1] ), 'vbscript:' ) !== false) || (strposstrtolower$attrSubSet[1] ), 'mocha:' ) !== false) || (strposstrtolower$attrSubSet[1] ), 'data:' ) !== false and $attrSubSet[0] == "href") || ($attrSubSet[0] == "href" and strposstrtolower$attrSubSet[1] ), $config['admin_path'] ) !== false and preg_match"/[?&%<\[\]]/"$attrSubSet[1] )) || (strposstrtolower$attrSubSet[1] ), 'livescript:' ) !== false) ) continue;
 

Заменить на:
Код: Выделить всёРазвернуть
  if( ((strposstrtolower$attrSubSet[1] ), 'expression' ) !== false) && ($attrSubSet[0] == 'style')) || (strposstrtolower$attrSubSet[1] ), 'javascript:' ) !== false) || (strposstrtolower$attrSubSet[1] ), 'behaviour:' ) !== false) || (strposstrtolower$attrSubSet[1] ), 'vbscript:' ) !== false) || (strposstrtolower$attrSubSet[1] ), 'mocha:' ) !== false) || (strposstrtolower$attrSubSet[1] ), 'data:' ) !== false and $attrSubSet[0] == "href") || (strposstrtolower$attrSubSet[1] ), 'data:' ) !== false and $attrSubSet[0] == "src") || ($attrSubSet[0] == "href" and strposstrtolower$attrSubSet[1] ), $config['admin_path'] ) !== false and preg_match"/[?&%<\[\]]/"$attrSubSet[1] )) || (strposstrtolower$attrSubSet[1] ), 'livescript:' ) !== false) ) continue; 


Найти:
Код: Выделить всёРазвернуть
$source str_replace"`""&#96;"$source );
 

Ниже добавить:
Код: Выделить всёРазвернуть
        $source preg_replace"#<iframe#i""&lt;iframe"$source );
        
$source preg_replace"#<script#i""&lt;script"$source ); 
Изображение
Аватара пользователя
ibe
Активный участник
 
Сообщения: 893
Зарегистрирован: 31 мар 2009, 00:46

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

Сообщение Rostov114 » 07 июн 2009, 10:23

Программа: TBDev YSE 2.0

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

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

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

Описание: Не достаточная фильтрация входящих данных дает возможность совершить атаки на файлы rss.php, announce.php, takesignup.php b на другие файлы где используется функция sqlesc(). Это связано с тем что функция sqlesc() экранирует только параметры string. Если же входящие параметры были распознаны как numeric то они не экранируются.

Решение:
Открыть файл: ./include/functions.php

Найти строку:
Код: Выделить всёРазвернуть
function sqlesc($value) {
    // Stripslashes
   /*if (get_magic_quotes_gpc()) {
       $value = stripslashes($value);
   }*/
   // Quote if not a number or a numeric string
   if (!is_numeric($value)) {
       $value = "'" . mysql_real_escape_string($value) . "'";
   }
   return $value;
}
 

Заменить на:
Код: Выделить всёРазвернуть
function sqlesc($value) 
{
   return "'" . mysql_real_escape_string($value) . "'";
}
 


Открыть файл: ./include/functions_announce.php
Найти строку:
Код: Выделить всёРазвернуть
function sqlesc($value) {
    // Stripslashes
   /*if (get_magic_quotes_gpc()) {
       $value = stripslashes($value);
   }*/
   // Quote if not a number or a numeric string
   if (!is_numeric($value)) {
       $value = "'" . mysql_real_escape_string($value) . "'";
   }
   return $value;
}
  

Заменить на:
Код: Выделить всёРазвернуть
function sqlesc($value) 
{
   return "'" . mysql_real_escape_string($value) . "'";
}
  
Последний раз редактировалось Rostov114 14 июн 2009, 15:45, всего редактировалось 2 раз(а).
Причина: Добавление новой узвимости, изменение метода решения
Некоммерческий проект «HSDN»
Аватара пользователя
Rostov114
Автор
 
Сообщения: 3183
Зарегистрирован: 18 окт 2007, 02:21
Откуда: Россия ( Саратов / Ростов-на-Дону )

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

Сообщение Rostov114 » 20 июн 2009, 16:56

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

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

Автор: HAXTA4OK

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

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

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

Уязвимость существует из-за не достаточной проверки filter при просмотре предложений.

Решение:
Открыть файл: ./viewoffers.php

Найти:
Код: Выделить всёРазвернуть
$filter = $_GET["filter"]; 

И удалить.

Найти
Код: Выделить всёРазвернуть
$res = sql_query("SELECT COUNT(offers.id) FROM offers INNER JOIN categories ON offers.category = categories.id INNER JOIN users ON offers.userid = users.id $categ $filter") or die(mysql_error()); 

Заменить на:
Код: Выделить всёРазвернуть
$res = sql_query("SELECT COUNT(offers.id) FROM offers INNER JOIN categories ON offers.category = categories.id INNER JOIN users ON offers.userid = users.id $categ"); 


Найти
Код: Выделить всёРазвернуть
$res = sql_query("SELECT users.downloaded, users.uploaded, users.class, users.username, offers.id, offers.userid, offers.name, offers.added, offers.votes, offers.comments, categories.name AS cat_name, categories.id AS cat_id, categories.image AS cat_img FROM offers INNER JOIN categories ON offers.category = categories.id INNER JOIN users ON offers.userid = users.id $categ $filter $search $sort $limit") or sqlerr(__FILE__, __LINE__); 

Заменить на:
Код: Выделить всёРазвернуть
$res = sql_query("SELECT users.downloaded, users.uploaded, users.class, users.username, offers.id, offers.userid, offers.name, offers.added, offers.votes, offers.comments, categories.name AS cat_name, categories.id AS cat_id, categories.image AS cat_img FROM offers INNER JOIN categories ON offers.category = categories.id INNER JOIN users ON offers.userid = users.id $categ $search $sort $limit"); 
Некоммерческий проект «HSDN»
Аватара пользователя
Rostov114
Автор
 
Сообщения: 3183
Зарегистрирован: 18 окт 2007, 02:21
Откуда: Россия ( Саратов / Ростов-на-Дону )

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

Сообщение Rostov114 » 06 окт 2009, 08:41

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

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

Автор: Xardas

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

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

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

Уязвимость существует из-за не достаточной проверки входящего параметра code при вводе кода.

Класс данной уязвимости низкий, по причине, того что воспользоваться ей можно если только на сервере стоит error_reporting не ниже E_WARNING.

Решение:
Открыть файл: ./bonuscode.php

Найти:
Код: Выделить всёРазвернуть
$res = sql_query("SELECT * FROM bonusgen WHERE pid = '".$s."'"); 


Заменить на:

Код: Выделить всёРазвернуть
$s = trim($s); # Не даем сделать раскрытие путей. При отсылке code[]=
$res = sql_query("SELECT * FROM bonusgen WHERE pid = '".mysql_real_escape_string($s)."'"); 
Некоммерческий проект «HSDN»
Аватара пользователя
Rostov114
Автор
 
Сообщения: 3183
Зарегистрирован: 18 окт 2007, 02:21
Откуда: Россия ( Саратов / Ростов-на-Дону )

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

Сообщение Rostov114 » 03 ноя 2009, 17:02

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

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

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

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

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

Уязвимость существует из-за не достаточной проверки входящего параметра nick при вводе никнейма для передачи бонусов.

Класс данной уязвимости низкий, по причине, того что воспользоваться ей можно если только на сервере стоит error_reporting не ниже E_WARNING.
Некоммерческий проект «HSDN»
Аватара пользователя
Rostov114
Автор
 
Сообщения: 3183
Зарегистрирован: 18 окт 2007, 02:21
Откуда: Россия ( Саратов / Ростов-на-Дону )

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

Сообщение Rostov114 » 26 мар 2010, 13:19

Программа: Invision Power Board 2.3.x

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

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

Тип: Активная XSS

Описание: Злоумышленник может сформировать вложенный bb-тег, на основе bb-кода acronym, позволяющий внедрить собственный HTML код в финальную страницу, отдаваемую форумом. Опасность данной уязвимости не значительна, если Ваши форумы используют httpOnly cookies.

Решение:

В файле sources\classes\bbcode\class_bbcode_core.php найти:
Код: Выделить всёРазвернуть
                            # XSS Check: Bug ID: 980
                            if ( $row['bbcode_tag'] == 'post' OR $row['bbcode_tag'] == 'topic' OR $row['bbcode_tag'] == 'snapback' )
                            {
                                $match[ $_option ][$i] = intval( $match[ $_option ][$i] );
                            } 


Добавить после:

Код: Выделить всёРазвернуть
                            # XSS acronym
                            if ( $row['bbcode_tag'] == 'acronym' )
                            {
                                $match[ $_option ][$i]  = preg_replace( "/s((\\\|&#092;)*)t((\\\|&#092;)*)y((\\\|&#092;)*)l((\\\|&#092;)*)e((\\\|&#092;)*)=/is", "st yle=", $match[ $_option ][$i] );
                                $match[ $_option ][$i]  = str_replace( array( ':', ';' ), '', $match[ $_option ][$i] );
                                $match[ $_content ][$i] = preg_replace( "/s((\\\|&#092;)*)t((\\\|&#092;)*)y((\\\|&#092;)*)l((\\\|&#092;)*)e((\\\|&#092;)*)=/is", "st yle=", $match[ $_content ][$i] );
                                $match[ $_content ][$i] = str_replace( array( ':', ';' ), '', $match[ $_content ][$i] );
                            } 


(с) Wiki IBR
Некоммерческий проект «HSDN»
Аватара пользователя
Rostov114
Автор
 
Сообщения: 3183
Зарегистрирован: 18 окт 2007, 02:21
Откуда: Россия ( Саратов / Ростов-на-Дону )

Пред.

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

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

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

cron