目录

. 漏洞描述
. 漏洞触发条件
. 漏洞影响范围
. 漏洞代码分析
. 防御方法
. 攻防思考

1. 漏洞描述

Ecshop提供了密码找回功能,但是整个密码找回流程中存在一些设计上的安全隐患

. Ecshop程序使用了MD5不可逆加密算法,但是计算密文的生成元素都有可以很轻易地被黑客拿到
/*
if (md5($adminid . $password) <> $code)
1. $adminid: 黑客显式指定
2. $password: 暴力枚举
*/ . 对重复失败次数没有做限制

Relevant Link:

http://www.wooyun.org/bugs/wooyun-2010-024689

2. 漏洞触发条件

HTTP Package Repeater

3. 漏洞影响范围

. ecshop 2.7.
. ecshop 2.7.
. ...

4. 漏洞代码分析

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']) : ;
$code = isset($_POST['code']) ? trim($_POST['code']) : ''; if (empty($new_password) || empty($code) || $adminid == )
{
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)
{
//此链接不合法
$link[]['text'] = $_LANG['back'];
$link[]['href'] = 'privilege.php?act=login'; sys_msg($_LANG['code_param_error'], , $link);
}
....

5. 防御方法

这个漏洞属于密码学的抗穷举设计缺陷,要对这个漏洞进行修复,同时要能保证对原有的业务进行平滑兼容,我们可以从以下几个方面去思考

. 增加密钥空间,提供攻击者的攻击成本:容易实现
. 改变加密算法,间接地提高了密钥空间:需要对原有旧的密码进行全量地升级,改造成本大

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[]['text'] = $_LANG['back'];
$link[]['href'] = 'privilege.php?act=login'; sys_msg($_LANG['code_param_error'], , $link);
} //更新管理员的密码
/*
这里是pathc code的关键
代码中增加了随机数的盐,这极大地增加了黑客爆破的密钥空间,提供了攻击成本
*/
$ec_salt=rand(,);
$sql = "UPDATE " .$ecs->table('admin_user'). "SET password = '".md5(md5($new_password).$ec_salt)."',`ec_salt`='$ec_salt' ".
"WHERE user_id = '$adminid'";

6. 攻防思考

Copyright (c) 2014 LittleHann All rights reserved

Ecshop /admin/get_password.php Password Recovery Secrect Code Which Can Predict Vulnerability的更多相关文章

  1. ECSHOP \admin\edit_languages.php GETSHELL Based On Injection PHP Code Into /languages/zh_cn/user.php

    目录 . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 对于很多CMS网站来说,它们都需要保存很多的网站META信息,最常用的最佳实践是以 ...

  2. Advanced Office Password Recovery如何设置快捷方式

    一般软件安装成功之后都会在桌面上形成快捷方式以方便使用,但是一些用户发现Advanced Office Password Recovery这种office密码破解工具安装成功后桌面上没有出现快捷方式, ...

  3. Advanced Office Password Recovery安装后显示是英文版的

    一些才开始接触Advanced Office Password Recovery(即AOPR)的朋友,在安装Advanced Office Password Recovery的时候可能发现Advanc ...

  4. [分享]Passcape Software - Windows Password Recovery

    [分享]Passcape Software - Windows Password Recovery https://bbs.pediy.com/thread-245965.htm   [[other] ...

  5. Advanced Archive Password Recovery (ARCHPR) 是一个强大的压缩包密码破解工具,适用于ZIP和RAR档案的高度优化的口令恢复工具。

    RAR压缩文件密码破解工具是一款简单易用的RAR文档和ZIP文档密码破解软件,如果你不小心忘了解压密码或是下载的RAR文件需要密码,那么均可以使用本软件进行暴力破解.不管WinRAR /RAR 的密码 ...

  6. Testlink 机器重启后Access denied for user 'admin '@'localhost' (using password: YES)解决

    问题表现: 装完Testlink,重启系统后,在testlink权限未分配会出现如下提示: 1045 - Access denied for user 'Testlink '@'localhost' ...

  7. ecshop Admin后台删除(Ajxa删除,无跳转连接)

    关联文件Admin/goods.php?act=trash,     Admin/js/listtable.js html代码 <a href="javascript:;" ...

  8. ecshop Admin后台商品列表处(上架、下架、精品...取消精品)增加操作

    相关文件:goods.php,goods_list.htm 思路: a.增添连接“转移仓库” b.在goods.php,读取仓库列表数据,并且实例化 c. 在goods_list.htm循环数据.点击 ...

  9. ECSHOP Inject PHPCode Into ecs_mail_templates table Via \admin\mail_template.php && \includes\cls_template.php Vul Tag_PHP_Code Execute Getshell

    目录 . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 Ecshop后台模版编辑漏洞,黑客可以在获得了后台管理员的帐号密码之后,可以通过在 ...

随机推荐

  1. 分层开发(MySchool总结)

    由于分层之间存在各层之间的关系窗体之间的方法跳转,故有需要者可以进行下载本地文件 MySchool.rar 3304KB 5/22/2016 9:43:28 AM ,代码中有注释, 上述代码,属个人所 ...

  2. Converting a Polygon ZM shape file to a regular Shape Polygon

    from:http://blog.csdn.net/qb371/article/details/8102109 Locate the following tool - ArcToolbox > ...

  3. 16Spring_AOP编程(AspectJ)_最终通知

  4. [6]Telerik TreeView 复选框

    参考连接:http://demos.telerik.com/aspnet-mvc/razor/treeview/clientsideapi 问题: Telerik TreeView 选择或取消 父选项 ...

  5. Delphi的基于接口(IInterface)的多播监听器模式(观察者模式 )

    本文来自:http://www.cnblogs.com/hezihang/p/6083555.html Delphi采用接口方式设计模块,可以降低模块之间的耦合,便于扩展和维护.本文提供一个实现基于接 ...

  6. 分享JS代码(转)

    var imgUrl = 'http://xxx/share_ico.png'; // 分享后展示的一张图片 var lineLink = 'http://xxx'; // 点击分享后跳转的页面地址 ...

  7. salt-ssh

    1.生产---测试--开发 salt-runners salt-run manage.status#显示当前up或down的minion salt-run manage.down salt-run m ...

  8. HttpClient通过Post上传文件(转)

    在之前一段的项目中,使用Java模仿Http Post方式发送参数以及文件,单纯的传递参数或者文件可以使用URLConnection进行相应的处理. 但是项目中涉及到既要传递普通参数,也要传递多个文件 ...

  9. Linux(10.18-10.25)学习笔记

    一.学习目标 1. 了解常见的存储技术(RAM.ROM.磁盘.固态硬盘等) 2. 理解局部性原理 3. 理解缓存思想 4. 理解局部性原理和缓存思想在存储层次结构中的应用 5. 高速缓存的原理和应用 ...

  10. 性能指标TP99之我解

    首先给出Google到的答案: The tp90 is a minimum time under which 90% of requests have been served. tp90 = top ...