漏洞概要
关注数(24)
关注此漏洞
漏洞标题:EspCMS最新版可伪造任意帐户登陆(简单利用代码)
提交时间:2014-03-13 23:28
修复时间:2014-06-11 23:29
公开时间:2014-06-11 23:29
漏洞类型:非授权访问/权限绕过
危害等级:高
自评Rank:20
漏洞状态:厂商已经确认
Tags标签:
无
漏洞详情
披露状态:
2014-03-13: 细节已通知厂商并且等待厂商处理中
2014-03-14: 厂商已经确认,细节仅向厂商公开
2014-03-17: 细节向第三方安全合作伙伴开放
2014-05-08: 细节向核心白帽子及相关领域专家公开
2014-05-18: 细节向普通白帽子公开
2014-05-28: 细节向实习白帽子公开
2014-06-11: 细节向公众公开
简要描述:
EspCMS最新版可伪造任意帐户登陆(源码分析)
测试版本espcms_utf8_5.8.14.03.03_b
详细说明:
EspCMS中用户cookie生成算法中重要的就是db_pscode
貌似前面有大牛提交过多次,厂商都只是略作修改,并没有最终搞定问题
这里来说一下,可以通过注册普通帐号,通过帐号+cookie破解得到db_pscode
首先是cookie加密算法,/public/class_function.php,144-170行
不知道分析的对不对,主要是没有采用不可逆函数,导致可以逆推得到db_pscode
我本地搭建时的db_pscode为81cc52c15f9f1df62679efdb12de1be,以此为例
首先注册帐号,获得cookie如下
简单写了个计算db_pscode的,写的比较菜~
通过这段代码得到db_pscode
db_pscode不完整是因为我们注册的用户名长度不够,只要注册足够长的用户名,就能得到足够长的cookie,就能得到完整db_pscode
得到db_pscode以后,只要伪造两个cookie就可以了,一个是ecisp_member_username,另一个是ecisp_member_info,就可以登陆任意帐户
也简单写了下计算cookie的代码
注意:这里构造的username,与uid不需要匹配,因为程序读取cookie的时候只查询是否有这个uid存在,所以username可以随意构造,只有uid存在就ok
漏洞证明:
比如我要登陆userid=1的帐户,通过计算得到cookie中ecisp_member_info为lrStk99mrt-tsQ
另外一个值随便取值计算,不能不存在就ok
修改cookie
直接访问/index.php?ac=membermain&at=center,就登陆成功
另外说一下,因为可以随意构造username,这样的话在username处构造注入的话。。。
发现有多个地方可以通过这个方式注入,绝对无视gpc,无视全局过滤
修复方案:
版权声明:转载请注明来源 飞扬风@乌云
漏洞回应
厂商回应:
危害等级:低
漏洞Rank:1
确认时间:2014-03-14 08:02
厂商回复:
相关问题我们已对部分用户提交解决方案。
最新状态:
暂无
漏洞评价:
评论
-
2014-03-26 10:14 |
飞扬风 ( 普通白帽子 | Rank:512 漏洞数:125 | 追求安全,热爱技术)
-
2014-03-31 11:44 |
疯狗 ( 实习白帽子 | Rank:44 漏洞数:2 | 阅尽天下漏洞,心中自然无码。)
@飞扬风 这个漏洞可以登录任意使用espcms站点的帐号?
-
2014-06-12 01:07 |
Mody ( 普通白帽子 | Rank:110 漏洞数:27 | "><img src=x onerror=alert(1);> <img s...)