Ecshop密码找回功能漏洞与修复详解
2016-09-07 22:02 来源:www.chinab4c.com 作者:ecshop专家
Ecshop提供了密码找回功能,但是整个密码找回流程中存在一些设计上的安全隐患 1. Ecshop程序使用了MD5不可逆加密算法,但是计算密文的生成元素都有可以很轻易地被黑客拿到 /* if (md5($adminid . $password) <> $code) 1. $adminid: 黑客显式指定 2. $password: 暴力枚举 */ 2. 对重复失败次数没有做限制 1. 漏洞触发条件HTTP Package Repeater 2 漏洞影响范围 1. ecshop 2.7.2 2. ecshop 2.7.3 3. ... 3. 漏洞代码分析 admin/get_password.php ... /* 验证新密码,更新管理员密码 */ elseif (!empty($_POST['action']) && $_POST['action'] == 'reset_pwd') { $new_password = isset($_POST['password']) ? trim($_POST['password']) : ''; $adminid = isset($_POST['adminid']) ? intval($_POST['adminid']) : 0; $code = isset($_POST['code']) ? trim($_POST['code']) : ''; if (empty($new_password) || empty($code) || $adminid == 0) { ecs_header("Location: privilege.php?act=login\\n"); exit; } /* 以用户的原密码,与code的值匹配 */ $sql = 'SELECT password FROM ' .$ecs->table('admin_user'). " WHERE user_id = '$adminid'"; $password = $db->getOne($sql); /* 这里是漏洞的关键 1. $adminid:黑客想要爆破攻击重置密码的对象 2. $password:黑客通过密码暴力枚举 3. $code:黑客可以在本地使用相同的算法进行计算得到 */ if (md5($adminid . $password) <> $code)//www.zuimoban.com { //此链接不合法 $link[0]['text'] = $_LANG['back']; $link[0]['href'] = 'privilege.php?act=login'; sys_msg($_LANG['code_param_error'], 0, $link); } .... 4. 防御方法 这个漏洞属于密码学的抗穷举设计缺陷,要对这个漏洞进行修复,同时要能保证对原有的业务进行平滑兼容,我们可以从以下几个方面去思考 1. 增加密钥空间,提供攻击者的攻击成本:容易实现 2. 改变加密算法,间接地提高了密钥空间:需要对原有旧的密码进行全量地升级,改造成本大 admin/get_password.php /* 以用户的原密码,与code的值匹配 */ $sql = 'SELECT password FROM ' .$ecs->table('admin_user'). " WHERE user_id = '$adminid'"; $password = $db->getOne($sql); if (md5($adminid . $password) <> $code) { //此链接不合法 $link[0]['text'] = $_LANG['back']; $link[0]['href'] = 'privilege.php?act=login'; sys_msg($_LANG['code_param_error'], 0, $link); } //更新管理员的密码 /* 这里是pathc code的关键 代码中增加了随机数的盐,这极大地增加了黑客爆破的密钥空间,提供了攻击成本 */ $ec_salt=rand(1,9999); $sql = "UPDATE " .$ecs->table('admin_user'). "SET password = '".md5(md5($new_password).$ec_salt)."',`ec_salt`='$ec_salt' ". "WHERE user_id = '$adminid'";(责任编辑:chinab4c) |
最近更新
常用插件
- ecshop2.7.1邮件发送插件
ecshop2.7.1邮件发送插件:该插件主要的开发思想是源于ecshop短信发送系统...
- ecshop二次开发商品购买增
图片1香...
- ecshop最小购买数量控制插
ecshop最小购买数量控制插件,这个插件主要是为我们提供一个十分方便...
- ecshop没登陆情况下订单查
ecshop没登陆情况下订单查询插件,主要是针对ecshop在没有登陆的情况下...
- ecshop2.7.2生成虚拟订单2.
以前我们开发过ecshop下的虚拟订单,就是客户在访问的时候,会自动生...
ecshop热门问答
ecshop热门资料
ecshop最新动态
ecshop重叠
ecshop留空
ecshop工作者
ecshop登录状态
ecshop支付宝支付
ecshop手机支付
ecshop一级地区
ecshop无法提交订单
ecshop快递公司
ecshop匿名订单
ecshopclothing_GBK
ecshop促销管理
ecshop联系我们
ecshop模拟
ecshopECMALL一键登陆
ecshopinsert
ecshop商铺
ecshoptxt
ecshop想学
ecshop西联
ecshop运行
ecshop商品品牌显示
ecshop域名空间
ecshop版本
ecshop人意
ecshop录入
ecshop调换
ecshop等待处理
ecshop英文名