ECShop是上海商派网络科技有限公司(ShopEx)旗下——B2C独立网店系统,适合企业及个人快速构建个性化网上商店,
ecshop 0day 一枚
。系统是基于PHP语言及MYSQL数据库构架开发的跨平台开源程序。支持多种类型商品销售,实物商品销售及虚拟商品(如电话卡,游戏点卡等)可在同一个网店中进行管理。
提供了灵活强大的模板机制,内置多套免费精美模板,同时可在后台任意更换,让您即刻快速建立不同的网店外观。同时您可以对网店模板自定义设计,建立个性化网店形象。
0x0后台getshell在 includes/cls_template.php fetch函数
/**
* 处理模板文件
*
* @access public
* @param string $filename
* @param sting $cache_id
*
* @return sring
*/
function fetch($filename, $cache_id = '')
{
if (!$this->_seterror)
{
error_reporting(E_ALL ^ E_NOTICE);
}
$this->_seterror++;
//若$filename以str:开头则执行下面的语句
if (strncmp($filename,'str:', 4) == 0)
{
$out = $this->_eval($this->fetch_str(substr($filename, 4)));
}
... ... ... ...
可以看到如果$filename以"str:"开头那么就调用_eval()函数执行"str:"后面的代码,不过在执行之前系统调用fetch_str函数进行字符查找和替换。
_eval():
function _eval($content)
{
ob_start();
eval('?' . '>' . trim($content));
$content = ob_get_contents();
ob_end_clean();
return $content;
}
调用eval()就执行$content了,看fetch_str()
/**
* 处理字符串函数
*
* @access public
* @param string $source
*
* @return string
*/
function fetch_str($source)
{
if (!defined('ECS_ADMIN'))
{
$source = $this->smarty_prefilter_preCompile($source);
}
$source = preg_replace("/<\?[^><]+\?>|<\%[^><]+\%>|