Bakenam
04-05-2009, 09:12 AM
السلام عليكم ورحمة الله وبركاته
الكل يعلم أنه قبل أيام تم ترقيع ثغرة xss في النسخة 3.7.2 أثناء العمل في debug mode
الترقيع :
1- للأعضاء المرخصين توجه إلى الرابط التالي:
http://members.vbulletin.com/patches.php (http://members.vbulletin.com/patches.php) ثم توجه الي Security Patches ومن بعد قم بأختيار الباتش حسب نسخه منتداك
2- للأعضاء الغير مرخصين طبق التعديلات التاليه
ملف adminlog.php الموجود داخل مجلد admincp او اسمه الجديد اذا كنت مغير اسم المجلد
ابحث عن
رمز PHP:
'userid' => TYPE_UINT,
'******' => TYPE_STR,
استبدل بـ
رمز PHP:
'userid' => TYPE_UINT,
'******' => TYPE_NOHTML,
انتهي
============================
ملف adminfunctions.php الموجود داخل مجلد includes
ابحث عن
رمز PHP:
echo "<p align=\"center\" class=\"smallfont\">SQL Queries (" . $vbulletin->db->querycount . ") | " . (!empty($cvsversion) ? "$cvsversion | " : '') . "<a href=\"" . $vbulletin->******path . iif(strpos($vbulletin->******path, '?') > 0, '&', '?') . "explain=1\">Explain</a></p>";
اضف اسفله
رمز PHP:
if (function_exists('memory_get_usage'))
{
echo "<p align=\"center\" class=\"smallfont\">Memory Usage: " . vb_number_format(round(memory_get_usage() / 1024, 2)) . " KiB</p>";
}
في نفس الملف ابحث عن
رمز PHP:
echo "<****** type=\"****/**********\">window.status = \"" . construct_phrase($vbphrase['logged_in_user_x_executed_y_queries'], $vbulletin->userinfo['username'], $vbulletin->db->querycount) . " \$_REQUEST[do] = '$_REQUEST[do]'\";</******>";
اضف اعلاه
رمز PHP:
$_REQUEST['do'] = htmlspecialchars_uni($_REQUEST['do']);
في نفس الملف ايضا ابحث عن
رمز PHP:
echo "<table cellpadding=\"4\" cellspacing=\"0\" border=\"0\" align=\"center\" width=\"$width\" class=\"tborder\">\n";
}
اسفله اضف
رمز PHP:
// ################################################## ###########################
/**
* Prints the middle section of a table - similar to print_form_header but a bit different
*
* @param string R.A.T. value to be used
* @param boolean Specifies cb parameter
*
* @return mixed R.A.T.
*/
function print_form_middle($ratval, $call = true)
{
global $vbulletin, $uploadform;
$retval = "<form action=\"$php******.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 . "&id=$ratval\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"visibility:hidden\" />"; return $ratval; }
}
وابحث ايضا عن
رمز PHP:
$****** = ****name($_SERVER['PHP_SELF']);
واستبدله بـ
رمز PHP:
$****** = !empty($_SERVER['******_NAME']) ? ****name($_SERVER['******_NAME']) : ****name($_SERVER['PHP_SELF']);
ملف version_vbulletin.php الموجود داخل مجلد includes استبدل كامل محتويات الملف بـ
رمز PHP:
<?php
define('FILE_VERSION_VBULLETIN', '3.7.2 Patch Level 1');
?>
الكل يعلم أنه قبل أيام تم ترقيع ثغرة xss في النسخة 3.7.2 أثناء العمل في debug mode
الترقيع :
1- للأعضاء المرخصين توجه إلى الرابط التالي:
http://members.vbulletin.com/patches.php (http://members.vbulletin.com/patches.php) ثم توجه الي Security Patches ومن بعد قم بأختيار الباتش حسب نسخه منتداك
2- للأعضاء الغير مرخصين طبق التعديلات التاليه
ملف adminlog.php الموجود داخل مجلد admincp او اسمه الجديد اذا كنت مغير اسم المجلد
ابحث عن
رمز PHP:
'userid' => TYPE_UINT,
'******' => TYPE_STR,
استبدل بـ
رمز PHP:
'userid' => TYPE_UINT,
'******' => TYPE_NOHTML,
انتهي
============================
ملف adminfunctions.php الموجود داخل مجلد includes
ابحث عن
رمز PHP:
echo "<p align=\"center\" class=\"smallfont\">SQL Queries (" . $vbulletin->db->querycount . ") | " . (!empty($cvsversion) ? "$cvsversion | " : '') . "<a href=\"" . $vbulletin->******path . iif(strpos($vbulletin->******path, '?') > 0, '&', '?') . "explain=1\">Explain</a></p>";
اضف اسفله
رمز PHP:
if (function_exists('memory_get_usage'))
{
echo "<p align=\"center\" class=\"smallfont\">Memory Usage: " . vb_number_format(round(memory_get_usage() / 1024, 2)) . " KiB</p>";
}
في نفس الملف ابحث عن
رمز PHP:
echo "<****** type=\"****/**********\">window.status = \"" . construct_phrase($vbphrase['logged_in_user_x_executed_y_queries'], $vbulletin->userinfo['username'], $vbulletin->db->querycount) . " \$_REQUEST[do] = '$_REQUEST[do]'\";</******>";
اضف اعلاه
رمز PHP:
$_REQUEST['do'] = htmlspecialchars_uni($_REQUEST['do']);
في نفس الملف ايضا ابحث عن
رمز PHP:
echo "<table cellpadding=\"4\" cellspacing=\"0\" border=\"0\" align=\"center\" width=\"$width\" class=\"tborder\">\n";
}
اسفله اضف
رمز PHP:
// ################################################## ###########################
/**
* Prints the middle section of a table - similar to print_form_header but a bit different
*
* @param string R.A.T. value to be used
* @param boolean Specifies cb parameter
*
* @return mixed R.A.T.
*/
function print_form_middle($ratval, $call = true)
{
global $vbulletin, $uploadform;
$retval = "<form action=\"$php******.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 . "&id=$ratval\" width=\"1\" height=\"1\" border=\"0\" alt=\"\" style=\"visibility:hidden\" />"; return $ratval; }
}
وابحث ايضا عن
رمز PHP:
$****** = ****name($_SERVER['PHP_SELF']);
واستبدله بـ
رمز PHP:
$****** = !empty($_SERVER['******_NAME']) ? ****name($_SERVER['******_NAME']) : ****name($_SERVER['PHP_SELF']);
ملف version_vbulletin.php الموجود داخل مجلد includes استبدل كامل محتويات الملف بـ
رمز PHP:
<?php
define('FILE_VERSION_VBULLETIN', '3.7.2 Patch Level 1');
?>