多变php服务中心

当前位置: 首页>站长学院>程序安全> ecshop漏洞再次发8大枚修复方案

ecshop漏洞再次发8大枚修复方案

来源:Ripon 发布时间:2018-09-12关注度:881 ℃
早在4月份,现在看到的最晚的洞也拿到手上了,给自己开发的平台都已做过修复,阿里云为了推广WAF真是无下限啊,大面积爆出了部分洞口,现在Ripon把部分修复方案贡献出来,大家抓紧补上吧,如需协助,可联系付费服务。QQ:254191676

早在4月份,现在看到的最晚的洞也拿到手上了,给自己开发的平台都已做过修复,阿里云为了推广WAF真是无下限啊,大面积爆出了部分洞口,现在Ripon把部分修复方案贡献出来,大家抓紧补上吧,如需协助,可联系付费服务。QQ:254191676


1、ecshop的/includes/lib_insert.php文件中,对输入参数未进行正确类型转义,导致整型注入的发生。

修复方法:给insert_ads函数内加入下面代码

$arr['num'] = intval($arr['num']);

$arr['id'] = intval($arr['id']);

$arr['type'] = addslashes($arr['type']);


2、ECShop存在一个盲注漏洞,问题存在于/api/client/api.php文件中,提交特制的恶意POST请求可进行SQL注入攻击,可获得敏感信息或操作数据库。

修复方法:给API_UserLogin函数加入下面代码

if (get_magic_quotes_gpc())

		{
		    $post['UserId'] = $post['UserId']
        }
		else
		{     
            $post['UserId'] = addslashes($post['UserId']);
		}
3、ecshop的后台编辑文件/admin/article.php等中,对输入参数$_POST[‘id’]未进行正确类型转义,导致整型注入的发生。

修复方法:分别给其中的if ($_REQUEST['act'] == 'update')部分加入下面代码

$_POST['id'] = intval($_POST['id']); 


4、ecshop没有对会员注册处/admin/integrate.php的username过滤,保存重的用户信息时,可以直接写入shell。

修复方法:将$code = empty($_GET['code']) ? '' : trim($_GET['code']);替换为下面代码

$code = empty($_GET['code']) ? '' : trim(addslashes($_GET['code']));


5. ecshop文件/admin/affiliate_ck.php中,对输入参数auid未进行正确类型转义,导致整型注入的发生。

修复方法给其公共部分加入下面代码

$_GET['auid'] = intval($_GET['auid']);


6、ecshop的/admin/comment_manage.php中,对输入参数sort_by、sort_order未进行严格过滤,导致SQL注入。

修复方法:将其get_comment_list函数内的$filter['sort_by']、$filter['sort_order']修改为下面代码

$filter['sort_by'] = empty($_REQUEST['sort_by']) ? 'add_time' : trim(htmlspecialchars($_REQUEST['sort_by']));

$filter['sort_order'] = empty($_REQUEST['sort_order']) ? 'DESC' : trim(htmlspecialchars($_REQUEST['sort_order']));


7、ECSHOP支付插件存在SQL注入漏洞,此漏洞存在于/includes/modules/payment/alipay.php文件中,该文件是ECshop的支付宝插件。由于ECShop使用了str_replace函数做字符串替换,黑客可绕过单引号限制构造SQL注入语句。只要开启支付宝支付插件就能利用该漏洞获取网站数据,且不需要注册登入。

修复方法:将$order_sn = trim($order_sn);替换为下面代码

$order_sn = trim(addslashes($order_sn));


8、漏洞成因在于user.php文件会直接带入SQL语句操作数据库的用户可控变量。由于ECShopGBK版本采用GBK编码(宽字符编码),攻击者可通过传入半个字符的方式绕过对单引号的转义,故导致SQL注入漏洞。

修复方法:给$username = json_str_iconv($username);下方加入下面代码

$username = str_replace('/', '', stripslashes($username));


本文地址:https://www.phpicu.com/article.php?id=44

    责任编辑:多变php服务中心

    相关阅读