### 简要描述: 过虑不严导致存存本地文件包含漏洞,在GPC没打开时、上传头像包含即可拿shell ### 详细说明: 最近看到乌云上暴了一个ecmall全版文件包函漏洞、其实自己早在去年做ecmall二次开发的时候也发现了一个本地文件包函漏洞和xss、不知道和乌云上的哪个是不是一样。 出现的地方比较杯具,是一个核心文件里面、在eccore/ecmall.php文件里。大概78行左右吧。 ``` //只判断是app是否设置,然后去掉了两端空格 $app = isset($_REQUEST['app']) ? trim($_REQUEST['app']) : $default_app; $act = isset($_REQUEST['act']) ? trim($_REQUEST['act']) : $default_act; //很明显可以看出$app是我们可以控制的、由于后面连接了.app.php所以利用的时候要截断。 $app_file = $config['app_root'] . "/{$app}.app.php"; //应为是本地包函、所以is_file是为真的 if (!is_file($app_file)) { exit('Missing controller'); } //这里直接就包函了,这么底级的漏洞、我都不好说什么了. require($app_file); ``` ### 漏洞证明:
### 简要描述: 过虑不严导致存存本地文件包含漏洞,在GPC没打开时、上传头像包含即可拿shell ### 详细说明: 最近看到乌云上暴了一个ecmall全版文件包函漏洞、其实自己早在去年做ecmall二次开发的时候也发现了一个本地文件包函漏洞和xss、不知道和乌云上的哪个是不是一样。 出现的地方比较杯具,是一个核心文件里面、在eccore/ecmall.php文件里。大概78行左右吧。 ``` //只判断是app是否设置,然后去掉了两端空格 $app = isset($_REQUEST['app']) ? trim($_REQUEST['app']) : $default_app; $act = isset($_REQUEST['act']) ? trim($_REQUEST['act']) : $default_act; //很明显可以看出$app是我们可以控制的、由于后面连接了.app.php所以利用的时候要截断。 $app_file = $config['app_root'] . "/{$app}.app.php"; //应为是本地包函、所以is_file是为真的 if (!is_file($app_file)) { exit('Missing controller'); } //这里直接就包函了,这么底级的漏洞、我都不好说什么了. require($app_file); ``` ### 漏洞证明: