حالة الموضوع:
مغلق
  1. MAX PWORE

    MAX PWORE DeveloPer Plus

    الأنتساب:
    ‏16 سبتمبر 2011
    المشاركات:
    79
    الإعجابات المتلقاة:
    1
    نقاط الجائزة:
    8
    الإقامة:
    مصر

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


    البارحة تم صدور الترقيع الأمني 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 )

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


    كود PHP:
    if ($user['lastpost'] <= TIMENOW AND
                        !
    can_moderate($this->info['forum']['forumid'],    ''$user['userid'], $user['usergroupid'] .    (trim($user['membergroupids']) ? ",$user[membergroupids]'')))
                    {
    نستبدله بالتالي :

    كود PHP:
    if (!can_moderate($this->info['forum']['forumid'], '',    $user['userid'], $user['usergroupid'] . (trim($user['membergroupids']) ?    ",$user[membergroupids]'')))
                    {
    ثانيا : ملف ( class_floodcheck.php )

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

    كود PHP:
    // if we updated something, we're not flooding; otherwise, we have to wait
            
    $this->flood_wait = ($db->affected_rows() > :   ($this->read_value $floodmin_value));
    نستبدله بالتالي :

    كود PHP:
    // 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 )


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

    كود PHP:
    return 'standard_redirect("' $phrase '", ' intval($forceredirect) . ');';
    نستبدله بالتالي :

    كود PHP:
    return 'standard_redirect("' $phrase '", ' .  intval($forceredirect) . ', ' . ($bypasswhitelist 'true' 'false') .  ');';
    نبحث في داخله على :

    كود PHP:
    function print_standard_redirect($redir_phrase$doquery true$forceredirect false$languageid = -1)
    نستبدله بالتالي :

    كود PHP:
    function print_standard_redirect($redir_phrase$doquery true,  $forceredirect false$languageid = -1$bypasswhitelist false)
    رابعا : ملف ( init.php )

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


    كود 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'], -1PREG_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.');
                }
            }
        }
    }
    نستبدله بالتالي :

    كود PHP:
    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'], -1PREG_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:
    <?php
    define
    ('FILE_VERSION_VBULLETIN''3.8.7 Patch Level 3');
    ?>
    هذا ولله التوفيق لنا ولكم &:":
     
  2. Dr.MoAiD

    Dr.MoAiD Developer

    الأنتساب:
    ‏13 مايو 2012
    المشاركات:
    41
    الإعجابات المتلقاة:
    0
    نقاط الجائزة:
    6
    رد: الترقية للإصدار الأمني vBulletin 3.8.7 PL3


    بيض الله وجهك جاري العمل على الترقيع إذن :!."
     
  3. Dr.MOT

    Dr.MOT Support - Iq-Team

    الأنتساب:
    ‏2 سبتمبر 2011
    المشاركات:
    650
    الإعجابات المتلقاة:
    5,463
    نقاط الجائزة:
    93
    الجنس:
    ذكر
    الوظيفة:
    طالب
    الإقامة:
    IraQ
    رد: الترقية للإصدار الأمني vBulletin 3.8.7 PL3

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

     
  4. MVELS

    MVELS Developer

    الأنتساب:
    ‏10 يونيو 2012
    المشاركات:
    62
    الإعجابات المتلقاة:
    0
    نقاط الجائزة:
    6
    الإقامة:
    ليبيا
    رد: الترقية للإصدار الأمني vBulletin 3.8.7 PL3

    اللهـ يسلم هـ الآيآدي
    شرح رأئع و تنسيق جميل

    اتمنا لكـ التوفيق عزيزي
     
  5. Splinter

    Splinter Developer

    الأنتساب:
    ‏10 يونيو 2012
    المشاركات:
    15
    الإعجابات المتلقاة:
    0
    نقاط الجائزة:
    1
    الإقامة:
    تونس الحبيبية
    رد: الترقية للإصدار الأمني vBulletin 3.8.7 PL3


    يعطيك العافيه

    هل الترقيع يتم على نسخه الاخ ابو عمر او كل نسخ 3.8.7 ؟؟ او فقط نوع محدد
     
  6. HcJ

    HcJ V • I • P

    الأنتساب:
    ‏11 سبتمبر 2011
    المشاركات:
    104
    الإعجابات المتلقاة:
    1
    نقاط الجائزة:
    18
    الإقامة:
    ّّّ~ مصر ~
    رد: الترقية للإصدار الأمني vBulletin 3.8.7 PL3


    وعليكم السلام

    بارك الله فيك لى الترقيع

    &:":

    بعد آذن صاحب الموضوع

    الترقيع على جميع نسخ 3.8.7

    موفق
     
  7. HaCkInG

    HaCkInG ExpErt DeveloPer

    الأنتساب:
    ‏10 يونيو 2012
    المشاركات:
    51
    الإعجابات المتلقاة:
    0
    نقاط الجائزة:
    6
    رد: الترقية للإصدار الأمني vBulletin 3.8.7 PL3


    مشكور والله

    )5:"

     
  8. fantome195

    fantome195 Developer

    الأنتساب:
    ‏4 يونيو 2012
    المشاركات:
    89
    الإعجابات المتلقاة:
    0
    نقاط الجائزة:
    6
    الوظيفة:
    Student
    الإقامة:
    Morocco
    رد: الترقية للإصدار الأمني vBulletin 3.8.7 PL3


    تسلم على الايضاح

    )5:"
     
  9. X-1

    X-1 Developer

    الأنتساب:
    ‏10 يونيو 2012
    المشاركات:
    68
    الإعجابات المتلقاة:
    0
    نقاط الجائزة:
    6
    الإقامة:
    X
    رد: الترقية للإصدار الأمني vBulletin 3.8.7 PL3


    بطل الله يوفقك
     
  10. MAX PWORE

    MAX PWORE DeveloPer Plus

    الأنتساب:
    ‏16 سبتمبر 2011
    المشاركات:
    79
    الإعجابات المتلقاة:
    1
    نقاط الجائزة:
    8
    الإقامة:
    مصر
    رد: الترقية للإصدار الأمني vBulletin 3.8.7 PL3


    حياكم الله اخواني

    )5:"

     
حالة الموضوع:
مغلق

مشاركة هذه الصفحة