metinfo 5.0.4 文件包含
源码分析
/metinfo_5.0.4/about/index.php
包含了 /metinfo_5.0.4/include/module.php
文件
并且动态包含了 $module
,而 $module
未在此页面定义,猜测其在包含的 module.php 文件中有相关定义
/metinfo_5.0.4/include/module.php
$module
在 module 中首次出现在判断执行的语句中,当变量 $fondule
不等于 7 时,对 $module
进行初始化操作。
在 index.php 中,$fmodule
的值被赋为 1,所以在包含调用 module.php 文件时,$fmodule
不等于 7 则会对 $module
进行初始化。
文件包含语句 require_once $module;
会调用默认代码直接显示页面内容
/metinfo_5.0.4/include/common.inc.php
查找改变 $fmodule
和 $module
的值,即如何对 $fmodule
和 $module
传参
发现 module.php 文件还包含了 common.inc.php 文件
接收传参代码位置
添加输出语句验证传参
echo $_key."=>".$_value."<br />";
漏洞复现
由源码分析可知,当传入参数 $fmodule
等于 7 时,不会对 $module
进行初始化,此时传入参数为变量 $module
进行赋值即可实现文件包含
POC:
/metinfo_5.0.4/about/index.php?fmodule=7&module=
执行 phpinfo 文件
读取 hosts 文件