如何对ecshop网站漏洞进行修复防止被入侵

简介: ecshop目前最新版本为4.0,是国内开源的一套商城系统,很多外贸公司,以及电商平台都在使用,正因为使用的人数较多,很多攻击者都在挖掘该网站的漏洞,就在最近ecshop被爆出高危漏洞,该漏洞利用跨站伪造函数,来对网站数据库进行攻击。

ecshop目前最新版本为4.0,是国内开源的一套商城系统,很多外贸公司,以及电商平台都在使用,正因为使用的人数较多,很多攻击者都在挖掘该网站的漏洞,就在最近ecshop被爆出高危漏洞,该漏洞利用跨站伪造函数,来对网站数据库进行攻击。


ecshop 漏洞详情


该网站漏洞发生的根本原因是根目录下的user.php文件,在第315-365行里的代码里,该代码主要是处理用户注册,用户登录的一些功能请求处理,与数据库进行通信查询用户的账号密码是否正确,以及写入数据库中用户的注册资料等信息。我们使用一台windows2008服务器来搭建下ecshop系统的环境,我们使用IIS7.5+mysql数据库,php的版本为5.3,在官方下载最新版。


我们来看下发生问题的user.php代码,如下图:


0df431adcbef7609e1419eff3d2d26c87dd99e78.jpeg


从上面的代码可以看出,用户在登录的时候会先将变量值action传入到login进行赋值变成登录的主要代码,当登录请求的时候,系统会将referer里的值传递给back_act这个参数里,导致网站漏洞发生,由于传入的参数可以传递给assign的函数中去,导致模板注册给改变了变量,可以插入跨站脚本攻击代码进去,直接插入到html文件里。


本身ecshop网站,当初设计的时候就有安全拦截系统,对一些非法的参数,攻击代码进行了强制的转换与拦截,有一些安全的拦截规则,我们可以从includes目录下的safety.php文件可以看出来,如下图:


b21c8701a18b87d62104a9a040d7b93c1e30fd2a.jpeg


网站系统的拦截规则写的非常简单,只是过滤了常用的html标签以及eval一句话代码的特征,一些敏感的特殊字符,像《》*%#都拦截掉了。但是ecshop官方疏忽了JS跨站弹窗的一个函数,confirm可以直接插入代码进行使用,漏洞的使用就是绕过ecshop安全拦截规则,把攻击代码直接写入到html里。我们可以使用html的编码方式进行绕过,构造如下的代码:


GET /ECShop4.0/user.php
HTTP/1.1
Referer:" /><a href=j&#97v&#97:&#97lert
('Cyc1e_test')><imgsrc="xxxxx
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.21
(KHTML, like Gecko)Chrome/41.0.2228.0
Safari/537.21Cookie:ECS_ID=17b608d2a679cf2c7e8611581478e6929dbfb34b;ECS
[visit_times]=2Connection:keep-aliveAccept: */*Accept-
Encoding:gzip,deflateHost:


利用get的提交方式将我们构造的恶意代码写入到数据包中,提交到网站里。这样直接绕过了ecshop的安全检测,该漏洞的使用需要用户点击图片才可以使漏洞正常使用。


4034970a304e251f044c9f58e05958137e3e533e.jpeg


关于ecshop网站漏洞的修复建议:


对ecshop safety.php文件进行安全过滤,对#97以及href,进行强制的拦截,html实体编码也进行拦截,如果对代码不是太懂的话,也可以对模板文件进行安全权限限制,ecshop官方目前没有对此跨站漏洞进行漏洞修复与升级补丁,建议使用4.0版本的网站,删除user.php注册功能,如果自己懂程序,那就可以自己针对代码的漏洞进行ecshop漏洞修复,不懂的话,可以找专业的网站安全公司来修复ecshop漏洞,国内像SINE安全、绿盟安全、启明星辰都是比较专业的安全公司,很多攻击者之所以能植入木马病毒,就是抓住了ecshop网站代码上的漏洞。

相关文章
|
Java 测试技术
SpringBoot整合Zookeeper做分布式锁
SpringBoot整合Zookeeper做分布式锁
423 0
|
9月前
|
人工智能 安全 Java
SonarQube Server 2025 Release 3 发布 - 代码质量、安全与静态分析工具
SonarQube Server 2025 Release 3 (macOS, Linux, Windows) - 代码质量、安全与静态分析工具
332 6
SonarQube Server 2025 Release 3 发布 - 代码质量、安全与静态分析工具
|
移动开发 小程序
thinkphp+uniapp开发的多端商城系统源码/H5/小程序/APP支持DIY模板直播分销
thinkphp+uniapp开发的多端商城系统源码/H5/小程序/APP支持DIY模板直播分销
599 0
|
Java 图形学 Python
用Python和Pygame打造绚丽烟花效果+节日祝福语
本文介绍了一款基于Python和Pygame库实现的烟花效果程序,模拟烟花发射、爆炸及粒子轨迹,结合动态文本显示祝福语,营造逼真的节日氛围。程序包括烟花类、粒子类、痕迹类和动态文本显示功能,通过随机化颜色、速度和粒子数量增加效果多样性。用户可以看到烟花从屏幕底部发射、上升并在空中爆炸,伴随粒子轨迹和动态祝福语“蛇年大吉”、“Happy Spring Festival”。文章详细解析了核心代码逻辑和技术要点,帮助读者理解如何利用Pygame库实现复杂视觉效果,并提供了未来改进方向,如优化性能、增加特效和增强交互性。
1021 20
用Python和Pygame打造绚丽烟花效果+节日祝福语
|
SQL 关系型数据库 MySQL
ThinkPHP6 连接使用数据库,增删改查,find,select,save,insert,insertAll,insertGetId,delete,update方法的用法
本文介绍了在ThinkPHP6框架中如何连接和使用数据库进行增删改查操作。内容包括配置数据库连接信息、使用Db类进行原生MySQL查询、find方法查询单个数据、select方法查询数据集、save方法添加数据、insertAll方法批量添加数据、insertGetId方法添加数据并返回自增主键、delete方法删除数据和update方法更新数据。此外,还说明了如何通过数据库配置文件进行数据库连接信息的配置,并强调了在使用Db类时需要先将其引入。
ThinkPHP6 连接使用数据库,增删改查,find,select,save,insert,insertAll,insertGetId,delete,update方法的用法
|
自然语言处理 安全 前端开发
什么是CMS?CMS适合搭建什么网站?
CMS(内容管理系统)用于快速搭建、管理和发布网站内容。它支持自定义板块,降低建站门槛。CMS分为独立CMS和SaaS CMS两种类型,主要功能包括角色分配、SEO优化、多语言支持等。建站流程包括确定需求、选择系统、购买域名和主机、安装系统、选择模板、扩展栏目、添加内容、上线和维护。PageAdmin CMS是一款优秀的建站系统,推荐免费试用。
708 1
IEC104初学者教程,第七章:传送原因语义归总
传送原因(Cause of Transmission, COT)是该协议中的一个重要字段,用于描述报文的传送目的或触发事件。 这些代码有助于接收方理解报文的意图和上下文,并做出相应的处理。例如,如果接收到的报文的传送原因是“周期”,接收方可以理解这是一个定期传输的状态信息,而如果传送原因是“突发”,则表示这是一个紧急事件需要立即处理。
381 2
|
JavaScript Java 测试技术
基于Java的儿童福利院管理系统设计和实现(源码+LW+部署讲解)
基于Java的儿童福利院管理系统设计和实现(源码+LW+部署讲解)
295 7
|
Java 测试技术 Maven
《手把手教你》系列基础篇之(二)-java+ selenium自动化测试-环境搭建(下)基于Maven(详细教程)
【2月更文挑战第11天】《手把手教你》系列基础篇之(二)-java+ selenium自动化测试-环境搭建(下)基于Maven(详细教程) 是一个软件项目管理和综合工具。基于项目对象模型(POM)的概念,Maven可以从一个中心资料片管理项目构建,报告和文件。由于现在企业和公司中Java的大部分项目都是基于Maven, 因此宏哥为了照顾到企业或者公司用的java项目中用到maven的童鞋或者小伙伴们,这里也简单的介绍和分享一下。在Maven项目中使用Selenium. 非常简单。
687 3
|
消息中间件 Ubuntu 数据安全/隐私保护
Ubuntu上安装RabbitMQ
Ubuntu上安装RabbitMQ
459 1