Pivot是一款基于WEB的帮助用户维护动态站点的工具。 Pivot的search.php文件没有正确过滤对t参数输入的便返回用于显示文件: ... // Set the template for the tags page if (!isset($Pivot_Vars['t']) || empty($Pivot_Vars['t'])) { if (isset($Weblogs[$Current_weblog]['extra_template']) && ($Weblogs[$Current_weblog]['extra_template']!="") ) { $template = $Weblogs[$Current_weblog]['extra_template']; } else { $template = $Weblogs[$Current_weblog]['archive_template']; } } else { $template = $Pivot_Vars['t']; } $template_html = load_template($template); ... 't' argument is passed to load_template() function without checks see load_template() function in /modules/module_parser.php - lines 778-797 ... function load_template($basename) { global $template_cache, $Paths; $filename = $Paths['templates_path'].$basename; if (isset($template_cache[$basename])) { return $template_cache[$basename]; } else { if (!(file_exists($filename))) { $filename = $Paths['templates_path']."entrypage_template.html"; } $filetext=implode("", file($filename)); //...
Pivot是一款基于WEB的帮助用户维护动态站点的工具。 Pivot的search.php文件没有正确过滤对t参数输入的便返回用于显示文件: ... // Set the template for the tags page if (!isset($Pivot_Vars['t']) || empty($Pivot_Vars['t'])) { if (isset($Weblogs[$Current_weblog]['extra_template']) && ($Weblogs[$Current_weblog]['extra_template']!="") ) { $template = $Weblogs[$Current_weblog]['extra_template']; } else { $template = $Weblogs[$Current_weblog]['archive_template']; } } else { $template = $Pivot_Vars['t']; } $template_html = load_template($template); ... 't' argument is passed to load_template() function without checks see load_template() function in /modules/module_parser.php - lines 778-797 ... function load_template($basename) { global $template_cache, $Paths; $filename = $Paths['templates_path'].$basename; if (isset($template_cache[$basename])) { return $template_cache[$basename]; } else { if (!(file_exists($filename))) { $filename = $Paths['templates_path']."entrypage_template.html"; } $filetext=implode("", file($filename)); // <----------------------------|_ lol !!! $template_cache[$basename]=$filetext; return $filetext; } } ... 参数传送给了file()函数,因此无论php设置如何,都可以通过目录遍历攻击在屏幕看到php文件,包括包含有管理员凭据的配置文件pv_cfg_settings.php。