ECShop 2.7.2 最新任意用户登陆漏洞

沱长
 沱长
发布于 2010年05月05日
收藏 3

由于最近项目需要, 查看了下商派最新发布的ECShop 2.7.2正式版的源代码, 没想到在看到第二个文件时就发现了一处比较明显, 且低级漏洞。这个漏洞可以让任何人以任何用户身份登录到ECShop前台!

漏洞的影响

ECShop 2.7.2

ECShop 2.7.1 不受影响

漏洞的出现

漏洞出现在/include/init.php文件的512行左右, 代码如下:

<>

ecshop 2.7.2 最新任意用户登录漏洞代码

从代码中可以看出, 当SESSION中不存在用户登录信息的时候, 会查看COOKIE中的$_COOKIE['ECS']['user_id']和$_COOKIE['ECS']['password']两个变量。如果 两个变量都不为空,则查询user表中user_id为$_COOKIE['ECS']['user_id']的用户, 如果该用户存在, 就直接置为登录状态。而对$_COOKIE['ECS']['password']在整个判断过程中并未进行使用。

大家都知道,COOKIE是可以伪造的,所以用工具轻松添加这个两个变量, 并设置$_COOKIE['ECS']['user_id']为有效值,即可以任意账户登录系统

相同的认证方式,在后台的代码(/admin/include/init.php:229)中却又有比较安全的验证方式, 代码如下:

ecshop 2.7.2 最新任意用户登录漏洞代码

这里不仅验证了后台用户ID的有效性, 还进一步验证了$_COOKIE['ECSCP']['admin_pass']的有效性, 这样就是比较完善的方式。

漏洞简单利用

打开由ecshop 2.7.2构建的商城系统, 当前为未登录状态

打开COOKIE编辑软件, 这里我用的FireFox的插件FireCookie

新建两个COOKIE变量:$_COOKIE['ECS']['user_id']和$_COOKIE['ECS']['password'], 如下图所示:

ecshop 2.7.2 最新任意用户登录漏洞利用

ecshop 2.7.2 最新任意用户登录漏洞利用

ecshop 2.7.2 最新任意用户登录漏洞利用

现在刷新页面, 你已经登录了, 登录的用户名显示在右上角

ecshop 2.7.2 最新任意用户登录漏洞利用成功

进入用户中心甚至可以查看和修改用户资料, 当然用户有余额的话…呵呵…别想太多了,老实研究技术…

漏洞的修补

修复漏洞也很简单, 前面贴出的后台代码就是最好的例子,把/include/init.php 261行左右的if语句改为

if (!$row || (md5($row['password'] . $_CFG['hash_code']) != $_COOKIE['ECS']['password']))

观点

这个漏洞的出现主要是影响前台用户, 对网站服务器的安全性影响不大。当然结合其他漏洞或是社会工程学等的攻击,取得提权也不是不可能的。这里就不说了,各路高手可自由发挥:-)

这算是EC团队的一个严重失误吧,希望官方尽快修复。

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 OSCHINA 社区 [http://www.oschina.net]
本文标题:ECShop 2.7.2 最新任意用户登陆漏洞
加载中

最新评论(5

郭冠常
郭冠常
$sql = 'SELECT user_id, user_name, password ' .
' FROM ' .$ecs->table('users') .
" WHERE user_id = '" . intval($_COOKIE['ECS']['user_id']) . "' AND password = '" .$_COOKIE['ECS']['password']. "'";

//新的2.7.3改了
huxuanhui
huxuanhui
ecshop做的还不错撒,值得参考
悟庭
悟庭
哈哈, 脑筋短路了.
刘赤龙
刘赤龙
很讨厌ECSHOP!
返回顶部
顶部