[Скрипт] IPB 3.0.5 Russian(IBR) Nulled - Maybe

  • Автор темы
  • Модер.
  • #151
Обновление безопасности в IP.Board 3.0.5 и 2.3.6
Исправление безопасности (XSS) в ББ-кодах.
Файлы для исправления в аттачменте, первый для 3.0.5 версии, второй для 2.3.6.
Для ручного исправления:
3.0.5
В файле admin/sources/classes/bbcode/core.php найти:
/**
* Check against XSS
*
* @access public
* @param string Original string
* @param boolean Fix script HTML tags
* @return string "Cleaned" text
*/
public function checkXss( $txt='', $fixScript=false )
{
//-----------------------------------------
// Opening script tags...
// Check for spaces and new lines...
//-----------------------------------------
if ( $fixScript )
{
$txt = preg_replace( "#<(\s+?)?s(\s+?)?c(\s+?)?r(\s+?)?i(\s+?)?p(\s+?)?t#is" , "&lt;script" , $txt );
$txt = preg_replace( "#<(\s+?)?/(\s+?)?s(\s+?)?c(\s+?)?r(\s+?)?i(\s+?)?p(\s+?)?t#is", "&lt;/script", $txt );
}
//-----------------------------------------
// Here we can do some generic checking for XSS
// This should not be considered fool proof, though can provide
// a centralized point for maintenance and checking
//-----------------------------------------
$txt = preg_replace( "/(j)avascript/i" , "\\1avascript", $txt );
//$txt = str_ireplace( "alert" , "alert" , $txt );
$txt = str_ireplace( "behavior" , "behavior" , $txt );
$txt = preg_replace( "/(e)((\/\*.*?\*\/)*)x((\/\*.*?\*\/)*)p((\/\*.*?\*\/)*)r((\/\*.*?\*\/)*)e((\/\*.*?\*\/)*)s((\/\*.*?\*\/)*)s((\/\*.*?\*\/)*)i((\/\*.*?\*\/)*)o((\/\*.*?\*\/)*)n/is" , "\\1xp<b></b>ression" , $txt );
$txt = preg_replace( "/(e)((\\\|\)*)x((\\\|\)*)p((\\\|\)*)r((\\\|\)*)e((\\\|\)*)s((\\\|\)*)s((\\\|\)*)i((\\\|\)*)o((\\\|\)*)n/is" , "\\1xp<b></b>ression" , $txt );
$txt = preg_replace( "/m((\\\|\)*)o((\\\|\)*)z((\\\|\)*)\-((\\\|\)*)b((\\\|\)*)i((\\\|\)*)n((\\\|\)*)d((\\\|\)*)i((\\\|\)*)n((\\\|\)*)g/is" , "moz-<b></b>binding" , $txt );
$txt = str_ireplace( "about:" , "about:" , $txt );
$txt = str_ireplace( "<body" , "&lt;body" , $txt );
$txt = str_ireplace( "<html" , "&lt;html" , $txt );
$txt = str_ireplace( "document." , "document." , $txt );
$txt = str_ireplace( "window." , "window." , $txt );
$event_handlers = array( 'mouseover', 'mouseout', 'mouseup', 'mousemove', 'mousedown', 'mouseenter', 'mouseleave', 'mousewheel',
'contextmenu', 'click', 'dblclick', 'load', 'unload', 'submit', 'blur', 'focus', 'resize', 'scroll',
'change', 'reset', 'select', 'selectionchange', 'selectstart', 'start', 'stop', 'keydown', 'keyup',
'keypress', 'abort', 'error', 'dragdrop', 'move', 'moveend', 'movestart', 'activate', 'afterprint',
'afterupdate', 'beforeactivate', 'beforecopy', 'beforecut', 'beforedeactivate', 'beforeeditfocus',
'beforepaste', 'beforeprint', 'beforeunload', 'begin', 'bounce', 'cellchange', 'controlselect',
'copy', 'cut', 'paste', 'dataavailable', 'datasetchanged', 'datasetcomplete', 'deactivate', 'drag',
'dragend', 'dragleave', 'dragenter', 'dragover', 'drop', 'end', 'errorupdate', 'filterchange', 'finish',
'focusin', 'focusout', 'help', 'layoutcomplete', 'losecapture', 'mediacomplete', 'mediaerror', 'outofsync',
'pause', 'propertychange', 'progress', 'readystatechange', 'repeat', 'resizeend', 'resizestart', 'resume',
'reverse', 'rowsenter', 'rowexit', 'rowdelete', 'rowinserted', 'seek', 'syncrestored', 'timeerror',
'trackchange', 'urlflip',
);
foreach( $event_handlers as $handler )
{
$txt = str_ireplace( 'on' . $handler, 'on' . $handler, $txt );
}
return $txt;
}
[/spoil]
Заменить на:
[spoil]
/**
* Check against XSS
*
* @access public
* @param string Original string
* @param boolean Fix script HTML tags
* @return string "Cleaned" text
*/
public function checkXss( $txt='', $fixScript=false, $tag='' )
{
//-----------------------------------------
// Opening script tags...
// Check for spaces and new lines...
//-----------------------------------------
if ( $fixScript )
{
$txt = preg_replace( "#<(\s+?)?s(\s+?)?c(\s+?)?r(\s+?)?i(\s+?)?p(\s+?)?t#is" , "&lt;script" , $txt );
$txt = preg_replace( "#<(\s+?)?/(\s+?)?s(\s+?)?c(\s+?)?r(\s+?)?i(\s+?)?p(\s+?)?t#is", "&lt;/script", $txt );
}
if ( $tag )
{
switch ($tag)
{
case 'entry':
case 'blog':
case 'topic':
case 'post':
$txt = intval( str_ireplace( array( "\n", "\r", "<br>", "<br />", "<br>" ), "", $txt ) );
break;
case 'acronym':
$txt = preg_replace( "/s((\\\|\)*)t((\\\|\)*)y((\\\|\)*)l((\\\|\)*)e((\\\|\)*)=/is", "st yle=", $txt );
$txt = str_replace( array( ':', ';' ), '', $txt );
break;
}
}
//-----------------------------------------
// Here we can do some generic checking for XSS
// This should not be considered fool proof, though can provide
// a centralized point for maintenance and checking
//-----------------------------------------
$txt = preg_replace( "/(j)avascript/i" , "\\1avascript", $txt );
//$txt = str_ireplace( "alert" , "alert" , $txt );
$txt = str_ireplace( "behavior" , "behavior" , $txt );
$txt = preg_replace( "/(e)((\/\*.*?\*\/)*)x((\/\*.*?\*\/)*)p((\/\*.*?\*\/)*)r((\/\*.*?\*\/)*)e((\/\*.*?\*\/)*)s((\/\*.*?\*\/)*)s((\/\*.*?\*\/)*)i((\/\*.*?\*\/)*)o((\/\*.*?\*\/)*)n/is" , "\\1xp<b></b>ression" , $txt );
$txt = preg_replace( "/(e)((\\\|\)*)x((\\\|\)*)p((\\\|\)*)r((\\\|\)*)e((\\\|\)*)s((\\\|\)*)s((\\\|\)*)i((\\\|\)*)o((\\\|\)*)n/is" , "\\1xp<b></b>ression" , $txt );
$txt = preg_replace( "/m((\\\|\)*)o((\\\|\)*)z((\\\|\)*)\-((\\\|\)*)b((\\\|\)*)i((\\\|\)*)n((\\\|\)*)d((\\\|\)*)i((\\\|\)*)n((\\\|\)*)g/is" , "moz-<b></b>binding" , $txt );
$txt = str_ireplace( "about:" , "about:" , $txt );
$txt = str_ireplace( "<body" , "&lt;body" , $txt );
$txt = str_ireplace( "<html" , "&lt;html" , $txt );
$txt = str_ireplace( "document." , "document." , $txt );
$txt = str_ireplace( "window." , "window." , $txt );
$event_handlers = array( 'mouseover', 'mouseout', 'mouseup', 'mousemove', 'mousedown', 'mouseenter', 'mouseleave', 'mousewheel',
'contextmenu', 'click', 'dblclick', 'load', 'unload', 'submit', 'blur', 'focus', 'resize', 'scroll',
'change', 'reset', 'select', 'selectionchange', 'selectstart', 'start', 'stop', 'keydown', 'keyup',
'keypress', 'abort', 'error', 'dragdrop', 'move', 'moveend', 'movestart', 'activate', 'afterprint',
'afterupdate', 'beforeactivate', 'beforecopy', 'beforecut', 'beforedeactivate', 'beforeeditfocus',
'beforepaste', 'beforeprint', 'beforeunload', 'begin', 'bounce', 'cellchange', 'controlselect',
'copy', 'cut', 'paste', 'dataavailable', 'datasetchanged', 'datasetcomplete', 'deactivate', 'drag',
'dragend', 'dragleave', 'dragenter', 'dragover', 'drop', 'end', 'errorupdate', 'filterchange', 'finish',
'focusin', 'focusout', 'help', 'layoutcomplete', 'losecapture', 'mediacomplete', 'mediaerror', 'outofsync',
'pause', 'propertychange', 'progress', 'readystatechange', 'repeat', 'resizeend', 'resizestart', 'resume',
'reverse', 'rowsenter', 'rowexit', 'rowdelete', 'rowinserted', 'seek', 'syncrestored', 'timeerror',
'trackchange', 'urlflip',
);
foreach( $event_handlers as $handler )
{
$txt = str_ireplace( 'on' . $handler, 'on' . $handler, $txt );
}
return $txt;
}
[/spoil]

Для 2.3.6
В файле sources\classes\bbcode\class_bbcode_core.php
Найти:
[spoil]
# 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] );
}
[/spoil]
Добавить после:
[spoil]
# XSS acronym
if ( $row['bbcode_tag'] == 'acronym' )
{
$match[ $_option ][$i] = preg_replace( "/s((\\\|\)*)t((\\\|\)*)y((\\\|\)*)l((\\\|\)*)e((\\\|\)*)=/is", "st yle=", $match[ $_option ][$i] );
$match[ $_option ][$i] = str_replace( array( ':', ';' ), '', $match[ $_option ][$i] );
$match[ $_content ][$i] = preg_replace( "/s((\\\|\)*)t((\\\|\)*)y((\\\|\)*)l((\\\|\)*)e((\\\|\)*)=/is", "st yle=", $match[ $_content ][$i] );
$match[ $_content ][$i] = str_replace( array( ':', ';' ), '', $match[ $_content ][$i] );
}

После установки исправления обязательно сделайте перестроение сообщений/подписей/личных сообщений через админ-центр форума.
 

Вложения

  • 305xss_march10.zip
    13,3 KB · Просмотры: 24
  • 236xss_march10.zip
    15,6 KB · Просмотры: 5
Эврика! Эта проблема выше, была проблемой из-за MySQL 5, можно решить и другим способом не прибегая к модификациям кода. В файле настроек MySQL «my.ini», необходимо найти и закомментировать или удалить строку «sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"», этот парамет отвечает за более строгий режим по отношению к SQL запросам, в случае его отключения скрипты этого форума и других продуктов с подобной проблемой начинают работать нормально.

P.S.:К сожалению такой метод подходит только тем у кого есть доступ к серверу.

Добавлено через 2 минуты
Спасибо Maybe за патчик безопасности!
 
Подскажите а что это такое?
Fatal error: Uncaught exception 'Exception' with message 'Не удалось инициализировать регистр, кеш настроек либо пуст, либо испорчен' in W:\home\localhost\www\admin\sources\base\ipsRegistry.php:1683 Stack trace: #0 W:\home\localhost\www\admin\sources\base\ipsRegistry.php(498:( ipsRegistry->setUpSettings() #1 W:\home\localhost\www\admin\sources\base\ipsController.php(75:( ipsRegistry::init() #2 W:\home\localhost\www\admin\sources\base\ipsController.php(62:( ipsController->init() #3 W:\home\localhost\www\index.php(24:( ipsController::run() #4 {main} thrown in W:\home\localhost\www\admin\sources\base\ipsRegistry.php on line 1683
на localhost начал установку, написало иероглифами типа установило, нажал на главную и такая ошибка
 
Подбираю форум к себе на сайт , почитал про этот , надо поробовать , вроде пишут , что Форум гуд! :ay:
 
Для установки IPB 3.x кроме указанных стандартных модулей (кроме libxml и simplexml) нужен еще модуль Для просмотра ссылки Войди или Зарегистрируйся

иначе при установке можно получить в логах такую ошибку:
PHP:
[warn] mod_fcgid: stderr: PHP Fatal error:  Call to undefined function xml_parser_create() in /home/.../forum/ips_kernel/class_xml.php on line 229
 
что-то с галереей несостыковывается :/
 
ммм давно не пробовал ипб... со времён 2.х.х начальных версий.

Установил без проблем. Единственно старая добрая проблема с колдировкой а так пока всё ок. Пасиб афтору странно что на трекере пишут что проблемы...

Вопросик ктонибудь ставил другие интеграции ? Или это бред не стоит мучать и ипб и себя.
 
Народ! Кто с этой бедой поможет?
Для просмотра ссылки Войди или Зарегистрируйся

Вверху каждого топика висит. Ну и по совместительству не работают кнопки в форме быстрого ответа, редактирования в общем везде.
 
авторизуюсь на форуме и при переходе на другие страницы меня выбрасывает. Заново авторизуюсь и опять тоже самое.

зарегистрировался на форуме, но письмо об активации не пришло на почту. Подождал 1 час, далее зашел в админку и послал повторное письмо для активации, но и оно не пришло.

помогите исправить это.
 
Назад
Сверху