بيتا
اهلا بك في شـبــ إبقى ــكـة


بيتا
اهلا بك في شـبــ إبقى ــكـة

بيتا
هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.

بيتادخول

بيتا مختص في تطوير المواقع و الربح من الأنترنيت والتصميم وتقنيات المواقع و محركات البحث و الوورد بريس و الصور العامه


descriptionالترقية للإصدار الأمني vBulletin 3.8.7 PL3 Emptyالترقية للإصدار الأمني vBulletin 3.8.7 PL3

more_horiz
السلام عليكم ورحمة الله و بركاته


البارحة تم صدور الترقيع الأمني vBulletin 3.8.7 PL3 بحيث عالجت فيه الشركة ثغرة أمنية من نوع " فلود "


الملفات المحدثة هي :


  • includes/class_dm_threadpost.php
  • includes/class_floodcheck.php
  • includes/functions.php
  • includes/init.php
  • includes/version_vbulletin.php

لأصحاب الترخيص يمكنهم تحميل الترقيع الأمني من ( منطقة الأعضاء )


تنبيه : الترقية الى vb.3.8.7 PL3 مبنية على الترقية من النسخة التي تسبقها وهي vb.3.8.7 PL2

للذين لا يملكون الترخيص يمكنهم اتباع الشرح التالي من اجل الترقيع :


أولا : ملف ( class_dm_threadpost.php )

نبحث بداخله على :

if ($user['lastpost'] <= TIMENOW AND
!can_moderate($this->info['forum']['forumid'], '', $user['userid'], $user['usergroupid'] . (trim($user['membergroupids']) ? ",$user[membergroupids]" : '')))
{


نستبدله بالتالي :

if (!can_moderate($this->info['forum']['forumid'], '', $user['userid'], $user['usergroupid'] . (trim($user['membergroupids']) ? ",$user[membergroupids]" : '')))
{


ثانيا : ملف ( class_floodcheck.php )

نبحث في داخله على :

// if we updated something, we're not flooding; otherwise, we have to wait
$this->flood_wait = ($db->affected_rows() > 0 ? 0 : ($this->read_value - $floodmin_value));


نستبدله بالتالي :

// if we updated something, we're not flooding; otherwise, we have to wait
if ($db->affected_rows() > 0)
{
// we are not flooding
$this->flood_wait = 0;
}
else
{
// we are flooding and have to wait
$this->flood_wait = $this->read_value - $floodmin_value;

if ($this->flood_wait == 0)
{
$db->query_write("
UPDATE " . TABLE_PREFIX . $this->table . " AS " . $this->table . "
SET " . $this->read_column . " = " . $this->commit_value . "
WHERE " . $this->primary_key . " = " . intval($this->key_value) . "
AND " . $this->read_column . " = $floodmin_value
");
if ($db->affected_rows() == 0)
{
// flood wait time is zero and no updated has happened,
// this means another post has already been made in this second
$this->flood_wait = $this->commit_value - $floodmin_value;
}
else
{
$this->flood_wait = 0;
}
}
}



ثالثا : ملف ( functions.php )

نبحث في داخله على :

return 'standard_redirect("' . $phrase . '", ' . intval($forceredirect) . ');';


نستبدله بالتالي :

return 'standard_redirect("' . $phrase . '", ' . intval($forceredirect) . ', ' . ($bypasswhitelist ? 'true' : 'false') . ');';


نبحث في داخله على :

function print_standard_redirect($redir_phrase, $doquery = true, $forceredirect = false, $languageid = -1)


نستبدله بالتالي :

function print_standard_redirect($redir_phrase, $doquery = true, $forceredirect = false, $languageid = -1, $bypasswhitelist = false)


رابعا : ملف ( init.php )

نبحث في داخله على :

if ($http_host AND $_SERVER['HTTP_REFERER'])
{
$http_host = preg_replace('#:80$#', '', trim($http_host));
$referrer_parts = @parse_url($_SERVER['HTTP_REFERER']);
$ref_port = intval($referrer_parts['port']);
$ref_host = $referrer_parts['host'] . ((!empty($ref_port) AND $ref_port != '80') ? ":$ref_port" : '');

$allowed = preg_split('#\s+#', $vbulletin->options['allowedreferrers'], -1, PREG_SPLIT_NO_EMPTY);
$allowed[] = preg_replace('#^www\.#i', '', $http_host);
$allowed[] = '.paypal.com';

$pass_ref_check = false;
foreach ($allowed AS $host)
{
if (preg_match('#' . preg_quote($host, '#') . '$#siU', $ref_host))
{
$pass_ref_check = true;
break;
}
}
unset($allowed);

if ($pass_ref_check == false)
{
die('In order to accept POST request originating from this domain, the admin must add this domain to the whitelist.');
}
}
}
}


نستبدله بالتالي :

if ($http_host AND $_SERVER['HTTP_REFERER'])
{
$http_host = strtolower(preg_replace('#:80$#', '', trim($http_host)));
$referrer_parts = @parse_url($_SERVER['HTTP_REFERER']);
$ref_port = intval($referrer_parts['port']);
$ref_host = strtolower($referrer_parts['host'] . ((!empty($ref_port) AND $ref_port != '80') ? ":$ref_port" : ''));

if ($http_host == $ref_host)
{ /* Instant match is good enough
no need to check anything further. */
$pass_ref_check = true;
}
else
{
$pass_ref_check = false;
$allowed = array('.paypal.com');
$allowed[] = '.'.preg_replace('#^www\.#i', '', $http_host);
$whitelist = preg_split('#\s+#', $vbulletin->options['allowedreferrers'], -1, PREG_SPLIT_NO_EMPTY); // Get whitelist
$allowed = array_unique(is_array($whitelist) ? array_merge($allowed,$whitelist) : $allowed); // Merge and de-duplicate.

foreach ($allowed AS $host)
{
$host = strtolower($host);
if (substr($host,0,1) == '.' AND
(preg_match('#' . preg_quote($host, '#') . '$#siU', $ref_host) OR substr($host,1) == $ref_host))
{
$pass_ref_check = true;
break;
}
}
unset($allowed, $whitelist);
}

if ($pass_ref_check == false)
{
die('In order to accept POST requests originating from this domain, the admin must add the domain to the whitelist.');
}
}
}
}


خامساً : ملف ( version_vbulletin.php )

نستبدل محتواه بالتالي :

<?php
define('FILE_VERSION_VBULLETIN', '3.8.7 Patch Level 3');
?>


هذا ولله التوفيق لنا ولكم

descriptionالترقية للإصدار الأمني vBulletin 3.8.7 PL3 Emptyرد: الترقية للإصدار الأمني vBulletin 3.8.7 PL3

more_horiz
يعطيك الف عافيه
شكرااا لك ولجهودك الممتازة

descriptionالترقية للإصدار الأمني vBulletin 3.8.7 PL3 Emptyرد: الترقية للإصدار الأمني vBulletin 3.8.7 PL3

more_horiz
اهلا بك ياغالي

ولاشكر على واجب
privacy_tip صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى
power_settings_newقم بتسجيل الدخول للرد