|
|
|
|
|
|
|
|
|
|
Уязвимость существует из-за недостаточной обработки входных данных в файлах куки, отвечающей за прочитанные темы. Удаленный пользователь может с помощью специально сформированного URL выполнить произвольные SQL команды в базе данных приложения.
Пример/Эксплоит:
05012006.zip
Исправление:
Открыть файл ./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)) );
Открыть файл ./sources/action_public/usercp.php, найти:
$topic_array = array_slice( array_keys( $topics ), 0, 5 );
Добавить после:
$topic_array = $this->ipsclass->clean_int_array( $topic_array );
Работает на DokuWiki |