阿里提示ecshop漏洞解决方案
ECSHOP商城2.73后台SQL注入漏洞修复
一./admin/shopinfo.php
修复方法(大概在第53、71、105、123行,4个地方修复方式都一样)
admin_priv('shopinfo_manage'); 修改为
admin_priv('shopinfo_manage');
$_REQUEST['id'] = intval($_REQUEST['id']);
二.admin/shophelp.php
修复方法(大概在第81、105、133、155行,4个地方修复方式都一样)
admin_priv('shophelp_manage');
修改为
admin_priv('shophelp_manage'); $_POST['id'] = intval($_POST['id']);
三.\admin\edit_languages.php
漏洞产生原因 在admin\edit_languages.php文件中第120行,修改变量内容,注意是用的双引号。
for ($i = 0; $i < count($_POST['item_id']); $i++)
#....
$dst_items[$i] = $_POST['item_id'][$i] .' = '. '"' .$_POST['item_content'][$i]. '";';
修改为
$dst_items[$i] = $_POST['item_id'][$i] .' = '. '\'' .$_POST['item_content'][$i]. '\';';
四./admin/comment_manage.php
漏洞描述:ecshop的/admin/comment_manage.php中,对输入参数sort_by、sort_order未进行严格过滤,导致SQL注入。【注意:该补丁为云盾自研代码修复方案,云盾会根据您当前代码是否符合云盾自研的修复模式进行检测,如果您自行采取了底层/框架统一修复、或者使用了其他的修复方案,可能会导致您虽然已经修复了改漏洞,云盾依然报告存在漏洞,遇到该情况可选择忽略该漏洞提示】
/admin/comment_manage.php
/upload/admin/comment_manage.php
#$filter['sort_by'] = empty($_REQUEST['sort_by']) ? 'add_time' : trim($_REQUEST['sort_by']);
337 #$filter['sort_order'] = empty($_REQUEST['sort_order']) ? 'DESC' : trim($_REQUEST['sort_order']);
338 $sort = array('comment_id','comment_rank','add_time','id_value','status');
339 $filter['sort_by'] = in_array($_REQUEST['sort_by'], $sort) ? trim($_REQUEST['sort_by']) : 'add_time';
340 $filter['sort_order'] = empty($_REQUEST['sort_order']) ? 'DESC' : 'ASC';
五./includes/modules/payment/alipay.php
漏洞描述ECSHOP支付插件存在SQL注入漏洞,此漏洞存在于/includes/modules/payment/alipay.php文件中,该文件是ECshop的支付宝插件。由于ECShop使用了str_replace函数做字符串替换,黑客可绕过单引号限制构造SQL注入语句。只要开启支付宝支付插件就能利用该漏洞获取网站数据,且不需要注册登入。
临时解决方案:
1.关闭支付宝插件
2.修改/includes/modules/payment/alipay.php文件中
$order_sn = str_replace($_GET['subject'], '',$_GET['out_trade_no']);
$order_sn = trim($order_sn);
修改成如下代码
$order_sn = str_replace($_GET['subject'], '',$_GET['out_trade_no']);
$order_sn = trim(addslashes($order_sn));
ECShop官方补丁程序下载地址(推荐):
http://bbs.ecshop.com/viewthread.php?tid=1125380&extra=page=1&orderby=replies&filter=172800
六./api/client/includes/lib_api.php
function API_UserLogin($post)
{
$post['username'] = isset($post['UserId']) ? trim($post['UserId']) : '';
$post['password'] = isset($post['Password']) ? strtolower(trim($post['Password'])) : '';
...
改为:
function API_UserLogin($post)
{
if(get_magic_quotes_gpc()){
$post['UserId']=$post['UserId'];
}else{
$post['UserId']=addslashes($post['UserId']);
}
$post['username'] = isset($post['UserId']) ? trim($post['UserId']) : '';
$post['password'] = isset($post['Password']) ? strtolower(trim($post['Password'])) : '';
发表评论
要发表评论,您必须先登录。