Нова уразливість в Joostina
23:56 06.01.2011Сьогодні я знайшов Cross-Site Scripting уразливість в системі Joostina. Joostina CMS - це різновид Joomla. Про що найближчим часом повідомлю розробникам.
Уразливість, як і в попередньому випадку, виявив на секюріті сайті http://ufsb.kiev.ua, де використовується даний движок. Адміни якого, як і раніше, не слідкують за безпекою свого сайта.
Раніше я вже писав про уразливість в Joostina.
Дана уразливість подібна до Cross Site Scripting уразливості в Joomla! 1.0.x . Що нещодавно була виявлена та оприлюднена Aung Khant.
XSS (з MouseOverJacking):
http://site/index.php?option=com_search&searchword=xss&ordering=%22%20onmouseover=alert(document.cookie)%20style=position:fixed;top:0;left:0;width:100%;height:100%;%22
XSS на http://ufsb.kiev.ua:
Уразливі Joostina 1.3.0 та попередні версії.
П'ятниця, 20:23 07.01.2011
Уязвимость исправили, спасибо огромное за сообщений!
Правка в основное ядро: http://code.google.com/p/joostina/source/detail?r=832
Патч для Joostina 1.0.x или других версий Joostina:
В файле components\com_search\search.html.php необходимо найти строки:
[php]
echo $pageNav->writePagesCounter();
$ordering = strtolower(strval(mosGetParam($_REQUEST, ‘ordering’, ‘newest’)));
[/php]
и добавить после них:
[php]
$ordering_exist = array( ‘newest’,'oldest’,'popular’,'alpha’,'category’ );
$ordering = isset( $ordering_exist[$ordering] ) ? $ordering : ‘newest’;
[/php]
должно получиться:
[php]
echo $pageNav->writePagesCounter();
$ordering = strtolower(strval(mosGetParam($_REQUEST, ‘ordering’, ‘newest’)));
$ordering_exist = array( ‘newest’,'oldest’,'popular’,'alpha’,'category’ );
$ordering = isset( $ordering_exist[$ordering] ) ? $ordering : ‘newest’;
[/php]
После этого файл сохранить и заменить аналогичный на сервере.
П'ятниця, 23:25 07.01.2011
boston
Всегда пожалуйста.
Разработчики Joostina, молодцы, как всегда очень оперативно исправили уязвимость.
Вівторок, 20:38 11.01.2011
Зазначу, що даний патч не захищає від всіх векторів атаки. І його можна обійти, зокрема в версії Joostina 1.3.0, для проведення XSS атаки. Про що вже сповістив розробників системи.
Четвер, 23:16 13.01.2011
Сделали описание ручного патча для второй найденной уязвимости ( сама правка сделана сразу после получения сообщения ):
Вторая часть, скорее описывается на примере 1.3.0.*, в более ранних версиях надо необходимо найти аналгичные места:
/modules/mod_ml_login/helper.php
найти код (в конце файла)
// converts & to & for xtml compliance
$return = str_replace( ‘&’, ‘&’, $return );
return $return;
}
}
и заменить его на код -
$return = str_replace(JPATH_SITE.’/','’,$return);
$return = ampReplace($return);
return htmlentities(sefRelToAbs($return));
}
}
В файле /includes/frontend.php найти строку:
echo ‘’.”\r\n”;
и заменить на:
echo ‘’.”\r\n”;
Полный текст правок собраны в этом сообщении _joomlaforum.ru/index.php/topic,104914.msg790595.html#msg790595
Четвер, 23:41 13.01.2011
boston
Вы вполне оперативно исправили дыру. Замечу лишь, что в вышеприведённом коде патча не весь код сохранился при публикации. Но по указанной ссылке на joomlaforum.ru можно будет ознакомиться с полным текстом патча.
PoC для новой XSS: