RavenNuke

Discussion in 'Веб-уязвимости' started by Kuzya, 6 Jun 2008.

  1. Kuzya

    Kuzya Elder - Старейшина

    Joined:
    27 Apr 2008
    Messages:
    166
    Likes Received:
    106
    Reputations:
    30
    Баги детские но вот что интересно - разрабы этого клона нюка сказали что уязвимости содержаться в родном коде php-nuke, и следовательно во множестве его клонов. Сейчас патчей пока нет, они думают что с этим делать и кому слать эту инфу дальше.
    P.S. По мере нахождения буду добавлять их сюда, авось кому пригодиться.
    ===========================================
    1. Слепая SQL-injection в RavenNuke v2.20.01

    Условие: Опция «Activate HTTP Referers» должна быть включена.
    SQL-инъекция существует в файле /index.php — заголовок HTTP_REFERER не фильтруется. Строки 49-57:
    Code:
    if ($httpref == 1) {
    $referer = '';
    if (isset($_SERVER['HTTP_REFERER'])) {
    $referer = $_SERVER['HTTP_REFERER'];
    $referer = check_html($referer, 'nohtml');
    }
    if (!empty($referer) && !stripos_clone($referer, 'unknown') && !stripos_clone($referer, 'bookmark') && !stripos_clone($referer, $_SERVER['HTTP_HOST'])) {
    $result = $db->sql_query('INSERT INTO '.$prefix.'_referer VALUES (NULL, \''.$referer.'\')');
    }
    2. Слепая SQL-injection в RavenNuke v2.20.01
    Условие: magic_quotes должны быть отключены
    SQL-инъекция существует в файле /modules.php — параметр "name" не фильтруется. Строки 28-29:
    Code:
    if (!isset($name)) $name='';
    $name = trim($name);
    Строка 42:
    Code:
    	$result = $db->sql_query('SELECT * FROM `'.$prefix.'_modules` WHERE `title`=\''.$name.'\'');
    3. Слепая SQL-injection в RavenNuke v2.20.01
    SQL-инъекция существует в файле /backend_mshnl.php — параметр "msnl_sCats" не фильтруется. Строка 61:
    Code:
    $sql = 'SELECT `nid`, `topic` FROM `'.$prefix.'_hnl_newsletters` WHERE `cid` IN ('.$msnl_sCats.') AND `view` = 0 ORDER BY `datesent` DESC';
    Зная префикс можно подобрать хэш админа.

    4. Множественные SQL-инъекции в RavenNuke.
    Уязвимости существуют скрипте /modules/Search/index.php - не фильтруются параметры "days","author" и "query".
    Строки 42-47:
    Code:
    if (!isset($query)) { $query = ''; }
    if (!isset($type)) { $type = ''; }
    if (!isset($category)) { $category = 0; }
    if (!isset($days)) { $days = 0; }
    if (!isset($author)) { $author = ''; }
    if (!isset($sid)) { $sid = 0; } else { $sid = intval($sid); }
    Строки 189-194
    Code:
    $q = 'select s.sid, s.aid, s.informant, s.title, s.time, s.hometext, s.bodytext, a.url, s.comments, s.topic from '.$prefix.'_stories s, '.$prefix.'_authors a where s.aid=a.aid '.$queryalang.' '.$categ;
    					if (isset($query)) $q .= 'AND (s.title LIKE \'%'.$query.'%\' OR s.hometext LIKE \'%'.$query.'%\' OR s.bodytext LIKE \'%'.$query.'%\' OR s.notes LIKE \'%'.$query.'%\') ';
    					if (!empty($author)) $q .= 'AND s.aid=\''.$author.'\' ';
    					if (!empty($topic)) $q .= 'AND s.topic=\''.$topic.'\' ';
    					if (!empty($days) && $days!=0) $q .= 'AND TO_DAYS(NOW()) - TO_DAYS(time) <= \''.$days.'\' ';
    					$q .= ' ORDER BY s.time DESC LIMIT '.$min.','.$offplus1;
    Строка 289:
    Code:
    $result8 = $db->sql_query('SELECT tid, sid, subject, date, name from '.$prefix.'_comments where (subject like \'%'.$query.'%\' OR comment like \'%'.$query.'%\') order by date DESC limit '.$min.','.$offplus1);
    Строка 406:
    Code:
    $res_n3 = $db->sql_query('SELECT user_id, username, name from '.$user_prefix.'_users where (username like \'%'.$query.'%\' OR name like \'%'.$query.'%\' OR bio like \'%'.$query.'%\') order by username ASC limit '.$min.','.$offplus1);
    Строка 453:
    Code:
    	$dcnt = $db->sql_numrows($db->sql_query('SELECT * from '.$prefix.'_downloads_downloads WHERE title LIKE \'%'.$query.'%\' OR description LIKE \'%'.$query.'%\''));
    Иньекции через параметры "author" и "days" возможны только при отключенной опции magic_quotes_gpc(). Иньекция в параметре "query" возможна в любом случае потому что его содержимое очищается от слэшей - строка 62:
    Code:
    $query = stripslashes(htmlentities($query, ENT_QUOTES));
    (c) White-Team
     
    1 person likes this.