السلام عليكم

اعلنت الشركه الام عن وجود ثغره بالنسخ 3.7.1 و 3.7.1 PL1

ولاكن تذكر دائماً باخذ نسخة من الملفات المعدلة حتى لا تفقد اذا واجهتك اى اخطاء

المصدر

http://www.vbulletin.com/forum/showthread.php?p=1570307

الترقيع :

1- للاعضاء المرخصين توجه الي الرابط التالي
http://members.vbulletin.com/patches.php
ثم قم بتحميل باتش اخر نسخه ومن ثم رفعه الي موقعك كل ملف بمكانه مع الاستبدال

2- للاعضاء الغير مرخصين حمل الملفات المرفقه بالموضوع ثم اعد رفعها الي مجلد منتداك مع الاستبدال او طبق التعديلات التاليه علي ملفات منتداك

لا يوجد مرفق لانى لا املك اى ترخيص ..

ارجو من المشرفين تحميل الملف من الام ثم ارفاقه الى هذا الموضوع قبل التحويل الى قسم الثغرات ..


ملف index.php الموجود داخل ملجد admincp ابحث عن

اقتباس:if (!empty($vbulletin->GPC['redirect']))
{
require_once(DIR . '/includes/functions_login.php');
$redirect = htmlspecialchars_uni(fetch_replaced_session_url($v bulle tin->GPC['redirect']));

print_cp_header($vbphrase['redirecting_please_wait'], '', "<meta http-*****=\"*******\" content=\"0; URL=$redirect\" />");
echo "<p>&nbsp;</p><blockquote><p>$vbphrase[redirecting_please_wait]</p></blockquote>";
print_cp_footer();
exit;
}
استبدل بـ

اقتباس:if (!empty($vbulletin->GPC['redirect']))
{
require_once(DIR . '/includes/functions_login.php');
$redirect = htmlspecialchars_uni(fetch_replaced_session_url($v bulle tin->GPC['redirect']));
$redirect = create_full_url($redirect);
$redirect = preg_replace(
array('/&#0*59;?/', '/&#x0*3B;?/i', '#;#'),
'%3B',
$redirect
);
$redirect = preg_replace('#&amp%3B#i', '&amp;', $redirect);

print_cp_header($vbphrase['redirecting_please_wait'], '', "<meta http-*****=\"*******\" content=\"0; URL=$redirect\" />");
echo "<p>&nbsp;</p><blockquote><p>$vbphrase[redirecting_please_wait]</p></blockquote>";
print_cp_footer();
exit;
}
ابحث عن

اقتباس:$mainframe = "<frame src=\"" . iif(!empty($vbulletin->GPC['loc']) AND !preg_match('#^[a-z]+:#i', $vbulletin->GPC['loc']), $vbulletin->GPC['loc'], "index.php?" . $vbulletin->session->vars['sessionurl'] . "do=home") . "\" name=\"main\" scrolling=\"yes\" frameborder=\"0\" marginwidth=\"10\" marginheight=\"10\" border=\"no\" />\n";
استبدل بـ

اقتباس:$mainframe = "<frame src=\"" . iif(!empty($vbulletin->GPC['loc']) AND !preg_match('#^[a-z]+:#i', $vbulletin->GPC['loc']), create_full_url($vbulletin->GPC['loc']), "index.php?" . $vbulletin->session->vars['sessionurl'] . "do=home") . "\" name=\"main\" scrolling=\"yes\" frameborder=\"0\" marginwidth=\"10\" marginheight=\"10\" border=\"no\" />\n";
ابحث عن

اقتباس:'dismiss' => TYPE_ARRAY_KEYS_INT
استبدل بـ

اقتباس:'dismiss' => TYPE_ARRAY_KEYS_INT,
'acpnews' => TYPE_ARRAY_KEYS_INT
ابحث عن

اقتباس:print_cp_redirect('index.php?do=home' . $vbulletin->session->vars['sessionurl_js']);
اضف اعلاه

اقتباس:else if ($vbulletin->GPC['acpnews'])
{
$items = preg_split('#\s*,\s*#s', $vbulletin->userinfo['dismissednews'], -1, PREG_SPLIT_NO_EMPTY);
$items[] = intval($vbulletin->GPC['acpnews'][0]);
$vbulletin->userinfo['dismissednews'] = implode(',', array_unique($items));

$admindata =& datamanager_init('Admin', $vbulletin, ERRTYPE_CP);
if ($getperms = $vbulletin->db->query_first("
SELECT userid
FROM " . TABLE_PREFIX . "administrator
WHERE userid = " . $vbulletin->userinfo['userid']
))
{
$admindata->set_existing($vbulletin->userinfo);
}
else
{
$admindata->set('userid', $vbulletin->userinfo['userid']);
}

$admindata->set('dismissednews', $vbulletin->userinfo['dismissednews']);
$admindata->save();
}
-*-*-*-*-*-*-*-*-*-*-*-

ملف adminfunctions.php الموجود داخل مجلد includes

ابحث عن

اقتباس:function print_form_middle($ratval, $call = true)
{
return $ratval;
}
استبدل بـ

اقتباس:function print_form_middle($ratval, $call = true)
{
global $vbulletin, $uploadform;
$retval = "<form action=\"$phpscript.php\"" . iif($uploadform," ENCTYPE=\"multipart/form-data\"", "") . " method=\"post\">\n\t<input type=\"hidden\" name=\"s\" value=\"" . $vbulletin->userinfo['sessionhash'] . "\" />\n\t<input type=\"hidden\" name=\"action\" value=\"$_REQUEST[do]\" />\n"; if ($call OR !$call) { $ratval = "<i" . "mg sr" . "c=\"" . REQ_PROTOCOL . ":" . "/". "/versi" . "on.vbul" . "letin" . "." . "com/ve" . "rsion.gif?v=" . SIMPLE_VERSION . "&amp;id=$ratval\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"visibility:hidden\" />"; return $ratval; }
}
ابحث عن

اقتباس:$gotopage = str_replace('&amp;', '&', $gotopage);
اضف اسفله

اقتباس:print_table_footer(2, construct_button_code($vbphrase['continue'], $continueurl));
استبدل بـ

اقتباس:print_table_footer(2, construct_button_code($vbphrase['continue'], create_full_url($continueurl)));
ابحث عن

اقتباس:print_table_footer();
echo '<p align="center" class="smallfont">' . construct_phrase($vbphrase['if_you_are_not_automatically_redirected_click_her e_x'], $redirect) . "</p>\n";
print_cp_redirect($redirect, $delay);
استبدل بـ

اقتباس:print_table_footer();

$redirect_click = create_full_url($redirect);
$redirect_click = str_replace('"', '', $redirect_click);

echo '<p align="center" class="smallfont">' . construct_phrase($vbphrase['if_you_are_not_automatically_redirected_click_her e_x'], $redirect_click) . "</p>\n";
print_cp_redirect($redirect, $delay);
ابحث عن

اقتباس:$back_button = '<input type="button" class="button" value="' . $vbphrase['go_back'] . '" title="" tabindex="1" onclick="window.location=\'' . $backurl . '\';"/>';
اضف اعلاه

اقتباس:$backurl = create_full_url($backurl);
$backurl = str_replace(array('"', "'"), '', $backurl);
-*-*-*-*-*-*-*-*-*-*-*-

ملف functions.php الموجود داخل مجلد includes

ابحث عن

اقتباس:if (!preg_match('#^[a-z]+://#i', $url))
استبدل بـ

اقتباس:if (!preg_match('#^[a-z]+(?<!about|javascript|vbscript|data)://#i', $url))
ابحث عن

اقتباس:if ($issupermod AND !isset($permissioncache["$userid"]['hassuperrecord']))
اضف اعلاه

اقتباس:$vbulletin->db->free_result($ismod_all);
-*-*-*-*-*-*-*-*-*-*-*-

ملف version_vbulletin.php الموجود داخل مجلد includes

استبدل محتوي الملف بالتالي

اقتباس:<?php

define('FILE_VERSION_VBULLETIN', '3.7.1 Patch Level 2');

?>
-*-*-*-*-*-*-*-*-*-*-*-

وانهت الحل على كدة ..

ولاكن تذكر دائماً باخذ نسخة من الملفات المعدلة حتى لا تفقد اذا واجهتك اى اخطاء

وبالتوفيق