نوع phpnuke: phpnuke استاندارد
بلوک ها یا مازول های نصب شده: خیر
سطح دانش شما: حرفه ای
آدرس سایت شما: لوکال
نسخه PHP سرور: 8
نسخه MYSQL سرور: 5.5
چه کارها و مراحلی قبل از مشکل انجام داده اید؟
NULL
چه اقداماتی برای حل مشکل انجام داده اید؟
کدهارو اصلاح کردم
توضیحات و شرح مشکل
سلام مجدد،
در تابع check_requests
دو مورد مشاهده شد : خطوط 6204 الی 6246
الف- اگر متغیرهای ارسالی و دریافتی دارای مقداری از نوع آرایه باشند قطعا خطا خواهیم داشت،
ب- عبارات منظم باید بین دو / / یا # # یا @ @ قرار بگیرند لذا در قسمت _POST خطا وجود داره
اصلاح تابع به صورت زیر انجام شد :
لطفا کد اصلاحی بنده رو بررسی بفرمایید (صرفا با خواندن کد بازنویسی کردم)
کد: انتخاب همه
if ( !defined( 'ADMIN_FILE' ) ) {
// Die message for not allowed HTML tags
$htmltags = "<div class=\"text-center\"><img src=\"images/logo.gif\" title=\"logo\" alt=\"phpnuke\"><br><br><b>";
$htmltags .= "The html tags you attempted to use are not allowed</b><br><br>";
$htmltags .= "[ <a href=\"javascript:history.go(-1)\"><b>Go Back</b></a> ]</div>";
// Prevent any possible XSS attacks via $_GET.
if ( isset( $_GET ) ) {
foreach ($_GET as $sec_key => $secvalue){
if (!is_array($secvalue)) {
$secvalue = str_replace("\"", "", $secvalue);
if ( (@preg_match("#<[^>]*script*\"?[^>]*#i", $secvalue))
|| (@preg_match("#<[^>]*object*\"?[^>]*#i", $secvalue))
|| (@preg_match("#<[^>]*iframe*\"?[^>]*#i", $secvalue))
|| (@preg_match("#<[^>]*applet*\"?[^>]*#i", $secvalue))
|| (@preg_match("#<[^>]*meta*\"?[^>]*#i", $secvalue))
|| (@preg_match("#<[^>]*style*\"?[^>]*#i", $secvalue))
|| (@preg_match("#<[^>]*form*\"?[^>]*#i", $secvalue))
|| (@preg_match("#<[^>]*img*\"?[^>]*#i", $secvalue))
|| (@preg_match("#<[^>]*onmouseover *\"?[^>]*#i", $secvalue))
|| (@preg_match("#<[^>]*body *\"?[^>]*#i", $secvalue))
|| (@preg_match("#\([^>]*\"?[^)]*\)#i", $secvalue))
|| (@preg_match("#\"#i", $secvalue))
|| (@preg_match("#forum_admin#i", $sec_key))
|| (@preg_match("#inside_mod#i", $sec_key)))
{ exit ($htmltags); }
}
}
unset($secvalue);
}
if ( isset( $_POST ) ) {
foreach ($_POST as $secvalue){
if (!is_array($secvalue)) {
$secvalue = str_replace("\"", "", $secvalue);
if ( (@preg_match("#<[^>]*iframe*\"?[^>]*#i", $secvalue))
|| (@preg_match("#<[^>]*object*\"?[^>]*#i", $secvalue))
|| (@preg_match("#<[^>]*applet*\"?[^>]*#i", $secvalue))
|| (@preg_match("#<[^>]*meta*\"?[^>]*#i", $secvalue))
|| (@preg_match("#<[^>]*onmouseover*\"?[^>]*#i", $secvalue))
|| (@preg_match("#<[^>]script*\"?[^>]*#i", $secvalue))
|| (@preg_match("#<[^>]*body*\"?[^>]*#i", $secvalue))
|| (@preg_match("#<[^>]style*\"?[^>]*#i", $secvalue)))
{
exit ($htmltags);
}
}
}
unset($secvalue);
}
}