ترقيع ثغرة vb 3.8.7

الموضوع في 'قسم تطوير المواقع والمنتديات والسيرفرات' بواسطة mahmodemos, بتاريخ ‏2 ابريل 2013.

  1. mahmodemos

    mahmodemos <font color="#FF0000"><b>V.I.B</b></font>

    x
    بسم الله الرحمن الرحيم

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

    الشرح الثاني لترقيع الثغرات "بعدها سنبدأ بثغرات النسخة 3.8.4 "

    الشرح كتابي لانه فيه اكواد كثيرة والترقيع سهل "ربما تكون الثغرة مرقعة عندك "

    النسخ السابقة لا توجد بها هذه الثغرة ^^

    بسم الله نبدأ

    افتح class_core.php الموجود داخل مجلد includes

    ابحث فيه عن :

    كود PHP:
    // #############################################################################
    /**
    * Removes the full path from being disclosed on any errors
    *
    * @param    integer    Error number
    * @param    string    PHP error text string
    * @param    strig    File that contained the error
    * @param    integer    Line in the file that contained the error
    */
    function vb_error_handler($errno$errstr$errfile$errline)
    {
        global 
    $vbulletin;

        switch (
    $errno)
        {
            case 
    E_WARNING:
            case 
    E_USER_WARNING:
                
    /* Don't log warnings due to to the false bug reports about valid warnings that we suppress, but still appear in the log
                require_once(DIR . '/includes/functions_log_error.php');
                $message = "Warning: $errstr in $errfile on line $errline";
                log_vbulletin_error($message, 'php');
                */

                
    if (!error_reporting() OR !ini_get('display_errors'))
                {
                    return;
                }
                
    $errfile str_replace(DIR'[path]'$errfile);
                
    $errstr str_replace(DIR'[path]'$errstr);
                echo 
    "<br /><strong>Warning</strong>: $errstr in <strong>$errfile</strong> on line <strong>$errline</strong><br />";
            break;

            case 
    E_USER_ERROR:
                require_once(
    DIR '/includes/functions_log_error.php');
                
    $message "Fatal error: $errstr in $errfile on line $errline";
                
    log_vbulletin_error($message'php');

                if (!
    headers_sent())
                {
                    if (
    SAPI_NAME == 'cgi' OR SAPI_NAME == 'cgi-fcgi')
                    {
                        
    header('Status: 500 Internal Server Error');
                    }
                    else
                    {
                        
    header('HTTP/1.1 500 Internal Server Error');
                    }
                }

                if (
    error_reporting() OR ini_get('display_errors'))
                {
                    
    $errfile str_replace(DIR'[path]'$errfile);
                    
    $errstr str_replace(DIR'[path]'$errstr);
                    echo 
    "<br /><strong>Fatal error:</strong> $errstr in <strong>$errfile</strong> on line <strong>$errline</strong><br />";
                    if (
    function_exists('debug_print_backtrace') AND ($vbulletin->userinfo['usergroupid'] == OR ($vbulletin->userinfo['permissions']['adminpermissions'] & $vbulletin->bf_ugp_adminpermissions)))
                    {
                        
    // This is needed so IE doesn't show the pretty error messages
                        
    echo str_repeat(' '512);
                        
    debug_print_backtrace();
                    }
                }
                exit;
            break;
        }
    استبدله بـ :

    كود PHP:
    // #############################################################################
    /**
    * Unicode-safe version of htmlspecialchars()
    *
    * @param    string    Text to be made html-safe
    *
    * @return    string
    */
    function htmlspecialchars_uni($text$entities true)
    {
        return 
    str_replace(
            
    // replace special html characters
            
    array('<''>''"'),


            array(
    '&lt;''&gt;''&quot;'),
            
    preg_replace(
                
    // translates all non-unicode entities
                
    '/&(?!' . ($entities '#[0-9]+|shy' '(#[0-9]+|[a-z]+)') . ';)/si',
                
    '&amp;',
                
    $text
            
    )
        );

    الان افتح functions.php الموجود ايضا دخل مجلد includes

    ابحث عن :

    كود PHP:
        $pagetitle $title;
        
    $errormessage $message;

        
    $url unhtmlspecialchars($vbulletin->url);
        
    $url str_replace(chr(0), ''$url);
        
    $url create_full_url($url);
        
    $url str_replace($str_find$str_replace$url);
        
    $js_url addslashes_js($url'"'); // " has been replaced by &quot;

        
    $url preg_replace(
            array(
    '/&#0*59;?/''/&#x0*3B;?/i''#;#'),
            
    '%3B',
            
    $url
        
    );
        
    $url preg_replace('#&amp%3B#i''&amp;'$url);

        
    define('NOPMPOPUP'1); // No footer here

        
    require_once(DIR '/includes/functions_misc.php');
        
    $postvars construct_hidden_var_fields(verify_client_string($vbulletin->GPC['postvars']));
        
    $formfile =& $url;

        (
    $hook vBulletinHook::fetch_hook('redirect_generic')) ? eval($hook) : false;

        eval(
    'print_output("' fetch_template('STANDARD_REDIRECT') . '");');
        exit;
    استبدله بـ :

    كود PHP:
        if ($vbulletin->url)
        {
            
    $foundurl false;
            if (
    $urlinfo = @parse_url($vbulletin->url))
            {
                if (!
    $urlinfo['scheme'])
                {    
    // url is made full in exec_header_redirect which stops a url from being redirected to, say "www.php.net" (no http://)
                    
    $foundurl true;
                }
                else
                {
                    
    $whitelist = array();
                    if (
    $vbulletin->options['redirect_whitelist'])
                    {
                        
    $whitelist explode("\n"trim($vbulletin->options['redirect_whitelist']));
                    }
                    
    // Add $bburl to the whitelist
                    
    $bburlinfo = @parse_url($vbulletin->options['bburl']);
                    
    $bburl "{$bburlinfo['scheme']}://{$bburlinfo['host']}";
                    
    array_unshift($whitelist$bburl);

                    
    // if the "realurl" of this request does not equal $bburl, add it as well..
                    
    $realurl VB_URL_SCHEME '://' VB_URL_HOST;
                    if (
    strtolower($bburl) != strtolower($realurl))
                    {
                        
    array_unshift($whitelist$realurl);
                    }

                    
    $vburl strtolower($vbulletin->url);
                    foreach (
    $whitelist AS $url)
                    {
                        
    $url trim($url);
                        if (
    $vburl == strtolower($url) OR strpos($vburlstrtolower($url) . '/'0) === 0)
                        {
                            
    $foundurl true;
                            break;
                        }
                    }
                }
            }
            
            if (!
    $foundurl)
            {
                eval(
    standard_error(fetch_error('invalid_redirect_url_x'$vbulletin->url)));
            }
        }

        if (
    $vbulletin->options['useheaderredirect'] AND !$forceredirect AND !headers_sent() AND !$vbulletin->GPC['postvars'])
        {
            
    exec_header_redirect($vbulletin->url);
        }

        
    $title $vbulletin->options['bbtitle'];

        
    $pagetitle $title;
        
    $errormessage $message;

        
    $url unhtmlspecialchars($vbulletin->url);
        
    $url str_replace(chr(0), ''$url);
        
    $url create_full_url($url);
        
    $url str_replace($str_find$str_replace$url);
        
    $js_url addslashes_js($url'"'); // " has been replaced by &quot;

        
    $url preg_replace(
            array(
    '/&#0*59;?/''/&#x0*3B;?/i''#;#'),
            
    '%3B',
            
    $url
        
    );
        
    $url preg_replace('#&amp%3B#i''&amp;'$url);

        
    define('NOPMPOPUP'1); // No footer here

        
    require_once(DIR '/includes/functions_misc.php');
        
    $postvars construct_hidden_var_fields(verify_client_string($vbulletin->GPC['postvars']));
        
    $formfile =& $url;

        (
    $hook vBulletinHook::fetch_hook('redirect_generic')) ? eval($hook) : false;

        eval(
    'print_output("' fetch_template('STANDARD_REDIRECT') . '");');
        exit;

    تم الترقيع وكل سنة وانتا سالم :SnipeR (29):

     
  2. الدكتورة هدى

    الدكتورة هدى .:: إدارية الأقـسـام العامـة ::.

    رد: ترقيع ثغرة vb 3.8.7

    بارك الله فيك
    الله يكفينا شر الهكر
    شكرا لك :)
     
  3. mahmodemos

    mahmodemos <font color="#FF0000"><b>V.I.B</b></font>

    رد: ترقيع ثغرة vb 3.8.7

    مـنـور المووضووع
     
  4. MisterMDE999

    MisterMDE999 [سبحآن آلله وبحمَده]

    رد: ترقيع ثغرة vb 3.8.7

    يعطيك العافية.. ي مبدع.
    بارك الله فيك,
    "الله يكفينا شرح الهكر"
    :rolleyes:
     
  5. mahmodemos

    mahmodemos <font color="#FF0000"><b>V.I.B</b></font>

    رد: ترقيع ثغرة vb 3.8.7

    الله يعافيك

    منور الموضوع
     
الوسوم:

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