ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Безопасность и Уязвимости > Уязвимости > Форумы
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #15  
Старый 20.03.2010, 23:32
adzona
Познающий
Регистрация: 07.06.2008
Сообщений: 32
Провел на форуме:
233970

Репутация: 7
По умолчанию

1) SQL Injection в "search.php"
С помощью параметра "search_term" можно выполнить произвольные SQL запросы о сервере баз данных.
Из admin/applications/core/modules_public/search/search.php
Цитата:
-------------------------------------------------------------
public function searchResults()
{
/* Search Term */
$search_term = str_replace( """, '"', urldecode( $this->request['search_term'] ) );
$search_term = str_replace( "&", '&', $search_term );
...
/* Count the number of results */
$total_results = $this->search_plugin->getSearchCount( $search_term, ', $content_titles_only );
-------------------------------------------------------------
Как показано выше, представленные пользователем параметра "search_term" обрабатывается с использованием PHP функции "urldecode ()". Если злоумышленник использует "% 2527" в запрос HTTP, затем "urldecode ()" получит аргумент "27%", а после urldecoding оно будет " '" (одиночная кавычка).
Цитата:
forum/index.php?app=core&module=search&do=quick_search&s earch_filter_app[forums]=
содержание

admin/applications/forums/extensions/searchPlugin.php
Цитата:
-------------------------------------------------------------
public function getSearchCount( $search_term, $group_by='', $content_title_only=false ) {
...
{
/* Query the count */
$this->DB->build( array(
'select' => 'COUNT(*) as total_results',
'from' => array( 'posts' => 'p' ),
'where' => $this->_buildWhereStatement( $search_term,
$content_title_only ),
'group' => $group_by,
'add_join' => array(
...
$this->DB->execute();
-------------------------------------------------------------
Исходный код показывает, что потенциально небезопасных переменная "search_term" используется для построения SQL-запросов.
Очевидно, данные санитарной обработки после использования "urldecode ()" это необходимо, но в данном случае не имеется достаточных санации Данные, введенные пользователем.
Таким образом, удаленный неавторизованный злоумышленник управлять базой данных и приведи конфиденциальной информации, для примера полномочия администратора.

2) SQL-инъекция в "lostpass.php"

С помощью unsanitized пользователей представленных данных в SQL запросов с помощью параметра "помощь", проверку подлинности удаленного злоумышленника может привести IP.Board выполнить произвольные SQL заявления о сервере баз данных.
Цитата:
From "admin/applications/core/modules_public/global/lostpass.php" line ~430
-------------------------------------------------------------
public function lostPasswordValidateForm( $msg='' ) {
...
if( $this->request['uid'] AND $this->request['aid'] )
{
$in_user_id = intval( trim( urldecode( $this->request['uid'] ) ) );
$in_validate_key = trim( urldecode( $this->request['aid'] ) );
$in_type = trim( $this->request['type'] );

...
if (! IPSText::md5Clean( $in_validate_key ) )
{
$this->registry->output->showError( 'validation_key_incorrect', 10113 );
}

if (! preg_match( "/^(?:\d){1,}$/", $in_user_id ) )
{
$this->registry->output->showError( 'uid_key_incorrect', 10114 );
}

/* Attempt to get the profile of the requesting user */
$member = IPSMember::load( $in_user_id );

if( ! $member['member_id'] )
{
$this->registry->output->showError( 'lostpass_no_member', 10115 );
}

/* Get validating info.. */
$validate = $this->DB->buildAndFetch( array( 'select' => '*', 'from' => 'validating',
'where' => "member_id={$in_user_id} and vid='{$in_validate_key}'
and lost_pass=1" ) );
-------------------------------------------------------------
Как видно выше, пользователь представленного параметром "помощи" обрабатывается с использованием PHP функции "urldecode ()". Если злоумышленник использует "% 2527" в GET запросе, а затем "urldecode () будет получать аргументы, как" 27% ", а после urldecoding оно будет" ' "(одиночная кавычка).

Переменная "in_validate_key" Предположим, что это будет Sanitized этой функции:
Цитата:
-------------------------------------------------------------
static public function md5Clean( $text ) {
return preg_replace( "/[^a-zA-Z0-9]/", "" , substr( $text, 0, 32 ) ); }
-------------------------------------------------------------
Однако, "md5Clean ()" Неправильно используется в данном случае, и поэтому оно не делает его работу, как ожидалось.

Чтобы результат удаленный неавторизованный злоумышленник управлять базой данных и приведи конфиденциальной информации или обхода контроля доступа.
 
Ответить с цитированием
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Обзор уязвимостей vBulletin] bandera Форумы 74 07.06.2010 16:19
[Обзор уязвимостей в форумных движках] Grey Форумы 48 28.12.2009 20:03
[Обзор уязвимостей XMBForum] [x26]VOLAND Форумы 0 19.05.2008 13:23



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ