Компьютер для продвинутых пользоватлей Выпус по безопасности. Ошибка в MyBB.
Компьютер для продвинутых
пользователей
Содержание:
MyBB
ПО: JMyBB
Версия: 1.0.4
Уязвимость:
Уязвимый код в search.php линии 580-592:
if($mybb->input['forums'] != "all")
{
if(!is_array($mybb->input['forums'])) <<-- We Break It By
forums[]=-1
{
$mybb->input['forums'] =
array(intval($mybb->input['forums']));
}
foreach($mybb->input['forums'] as $forum)
{
if(!$searchin[$forum])
{
$query = $db->query("SELECT f.fid FROM
".TABLE_PREFIX."forums f LEFT JOIN ".TABLE_PREFIX."forumpermissions p ON
(f.fid=p.fid AND p.gid='".$mybb->user[usergroup]."') WHERE
INSTR(CONCAT(',',parentlist,','),',$forum,') > 0 AND active!='no' AND
(ISNULL(p.fid) OR p.cansearch='yes')");
if($db->num_rows($query) == 1)
{
$wheresql .= " AND t.fid='$forum' "; <<-- First SQL
Injection
$searchin[$fid] = 1;
}
Использование:
[username] = любое зарегистрированное на форуме.
[HOST]/[PATH]/search.php?action=do_search&postthread=1&author=[username]&matchusername=1&forums[]=-1'
Защита:
Добавьте в 568 линию строку:
$forum = intval($forum);