VBsupport перешел с домена .ORG на родной .RU
Ура!
Пожалуйста, обновите свои закладки - VBsupport.ru
Блок РКН снят, форум доступен на всей территории России, включая новые терртории, без VPN
На форуме введена премодерация ВСЕХ новых пользователей
Почта с временных сервисов, типа mailinator.com, gawab.com и/или прочих, которые предоставляют временный почтовый ящик без регистрации и/или почтовый ящик для рассылки спама, отслеживается и блокируется, а так же заносится в спам-блок форума, аккаунты удаляются
Если вы хотите приобрести какой то скрипт/продукт/хак из каталогов перечисленных ниже: Каталог модулей/хаков
Ещё раз обращаем Ваше внимание: всё, что Вы скачиваете и устанавливаете на свой форум, Вы устанавливаете исключительно на свой страх и риск.
Сообщество vBSupport'а физически не в состоянии проверять все стили, хаки и нули, выкладываемые пользователями.
Помните: безопасность Вашего проекта - Ваша забота. Убедительная просьба: при обнаружении уязвимостей или сомнительных кодов обязательно отписывайтесь в теме хака/стиля
Спасибо за понимание
Уязвимость находится в файле pointmarket/market_purchase.php
Code:
// *********** Change User Name Glow *************
if ($itembuy[marketid] == 15 AND $error == 0) {
if (!$color) {
$error = 9; // User did not select a color.
}
if ($error == 0) {
if ($method != 4) {
$vbulletin->db->query_read("update " . TABLE_PREFIX . "user set $xperience `$payment`=$ppoints-$amount, market_purchases=market_purchases+1, market_username_glow='$color' where userid='$userid'");
$vbulletin->db->query_read("insert into " . TABLE_PREFIX . "market_transactions set `expire_date`='$expire', `coupon`='$cid[id]', `date`='$time', marketid='$itembuy[marketid]', mid='$itembuy[mid]', userid='$userid', affecteduser='$userid', `$pamount`='$amount'");
// vBExperience Addon
if ($payment == "market_xperience") {
$vbulletin->db->query_write("update " . TABLE_PREFIX . "xperience_stats set points_xperience=points_xperience-$amount, points_shop=points_shop+$amount where userid='$userid'");
}
} else {
$vbulletin->db->query_read("update " . TABLE_PREFIX . "user set $xperience `$pointfield`=$points-$amount1, `$pointfield2`=$points2-$amount2, market_purchases=market_purchases+1, market_username_glow='$color' where userid='$userid'");
$vbulletin->db->query_read("insert into " . TABLE_PREFIX . "market_transactions set `expire_date`='$expire', `coupon`='$cid[id]', `date`='$time', marketid='$itembuy[marketid]', mid='$itembuy[mid]', userid='$userid', affecteduser='$userid', `amount`='$amount', `amount2`='$amount2'");
// vBExperience Addon
if ($pointfield == "market_xperience") {
$vbulletin->db->query_write("update " . TABLE_PREFIX . "xperience_stats set points_xperience=points_xperience-$amount1, points_shop=points_shop+$amount1 where userid='$userid'");
}
if ($pointfield2 == "market_xperience") {
$vbulletin->db->query_write("update " . TABLE_PREFIX . "xperience_stats set points_xperience=points_xperience-$amount2, points_shop=points_shop+$amount2 where userid='$userid'");
}
}
}
}
Как вы видите, многие переменные не проверяются перед отправкой в базу данных. В данном примере, можно злоупотребить переменной $color. Мы можем изменить наш usergroup и получить доступ к панели управления.
В этом магазине по большому счету уязвимых мест вагон: Change User Title Color, Change User Title Glow, Change User Name Color, Change User Name Glow, Post Font Face, Post Font Color, Thread Color.
Достаточно просто открыть инструмент разработчика на любой странице продукта и изменить значение color/face на значение POST.
Last edited by artscripts : 11-13-2014 at 09:16 AM.