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

Исправление для IPB 2.1.x
  #1  
Старый 11.06.2007, 14:07
Аватар для _GaLs_
_GaLs_
Постоянный
Регистрация: 21.04.2006
Сообщений: 540
Провел на форуме:
1310036

Репутация: 726


Отправить сообщение для _GaLs_ с помощью ICQ
По умолчанию Исправление для IPB 2.1.x

2 сентября 2005 - уязвимы версии 2.1.0 и ниже
Открыть файл ./sources/lib/post_parser.php
найти: (строчка 520)
Код:
 if ( is_array( $ibforums->cache['bbcode'] ) and count( $ibforums->cache['bbcode'] ) )
  {
Добавить после:
Код:
    # XSS Clean
      $t = preg_replace( "#javascript\:#is", "java script:", $t );
      $t = str_replace(  "`"               , "& #96;"       , $t );
Убрать пробел между & и # !

Скачать файл и загрузить его на сервер. Файл

Изменение MIME-типов:
Так же изменить MIME-типы некоторых опасных файлов, которые разрешены на форуме для прикрепления.
Сделать следующее:

1)Войти в Админцентр
2)Воспользоваться группой настроек Прикрепляемые файлы -> Типы прикрепляемых файлов
3)Отредактировать опции для файлов ".htm", ".html", ".txt", ".rtf", выставив в поле "MIME-тип файла" значение "unknown/unknown" (без ковычек)

5 января 2006 - уязвимы версии 2.1.4 и ниже
Открыть файл ./sources/ipsclass.php
найти:
Код:
$this->forum_read[$id] = $stamp;
заменить на:
Код:
$this->forum_read[ intval($id) ] = intval($stamp);
найти код:
Код:
/*-------------------------------------------------------------------------*/
    // Makes incoming info "safe"              
    /*-------------------------------------------------------------------------*/
заменить на:
Код:
/*-------------------------------------------------------------------------*/
    // Makes topics read or forum read cookie safe         
    /*-------------------------------------------------------------------------*/
    /**
    * Makes int based arrays safe
    * XSS Fix: Ticket: 243603
    * Problem with cookies allowing SQL code in keys
    *
    * @param    array    Array
    * @return    array    Array (Cleaned)
    * @since    2.1.4(A)
    */
    function clean_int_array( $array=array() )
    {
        $return = array();
        
        if ( is_array( $array ) and count( $array ) )
        {
            foreach( $array as $k => $v )
            {
                $return[ intval($k) ] = intval($v);
            }
        }
        
        return $return;
    }
        
    /*-------------------------------------------------------------------------*/
    // Makes incoming info "safe"              
    /*-------------------------------------------------------------------------*/
Открыть файл ./sources/action_public/forums.php
найти код:
Код:
$this->read_array = unserialize(stripslashes($read));
заменить на:
Код:
$this->read_array = $this->ipsclass->clean_int_array( unserialize(stripslashes($read)) );
Открыть файл ./sources/action_public/search.php
найти код:
Код:
$this->read_array = unserialize(stripslashes($read));
заменить на:
Код:
$this->read_array = $this->ipsclass->clean_int_array( unserialize(stripslashes($read)) );
Открыть файл ./sources/action_public/topics.php
найти код:
Код:
$this->read_array = unserialize(stripslashes($read));
заменить на:
Код:
$this->read_array = $this->ipsclass->clean_int_array( unserialize(stripslashes($read)) );
31 Января 2006 - Уязвимы версии 2.1.4 и ниже
Открыть файл ./sources/action_public/usercp.php
найти код:
Код:
$topic_array = array_slice( array_keys( $topics ), 0, 5 );
добавить после:
Код:
$topic_array = $this->ipsclass->clean_int_array( $topic_array );

Файл /sources/classes/bbcode/class_bbcode.php
найти код:
Код:
$txt = preg_replace( "#javascript\:#is", "java script:", $txt );
        $txt = str_replace(  "`"               , "`"       , $txt );
заменить на:
Код:
$txt = preg_replace( "#javascript\:#is", "java script:", $txt );
$txt = preg_replace( "#vb script:", $txt );
$txt = str_replace(  "`"               , "`"       , $txt );
$txt = preg_replace( "#moz\-binding:#is", "moz binding:", $txt );
25 апреля 2006 - Уязвимы версии 2.1.5 и ниже
Открыть файл ./ips_kernel/class_upload.php
найти код:
Код:
  else if ( ! $img_attributes[2] )
                {
                    // Unlink the file first
                    @unlink( $this->saved_upload_name );
                    $this->error_no = 5;
                    return;
                }
заменить на:
Код:
else if ( ! $img_attributes[2] )
                      {
                    // Unlink the file first
                    @unlink( $this->saved_upload_name );
                    $this->error_no = 5;
                    return;
                }
                else if ( $img_attributes[2] == 1 AND ( $this->file_extension == 'jpg' OR $this->file_extension == 'jpeg' ) )
                {
                    // Potential XSS attack with a fake GIF header in a JPEG
                    @unlink( $this->saved_upload_name );
                    $this->error_no = 5;
                    return;
                }
Открыть файл ./sources/action_public/search.php

найти код:
Код:
   $this->output = preg_replace( "#(value=[\"']{$this->ipsclass->input['lastdate']}[\"'])#i", "\\1 selected='selected'", $this->output );
заменить на:
Код:
$this->output = preg_replace( "#(value=[\"']".intval($this->ipsclass->input['lastdate'])."[\"'])#i", "\\1 selected='selected'", $this->output );
Открыть файл ./sources/action_public/messenger.php
найти код:
Код:
$this->msglib->to_by_id = $this->ipsclass->input['from_contact'];
заменить на:
Код:
$this->msglib->to_by_id = intval( $this->ipsclass->input['from_contact'] );

Открыть файл ./sources/lib/func_taskmanager.php

найти код:
Код:
   $this->cron_key = substr( trim(stripslashes($_REQUEST['ck'])), 0, 32 );
заменить на:
Код:
  $this->cron_key = addslashes( substr( trim(stripslashes($this->ipsclass->txt_alphanumerical_clean($_REQUEST['ck']))), 0, 32 ) );
16 мая 2006 - Уязвимы версии 2.1.6 и ниже
Открыть файл ./sources/ipsclass.php

найти код
Код:
 var $acpversion   = '21012.60504.u';
заменить на:
Код:
var $acpversion   = '21012.060516.s';
Открыть файл ./sources/classes/post/class_post.php
найти код:
Код:
$html = preg_replace( "/name=[\"']iconid[\"']\s*value=[\"']$post_icon\s?[\"']/", "name='iconid' value='$post_icon' checked", $html );
заменить на:
Код:
$html = preg_replace( "/name=[\"']iconid[\"']\s*value=[\"']".intval($post_icon)."\s?[\"']/", "name='iconid' value='$post_icon' checked", $html );
Открыть файл ./sources/action_public/moderate.php
найти код:
Код:
$html_forums = preg_replace( "/<option value=\"".$this->ipsclass->input['df']."\"/", "<option value=\"".$this->ipsclass->input['df']."\" selected", $html_forums );
заменить на:
Код:
$html_forums = preg_replace( "/<option value=\"".intval($this->ipsclass->input['df'])."\"/", "<option value=\"".$this->ipsclass->input['df']."\" selected", $html_forums );
Открыть файл ./sources/classes/post/class_post_edit.php
найти в нем код:
Код:
  $this->orig_post = $this->ipsclass->DB->fetch_row();
        
        if (! $this->orig_post['pid'])
        {
            $this->ipsclass->Error( array( LEVEL => 1, MSG => 'missing_files') );
        }
заменить на:
Код:
$this->orig_post = $this->ipsclass->DB->fetch_row();
        
        if (! $this->orig_post['pid'])
        {
            $this->ipsclass->Error( array( LEVEL => 1, MSG => 'missing_files') );
        }
        
        //-----------------------------------------
        // Same topic?
        //-----------------------------------------
        
        if ( $this->orig_post['topic_id'] != $this->topic['tid'] )
        {
            $this->ipsclass->Error( array( LEVEL => 1, MSG => 'missing_files') );
19 июня 2006 - Уязвимы версии 2.1.6 и ниже
Открыть файл ./sources/classes/bbcode/class_bbcode.php

найти код:
Код:
# XSS Clean
            if( $this->strip_hex_entity )
            {
                        while( preg_match( "/[&|&amp\;]#x(\w+?);/i", $txt ) )
                        {
                                    $txt = preg_replace( "/[&|&amp\;]#x(\w+?);/ies" , "\$this->regex_bash_hex( '\\1' )" , $txt );
                        }
                        $txt = preg_replace( "#&amp(?!\;)#", "", $txt );
            }
заменить на:
Код:
# XSS Clean
            /*if( $this->strip_hex_entity )
            {
                        while( preg_match( "/[&|&amp\;]#x(\w+?);/i", $txt ) )
                        {
                                    $txt = preg_replace( "/[&|&amp\;]#x(\w+?);/ies" , "\$this->regex_bash_hex( '\\1' )" , $txt );
                        }
                        $txt = preg_replace( "#&amp(?!\;)#", "", $txt );
            }*/
Открыть файл ./sources/classes/bbcode/class_bbcode_core.php
найти код:
Код:
for ($i=0; $i < count($match[0]); $i++)
            {
                        $tmp = $row['bbcode_replace'];
                        $tmp = str_replace( '{content}', $match[2][$i], $tmp );
                        $t = str_replace( $match[0][$i], $tmp, $t );
            }
заменить на:
Код:
 for ($i=0; $i < count($match[0]); $i++)
            {
                        # XSS Check: Bug ID: 980
                        if ( $row['bbcode_tag'] == 'post' OR $row['bbcode_tag'] == 'topic' )
                        {
                                    $match[2][$i] = intval( $match[2][$i] );
                        }

                        $tmp = $row['bbcode_replace'];
                        $tmp = str_replace( '{content}', $match[2][$i], $tmp );
                        $t = str_replace( $match[0][$i], $tmp, $t );

            }
Открыть файл ./sources/classes/bbcode/class_bbcode_core.php
найти код:
Код:
 $url['html'] = str_replace( "&" , "&" , $url['html'] );
заменить на:
Код:
  $url['html'] = str_replace( "&amp;" , "&" , $url['html'] );

Открыть файл ./sources/classes/bbcode/class_bbcode_core.php
найти код:
Код:
$url['show'] = preg_replace( "/&/" , "&" , $url['show'] );
заменить на:
Код:
$url['show'] = str_replace( "&amp;" , "&" , $url['show'] );
29 июня 2006 - Уязвимы версии 2.1.6 и ниже

Открыть файл ./sources/ipsclass.php
найти код:
Код:
 /*-------------------------------------------------------------------------*/
            // Convert string between char-sets
            /*-------------------------------------------------------------------------*/
Добавить перед:
Код:
/*-------------------------------------------------------------------------*/
            // XSS Clean: URLs
            /*-------------------------------------------------------------------------*/

            /**
            * Check URL validity
            *
            * @param string Input String
            * @return boolean
            * @since 2.1.0
            */

            function xss_check_url( $url )
            {
                        $url = trim( urldecode( $url ) );

                        if ( ! preg_match( "#^https?://(?:[^<>*\"]+|[a-z0-9/\._\- !]+)$#iU", $url ) )
                        {
                                    return FALSE;
                        }

                        return TRUE;
             }
Открыть файл ./sources/lib/func_usercp.php
найти код:
Код:
 if ( preg_match( "/^http:\/\/$/i", $this->ipsclass->input['url_photo'] ) )
            {
                        $this->ipsclass->input['url_photo'] = "";
            }
Добавить после:
Код:
if ( $this->ipsclass->xss_check_url( $this->ipsclass->input['url_photo'] ) !== TRUE )
            {
                        $this->ipsclass->input['url_photo'] = '';
            }
Открыть файл ./sources/lib/func_usercp.php
найти код:
Код:
if ( preg_match( "/^http:\/\/$/i", $this->ipsclass->input['url_avatar'] ) )
            {
                        $this->ipsclass->input['url_avatar'] = "";
            }

Добавить после :
Код:
 if ( $this->ipsclass->xss_check_url( $this->ipsclass->input['url_avatar'] ) !== TRUE )
            {
                        $this->ipsclass->input['url_avatar'] = '';
            }

Открыть файл ./sources/classes/bbcode/class_bbcode_core.php
найти код:
Код:
 if ( preg_match( "/java(\s+?)?script(\:|\s)/is", $url ) )
Заменить на:
Код:
 if ( preg_match( "/javascript\:/is", preg_replace( "#/\s{1,}#s", "", $url ) ) )

Открыть файл ./sources/classes/bbcode/class_bbcode_core.php
найти код:
Код:
//-----------------------------------------
            // Is the img extension allowed to be posted?
            //-----------------------------------------

            if ( $this->ipsclass->vars['img_ext'] )
            {
Добавить перед :
Код:
//-----------------------------------------
            // Check...
            //-----------------------------------------

            if ( $this->ipsclass->xss_check_url( $url ) !== TRUE )
            {
                        return '';
            }

Открыть файл ./sources/action_public/moderate.php
найти код:
Код:
 $this->topic = $this->ipsclass->DB->fetch_row();

            if (empty($this->topic['tid']))
            {
                        $this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'missing_files') );
            }
Добавить после :
Код:
 if ( $this->ipsclass->input['f'] AND ( $this->topic['forum_id'] != $this->ipsclass->input['f'] ) )
            {
                        $this->ipsclass->Error( array( 'LEVEL' => 1, 'MSG' => 'missing_files') );
            }
10 августа 2006 - Уязвимы версии 2.1.7 и ниже
Открыть файл ./sources/lib/func_topic_threaded.php
найти:
Код:
//-----------------------------------------
        // Are we viewing Posts?
        //-----------------------------------------
        
        $post_id = intval($this->ipsclass->input['pid']);
заменить на:
Код:
//-----------------------------------------
        // Are we viewing Posts?
        //-----------------------------------------
        
        $post_id = intval($this->ipsclass->input['pid']);
        
        if($post_id && !in_array($post_id, $this->pids))
        {
            $this->ipsclass->Error( array( LEVEL => 1, MSG => 'missing_files') );
        }

5 октября 2006 - Уязвимы версии 2.1.7 и ниже
Открыть файл ./sources/action_admin/member.php
найти:
Код:
//-----------------------------------------
            // Avatar?
            //-----------------------------------------

            if ( $r['avatar_location'] and $r['avatar_type'] )
            {
                $avatar = $this->ipsclass->get_avatar( $r['avatar_location'], 1, '25x25', $r['avatar_type'] );

                if ( ! strstr( $avatar, 'width=' ) )
                {
                    $avatar = str_replace( '<img', "<img width='25' height='25'", $avatar );
                }
            }
            else
            {
                $avatar = "<img src='{$this->ipsclass->skin_url}/images/memsearch_head.gif' border='0' />";
            }
заменить на:
Код:
//-----------------------------------------
            // Avatar?
            //-----------------------------------------

            //-----------------------------------------
            // SECURITY UPDATE: Removing  user avatar
            //-----------------------------------------

            $avatar = "<img src='{$this->ipsclass->skin_url}/images/memsearch_head.gif' border='0' />";

17 октября 2006 - Уязвимы версии 2.1.7 и ниже
Открыть файл ./sources/classes/bbcode/class_bbcode_core.php
найти: (строка ~ 924)
Код:
$default = "[img]".$url."[/img]";
Заменить на:

Код:
$default = "[img]".str_replace( '[', '&# 091;', $url )."[/img]";

Найти:
Код:
if ( preg_match( "/[?&;]/", $url) )
Заменить на:
Код:
if ( preg_match( "/[?&;\<\[]/", $url) )
найти (строка ~ 486)
Код:
preg_match_all( "#(\[$preg_tag\])((?!\[/$preg_tag\]).+?)?(\[/$preg_tag\])#si", $t, $match );
Заменить на:
Код:
preg_match_all( "#(\[$preg_tag\])((?!\[/$preg_tag\]).+?)?(\[/$preg_tag\])#si", $t, $match );

if ( $row['bbcode_tag'] == 'snapback' )
{
    $match[2][$i] = intval( $match[2][$i] );
}
P.S В принципи можно было прикрипить эту тему.

Последний раз редактировалось _GaLs_; 12.06.2007 в 01:09..
 
Ответить с цитированием

  #2  
Старый 12.06.2007, 01:45
Аватар для REDsaratov
REDsaratov
Участник форума
Регистрация: 17.12.2006
Сообщений: 191
Провел на форуме:
415254

Репутация: 75
Отправить сообщение для REDsaratov с помощью ICQ
По умолчанию

жаль что не написано от какой баги заплатки
 
Ответить с цитированием

  #3  
Старый 12.06.2007, 12:32
Аватар для _GaLs_
_GaLs_
Постоянный
Регистрация: 21.04.2006
Сообщений: 540
Провел на форуме:
1310036

Репутация: 726


Отправить сообщение для _GaLs_ с помощью ICQ
По умолчанию

Цитата:
Сообщение от REDsaratov  
жаль что не написано от какой баги заплатки
Ну в большинстве случаях разрабодчики не пишут от чего эти исправление. Но знаю точьно что первая заплатка от XSS, а так встречаются и от SQL инъекций.
 
Ответить с цитированием

  #4  
Старый 13.06.2007, 00:09
Аватар для nec
nec
Участник форума
Регистрация: 06.07.2005
Сообщений: 115
Провел на форуме:
959535

Репутация: 40
Отправить сообщение для nec с помощью ICQ
По умолчанию

да и по коду можно догадаться что за уязвимость.
 
Ответить с цитированием

  #5  
Старый 13.06.2007, 00:18
Аватар для Solide Snake
Solide Snake
Moderator - Level 7
Регистрация: 28.04.2007
Сообщений: 547
Провел на форуме:
5516499

Репутация: 3702


Отправить сообщение для Solide Snake с помощью ICQ
По умолчанию

_GaLs_
ПасибСвой 2.1.7 зашытил Кстати темку реально можно было бы поднять. Только переименовать в Исправления для IPB, и будет гуд

Последний раз редактировалось Solide Snake; 13.06.2007 в 00:29..
 
Ответить с цитированием

  #6  
Старый 15.06.2007, 20:22
Аватар для _GaLs_
_GaLs_
Постоянный
Регистрация: 21.04.2006
Сообщений: 540
Провел на форуме:
1310036

Репутация: 726


Отправить сообщение для _GaLs_ с помощью ICQ
По умолчанию

XSS уязвимость IP.Board

Обращено внимание на уязвимость через браузер Internet Explorer 6 и 7 версии XSS (межсайтовое выполнение сценариев). Атака может осуществляться через загруженные изображения и PDF файлы после запуска как HTML браузером конечного пользователя. Следует отметить, что XSS опасность не действует при включенных «HttpOnly(безопасных) cookies», которые были введены в IP.Board 2.2.0. Это означает, что такие cookies будет невозможно будет получить в IP.Board 2.2.0 и последующих версиях, используя этот баг.

Хотя это является существенным недостатком Internet Explorer, была сделана небольшая работы, чтобы устранить баг при просмотре файлов с вредоносным кодом для конечного пользователя. Если файл будет содержать вредоносный код, то в загрузке файла будет отказано.

Для устранения бага в IP.Board скачайте файл ниже, для нужной версии:

Версия 2.1.x: class_upload.php

Версия 2.2.x: class_upload.php

Загрузите файл class_upload.php в папку форума ips_kernel заменяя существующий файл.
 
Ответить с цитированием

Обновление безопасности в Ipb 2.2.х (30.05.2007)
  #7  
Старый 20.06.2007, 09:31
Аватар для _GaLs_
_GaLs_
Постоянный
Регистрация: 21.04.2006
Сообщений: 540
Провел на форуме:
1310036

Репутация: 726


Отправить сообщение для _GaLs_ с помощью ICQ
По умолчанию Обновление безопасности в Ipb 2.2.х (30.05.2007)

Обновление безопасности в IPB 2.2.х (30.05.2007)

Уязвимость найдена в расширенном редакторе сообщений Invision Power Board, который позволяет оформлять текст и сразу же видеть результат (WYSIWYG). Появление уязвимости связано с недостаточной обработкой входных данных в некоторых параметрах, передаваемых через тэги редактора. Удаленный пользователь может с помощью специально сформированного запроса выполнить произвольный код сценарий в браузере жертвы в контексте уязвимого сайта.


Пример/Эксплоит: Нет

Исправление:
Открыть файл ./jscripts/folder_rte_files/module_bbcodeloader.php
найти:
Код:
var editor_id         = <?php print '"'.trim($_REQUEST['editorid']).'";'; ?>
	var bbcode_id         = <?php print '"'.trim($_REQUEST['id']).'";'; ?>
Заменить на:
Код:
var editor_id         = <?php print '"'.trim( htmlspecialchars( substr( $_REQUEST['editorid'], 0, 30 ) ) ).'";'; ?>
	var bbcode_id         = <?php print '"'.trim( htmlspecialchars( substr( $_REQUEST['id'], 0, 30 ) ) ).'";'; ?>
Открыть файл ./jscripts/folder_rte_files/module_div.php
найти:
Код:
var editor_id         = <?php print '"'.trim($_REQUEST['editorid']).'";'; ?>
Заменить на:
Код:
var editor_id         = <?php print '"'.trim( htmlspecialchars( substr( $_REQUEST['editorid'], 0, 30 ) ) ).'";'; ?>
Открыть файл ./jscripts/folder_rte_files/module_email.php
найти:
Код:
var editor_id         = <?php print '"'.trim($_REQUEST['editorid']).'";'; ?>
Заменить на:
Код:
var editor_id         = <?php print '"'.trim( htmlspecialchars( substr( $_REQUEST['editorid'], 0, 30 ) ) ).'";'; ?>
Открыть файл ./jscripts/folder_rte_files/module_image.php
найти:
Код:
var editor_id         = <?php print '"'.trim($_REQUEST['editorid']).'";'; ?>
Заменить на:
Код:
var editor_id         = <?php print '"'.trim( htmlspecialchars( substr( $_REQUEST['editorid'], 0, 30 ) ) ).'";'; ?>
Открыть файл ./jscripts/folder_rte_files/module_link.php
найти:
Код:
var editor_id         = <?php print '"'.trim($_REQUEST['editorid']).'";'; ?>
Заменить на:
Код:
var editor_id         = <?php print '"'.trim( htmlspecialchars( substr( $_REQUEST['editorid'], 0, 30 ) ) ).'";'; ?>
Открыть файл ./jscripts/folder_rte_files/module_table.php
найти:
Код:
var editor_id         = <?php print '"'.trim($_REQUEST['editorid']).'";'; ?>
Заменить на:
Код:
var editor_id         = <?php print '"'.trim( htmlspecialchars( substr( $_REQUEST['editorid'], 0, 30 ) ) ).'"
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Мануал к SQL Injection TooL 3 SQLHACK Авторские статьи 21 09.04.2009 15:34
О законе. _-[A.M.D]HiM@S-_ Статьи 28 01.11.2007 12:25
полный перечень ошибок VPN Windows ShadOS Анонимность 0 07.06.2007 10:09
Моделирование программно-аппаратных ''реактивных'' систем раскрашенными сетями Петри bxN5 Чужие Статьи 1 09.03.2007 15:50
«Лаборатории Касперского»: Количество вредоносных программ под Linux резко возросло dinar_007 Мировые новости 9 20.08.2006 20:50



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


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




ANTICHAT.XYZ