Bunny-Star
03-20-2009, 12:04 AM
السلام عليكم ورحمة الله وبركاته
تم ترقيع ثغرة أخرى (xss) في النسخة 3.7.2 لها علاقة بالجافا..
طبعاً الثغرة تسمح للهكر بعد تسجيله كعضو للدخول إلى حساب الأعضاء الآخرين.
علماً أنه قد تم الإعلان بأن النسخة 3.7.3 ستنزل الثلاثاء القادم بتاريخ 26/8/2008
المصدر:
http://www.vbulletin.com/forum/showthread.php?t=282133
الترقيع :
1- للأعضاء المرخصين توجه إلى الرابط التالي وقم بتحميل الباتش:
http://members.vbulletin.com/patches.php
2- للأعضاء الغير مرخصين بإمكانك التعديل على الملفات المصابة:
ملاحظة: التعديلات الموجودة تتضمن التعديلات في باتش pl1 للنسخة 3.7.2 (http://www.traidnt.net/vb/showthread.php?t=898672)
أولاً: ملف adminlog.php الموجود داخل مجلد admincp
ابحث عن:
'userid' => TYPE_UINT,
'******' => TYPE_STR,
استبدله بـ:
'userid' => TYPE_UINT,
'******' => TYPE_NOHTML,
ابحث عن:
$cell[] = htmlspecialchars_uni($log['******']);
$cell[] = htmlspecialchars_uni($log['action']);
$cell[] = htmlspecialchars_uni($log['extrainfo']);
استبدله بـ:
$cell[] = $log['******'];
$cell[] = $log['action'];
$cell[] = $log['extrainfo'];
ابحث عن:
$filelist["$file[******]"] = $file['******'];
أعلاه أضف:
$file['******'] = htmlspecialchars_uni($file['******']);
انتهى ..
http://b7st.com/images/b7st4.gif
ثانياً: ملف adminfunctions.php الموجود داخل مجلد includes
ابحث عن:
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>";
أضف أسفله:
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>";
}
ابحث عن:
echo "<****** type=\"****/**********\">window.status = \"" . construct_phrase($vbphrase['logged_in_user_x_executed_y_queries'], $vbulletin->userinfo['username'], $vbulletin->db->querycount) . " \$_REQUEST[do] = '$_REQUEST[do]'\";</******>";
أضف أعلاه:
$_REQUEST['do'] = htmlspecialchars_uni($_REQUEST['do']);
ابحث عن:
echo "<table cellpadding=\"4\" cellspacing=\"0\" border=\"0\" align=\"center\" width=\"$width\" class=\"tborder\">\n";
}
أضف أسفله:
// ################################################## ###########################
/**
* 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; }
}
ابحث عن:
$****** = ****name($_SERVER['PHP_SELF']);
استبدله بـ:
$****** = !empty($_SERVER['******_NAME']) ? ****name($_SERVER['******_NAME']) : ****name($_SERVER['PHP_SELF']);
انتهى ..
http://b7st.com/images/b7st4.gif
ثالثاً: ملف functions.php الموجود داخل مجلد includes
ابحث عن:
return str_replace(array('\\', '\'', "\n", "\r"), array('\\\\', "\\'","\\n", "\\r"), $****);
استبدله بـ:
$replaced = str_replace(array('\\', '\'', "\n", "\r"), array('\\\\', "\\'","\\n", "\\r"), $****);
ابحث عن:
return str_replace(array('\\', '"', "\n", "\r"), array('\\\\', "\\\"","\\n", "\\r"), $****);
}
استبدله بـ:
$replaced = str_replace(array('\\', '"', "\n", "\r"), array('\\\\', "\\\"","\\n", "\\r"), $****);
}
$replaced = preg_replace('#(-(?=-))#', "-$quotetype + $quotetype", $replaced);
$replaced = preg_replace('#</******#i', "<\\/scr$quotetype + {$quotetype}ipt", $replaced);
return $replaced;
انتهى ..
http://b7st.com/images/b7st4.gif
رابعاً: ملف version_vbulletin.php الموجود داخل مجلد includes استبدل كامل محتويات الملف بـ:
<?php
define('FILE_VERSION_VBULLETIN', '3.7.2 Patch Level 2');
?>
انتهى ..
وبالتوفيق للجميع
تم ترقيع ثغرة أخرى (xss) في النسخة 3.7.2 لها علاقة بالجافا..
طبعاً الثغرة تسمح للهكر بعد تسجيله كعضو للدخول إلى حساب الأعضاء الآخرين.
علماً أنه قد تم الإعلان بأن النسخة 3.7.3 ستنزل الثلاثاء القادم بتاريخ 26/8/2008
المصدر:
http://www.vbulletin.com/forum/showthread.php?t=282133
الترقيع :
1- للأعضاء المرخصين توجه إلى الرابط التالي وقم بتحميل الباتش:
http://members.vbulletin.com/patches.php
2- للأعضاء الغير مرخصين بإمكانك التعديل على الملفات المصابة:
ملاحظة: التعديلات الموجودة تتضمن التعديلات في باتش pl1 للنسخة 3.7.2 (http://www.traidnt.net/vb/showthread.php?t=898672)
أولاً: ملف adminlog.php الموجود داخل مجلد admincp
ابحث عن:
'userid' => TYPE_UINT,
'******' => TYPE_STR,
استبدله بـ:
'userid' => TYPE_UINT,
'******' => TYPE_NOHTML,
ابحث عن:
$cell[] = htmlspecialchars_uni($log['******']);
$cell[] = htmlspecialchars_uni($log['action']);
$cell[] = htmlspecialchars_uni($log['extrainfo']);
استبدله بـ:
$cell[] = $log['******'];
$cell[] = $log['action'];
$cell[] = $log['extrainfo'];
ابحث عن:
$filelist["$file[******]"] = $file['******'];
أعلاه أضف:
$file['******'] = htmlspecialchars_uni($file['******']);
انتهى ..
http://b7st.com/images/b7st4.gif
ثانياً: ملف adminfunctions.php الموجود داخل مجلد includes
ابحث عن:
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>";
أضف أسفله:
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>";
}
ابحث عن:
echo "<****** type=\"****/**********\">window.status = \"" . construct_phrase($vbphrase['logged_in_user_x_executed_y_queries'], $vbulletin->userinfo['username'], $vbulletin->db->querycount) . " \$_REQUEST[do] = '$_REQUEST[do]'\";</******>";
أضف أعلاه:
$_REQUEST['do'] = htmlspecialchars_uni($_REQUEST['do']);
ابحث عن:
echo "<table cellpadding=\"4\" cellspacing=\"0\" border=\"0\" align=\"center\" width=\"$width\" class=\"tborder\">\n";
}
أضف أسفله:
// ################################################## ###########################
/**
* 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; }
}
ابحث عن:
$****** = ****name($_SERVER['PHP_SELF']);
استبدله بـ:
$****** = !empty($_SERVER['******_NAME']) ? ****name($_SERVER['******_NAME']) : ****name($_SERVER['PHP_SELF']);
انتهى ..
http://b7st.com/images/b7st4.gif
ثالثاً: ملف functions.php الموجود داخل مجلد includes
ابحث عن:
return str_replace(array('\\', '\'', "\n", "\r"), array('\\\\', "\\'","\\n", "\\r"), $****);
استبدله بـ:
$replaced = str_replace(array('\\', '\'', "\n", "\r"), array('\\\\', "\\'","\\n", "\\r"), $****);
ابحث عن:
return str_replace(array('\\', '"', "\n", "\r"), array('\\\\', "\\\"","\\n", "\\r"), $****);
}
استبدله بـ:
$replaced = str_replace(array('\\', '"', "\n", "\r"), array('\\\\', "\\\"","\\n", "\\r"), $****);
}
$replaced = preg_replace('#(-(?=-))#', "-$quotetype + $quotetype", $replaced);
$replaced = preg_replace('#</******#i', "<\\/scr$quotetype + {$quotetype}ipt", $replaced);
return $replaced;
انتهى ..
http://b7st.com/images/b7st4.gif
رابعاً: ملف version_vbulletin.php الموجود داخل مجلد includes استبدل كامل محتويات الملف بـ:
<?php
define('FILE_VERSION_VBULLETIN', '3.7.2 Patch Level 2');
?>
انتهى ..
وبالتوفيق للجميع