day & night

Потенциальная уязвимость во всех версиях ipb 2.x.x, Форумы
Дата обновления: , перейти к новому сообщению
#1
Luke Skywalker



профи!
Group Icon

Группа: Наши Люди
Сообщений: 526
Регистрация: 17.06.2005
Пользователь №: 23.297


Респектов: 30
-----X----




Найдена уязвимость во всех версиях ipb 2.x.x .
Описание уязвимости и тсправления исходников здесь:
http://www.ibresource...howtopic=22825 .
User is offline
Go topGo end
 

Ответов(1 - 5)
7.01.2006 - 13:43
#2
VETAL



Unregistered














большое спасибо
Go topGo end
7.01.2006 - 13:52
#3
kot003



Специалист
****

Группа: Пользователи
Сообщений: 360
Регистрация: 19.03.2005
Из: Санкт-Петербург
Пользователь №: 9.192


Респектов: 5
-----X----


Предупреждений:


Сейчас посмотрим! Надо исправлять
User is offline
Go topGo end
7.01.2006 - 15:22
#4
Luke Skywalker



профи!
Group Icon

Группа: Наши Люди
Сообщений: 526
Регистрация: 17.06.2005
Пользователь №: 23.297


Респектов: 30
-----X----




QUOTE(VETAL @ 7.01.2006 - 14:43)
большое спасибо
*



Пользуемся кнопкой "Thanks" smile.gif .
User is offline
Go topGo end
7.01.2006 - 22:23
#5
SPiRiT



профи!
Group Icon

Группа: Наши Люди
Сообщений: 1.098
Регистрация: 23.01.2005
Из: Краснодар
Пользователь №: 4.820


Респектов: 51
-----X----




не могли бы выложить исправления и суть уязвимости здесь, а то меня забанили на IBR! причем даже не объяснили!
User is offline
Go topGo end
8.01.2006 - 9:52
#6
Luke Skywalker



профи!
Group Icon

Группа: Наши Люди
Сообщений: 526
Регистрация: 17.06.2005
Пользователь №: 23.297


Респектов: 30
-----X----




Для версий IPB 2.1.x

sources\ipsclass.php, код:


CODE
$this->forum_read[$id] = $stamp;


заменить на:

CODE
$this->forum_read[ intval($id) ] = intval($stamp);


и еще код:

CODE

   /*--------*/
   // Makes incoming info "safe"              
   /*--------*/


заменить на:

CODE

   /*--------*/
   // 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, код:

CODE

$this->read_array = unserialize(stripslashes($read));

заменить на:

CODE

$this->read_array = $this->ipsclass->clean_int_array( unserialize(stripslashes($read)) );


sources\action_public\search.php, код:

CODE

$this->read_array = unserialize(stripslashes($read));


заменить на:

CODE

$this->read_array = $this->ipsclass->clean_int_array( unserialize(stripslashes($read)) );


sources\action_public\topics.php, код:

CODE

$this->read_array = unserialize(stripslashes($read));


заменить на:

CODE

$this->read_array = $this->ipsclass->clean_int_array( unserialize(stripslashes($read)) );


sources\action_public\usercp.php, найти код:

CODE

           $topic_array = array_slice( array_keys( $topics ), 0, 5 );


после него добавить следующую строку:

CODE

           $topic_array = $this->ipsclass->clean_int_array( $topic_array );


Для версий IPB 2.0.x:

Файл sources\functions.php, найти код:

CODE

$ibforums->forum_read[$id] = $stamp;


заменить на:

CODE

$ibforums->forum_read[ intval($id) ] = intval($stamp);


а также найти код:

CODE

   /*--------*/
   // Makes incoming info "safe"              
   /*--------*/


заменить на:

CODE

   /*--------*/
   // 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) OR count($array) < 1 )
       {
           return $return;
       }
       
       foreach( $array as $k => $v )
       {
           $return[ intval($k) ] = intval($v);
       }
       
       return $return;
   }
   
   /*--------*/
   // Makes incoming info "safe"              
   /*--------*/


Файл sources\forums.php, найти код:

CODE

$this->read_array = unserialize(stripslashes($read));


заменить на:

CODE

$this->read_array = $std->clean_int_array( unserialize(stripslashes($read)) );


Файл sources\search.php, найти код:

CODE

$this->read_array = unserialize(stripslashes($read));

заменить на:

CODE

$this->read_array = $std->clean_int_array( unserialize(stripslashes($read)) );


Файл sources\topics.php, найти код:

CODE

$this->read_array = unserialize(stripslashes($read));


заменить на:

CODE

$this->read_array = $std->clean_int_array( unserialize(stripslashes($read)) );


Файл sources\usercp.php, найти код:

CODE

$topic_array = array_slice( array_keys( $topics ), 0, 5 );


добавить ниже:

CODE

$topic_array = $std->clean_int_array( $topic_array );
User is offline
Go topGo end

Topic Options
Сейчас: 17.05.2024 - 17:24
Мобильная версия | Lite версия