文件路径:/phpcms/modules/content/down.php
漏洞描述:phpcms的/phpcms/modules/content/down.php文件中,对输入参数$_GET['a_k']未进行严格过滤,导致SQL注入的发生,黑客可利用该漏洞读取任意文件。
修复区域(1),所在位置约17行
$a_k = trim($_GET['a_k']); if (!isset($a_k)) { showmessage(L('illegal_parameters')); } $a_k = sys_auth($a_k, 'DECODE', pc_base::load_config('system', 'auth_key')); if (empty($a_k)) { showmessage(L('illegal_parameters')); } unset($i, $m, $f); parse_str($a_k); if (isset($i)) { $i = $id = intval($i); }
修改为:
$a_k = trim($_GET['a_k']); if (!isset($a_k)) { showmessage(L('illegal_parameters')); } $a_k = sys_auth($a_k, 'DECODE', pc_base::load_config('system', 'auth_key')); if (empty($a_k)) { showmessage(L('illegal_parameters')); } unset($i, $m, $f); parse_str($a_k); $a_k = safe_replace($a_k); //此处为修补代码,约第17行 if (isset($i)) { $i = $id = intval($i); }
修复区域(2),所在位置约89行
$a_k = trim($_GET['a_k']); $pc_auth_key = md5(pc_base::load_config('system', 'auth_key') . $_SERVER['HTTP_USER_AGENT'] . 'down'); $a_k = sys_auth($a_k, 'DECODE', $pc_auth_key); if (empty($a_k)) { showmessage(L('illegal_parameters')); } unset($i, $m, $f, $t, $ip); parse_str($a_k); if (isset($i)) { $downid = intval($i); }
修改为:
$a_k = trim($_GET['a_k']); $pc_auth_key = md5(pc_base::load_config('system', 'auth_key') . $_SERVER['HTTP_USER_AGENT'] . 'down'); $a_k = sys_auth($a_k, 'DECODE', $pc_auth_key); if (empty($a_k)) { showmessage(L('illegal_parameters')); } unset($i, $m, $f, $t, $ip); parse_str($a_k); $a_k = safe_replace($a_k); //此处为修补代码,约第89行 if (isset($i)) { $downid = intval($i); }
修复区域(3),所在位置约120行
//处理中文文件 if(preg_match("/^([\s\S]*?)([\x81-\xfe][\x40-\xfe])([\s\S]*?)/", $fileurl)) { $filename = str_replace(array("%5C", "%2F", "%3A"), array("\\", "/", ":"), urlencode($fileurl)); $filename = urldecode(basename($filename)); } $ext = fileext($filename); $filename = date('Ymd_his').random(3).'.'.$ext; file_down($fileurl, $filename);
修改为:
//处理中文文件 if(preg_match("/^([\s\S]*?)([\x81-\xfe][\x40-\xfe])([\s\S]*?)/", $fileurl)) { $filename = str_replace(array("%5C", "%2F", "%3A"), array("\\", "/", ":"), urlencode($fileurl)); $filename = urldecode(basename($filename)); } $ext = fileext($filename); $filename = date('Ymd_his').random(3).'.'.$ext; $fileurl = str_replace(array('<','>'), '',$fileurl); //此处为修补代码,约第120行 file_down($fileurl, $filename);
2019年03月11日 18:31 沙发
导致SQL注入的发生,黑客可利用该漏洞读取任意文件。