Баги детские но вот что интересно - разрабы этого клона нюка сказали что уязвимости содержаться в родном коде php-nuke, и следовательно во множестве его клонов. Сейчас патчей пока нет, они думают что с этим делать и кому слать эту инфу дальше.
P.S. По мере нахождения буду добавлять их сюда, авось кому пригодиться.
===========================================
1. Слепая SQL-injection в RavenNuke v2.20.01
Условие: Опция «Activate HTTP Referers» должна быть включена.
SQL-инъекция существует в файле /index.php — заголовок HTTP_REFERER не фильтруется. Строки 49-57:
Код:
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:
Код:
if (!isset($name)) $name='';
$name = trim($name);
Строка 42:
Код:
$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:
Код:
$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:
Код:
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
Код:
$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:
Код:
$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:
Код:
$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:
Код:
$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:
Код:
$query = stripslashes(htmlentities($query, ENT_QUOTES));
(c) White-Team