Vivvo CMS是一款国外的商业内容管理系统,基于Ajax后台管理。 Vivvo CMS的files.php页面没有正确地过滤用户在POST或GET请求中所提交的file参数,远程攻击者可以通过向服务器提交恶意参数请求执行目录遍历攻击,读取任意系统文件。以下是有漏洞代码段: -----------------------------[source code start]------------------------------- if (isset($_REQUEST["file"])) { $filename = str_replace('..', '', $_REQUEST["file"]); $filename = str_replace('logs/', '', $filename); $file = VIVVO_FS_ROOT . 'files/' . $filename; if (file_exists($file) & & !is_link($file) & & !is_dir($file)){ $file_split = explode('.', $file); $ext = end ($file_split); ... header("Content-type: application/force-download"); header("Content-disposition: attachment; filename=\"".basename($file)."\""); } readfile($file); -----------------------------[source code end]---------------------------------
Vivvo CMS是一款国外的商业内容管理系统,基于Ajax后台管理。 Vivvo CMS的files.php页面没有正确地过滤用户在POST或GET请求中所提交的file参数,远程攻击者可以通过向服务器提交恶意参数请求执行目录遍历攻击,读取任意系统文件。以下是有漏洞代码段: -----------------------------[source code start]------------------------------- if (isset($_REQUEST["file"])) { $filename = str_replace('..', '', $_REQUEST["file"]); $filename = str_replace('logs/', '', $filename); $file = VIVVO_FS_ROOT . 'files/' . $filename; if (file_exists($file) & & !is_link($file) & & !is_dir($file)){ $file_split = explode('.', $file); $ext = end ($file_split); ... header("Content-type: application/force-download"); header("Content-disposition: attachment; filename=\"".basename($file)."\""); } readfile($file); -----------------------------[source code end]---------------------------------