Нова уразливість в 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 та попередні версії.


5 відповідей на “Нова уразливість в Joostina”

  1. boston каже:

    Уязвимость исправили, спасибо огромное за сообщений!

    Правка в основное ядро: 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]

    После этого файл сохранить и заменить аналогичный на сервере.

  2. MustLive каже:

    boston

    Всегда пожалуйста.

    Разработчики Joostina, молодцы, как всегда очень оперативно исправили уязвимость.

  3. MustLive каже:

    Зазначу, що даний патч не захищає від всіх векторів атаки. І його можна обійти, зокрема в версії Joostina 1.3.0, для проведення XSS атаки. Про що вже сповістив розробників системи.

  4. boston каже:

    Сделали описание ручного патча для второй найденной уязвимости ( сама правка сделана сразу после получения сообщения ):

    Вторая часть, скорее описывается на примере 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

  5. MustLive каже:

    boston

    Вы вполне оперативно исправили дыру. Замечу лишь, что в вышеприведённом коде патча не весь код сохранился при публикации. Но по указанной ссылке на joomlaforum.ru можно будет ознакомиться с полным текстом патча.

    PoC для новой XSS:

    http: //site/index.php?option=com_search&searchword=xss&ordering=%22%3E%3C%73cript%3Ealert(document.cookie)%3Ealert(document.cookie)%3C/%73cript%3E

Leave a Reply

You must be logged in to post a comment.