漏洞概要 关注数(14) 关注此漏洞
缺陷编号: WooYun-2013-23746
漏洞标题: Espcms V5.6.13.04.22 UTF8 正式版另类过后台所有模块验证漏洞之5/N
相关厂商: 易思ESPCMS企业网站管理系统
漏洞作者: Code_Sec
提交时间: 2013-05-15 09:07
公开时间: 2013-08-10 09:08
漏洞类型: 设计错误/逻辑缺陷
危害等级: 高
自评Rank: 10
漏洞状态: 漏洞已经通知厂商但是厂商忽略漏洞
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 help@wooyun.org
Tags标签: 第三方不可信程序 设计缺陷/边界绕过 espcms
漏洞详情
披露状态:
2013-05-15: 细节已通知厂商并且等待厂商处理中
2013-05-20: 厂商主动忽略漏洞,细节向第三方安全合作伙伴开放(绿盟科技、唐朝安全巡航、无声信息)
2013-07-14: 细节向核心白帽子及相关领域专家公开
2013-07-24: 细节向普通白帽子公开
2013-08-03: 细节向实习白帽子公开
2013-08-10: 细节向公众公开
简要描述:
另类利用Espcms的加解密函数,绕过后台所有模块的权限验证
额。。。解释起来比较长,算是一种思路
详细说明:
后台权限验证的类文件:\public\class_connector.php
关键代码解释:
我们如果知道db_pscode的值的话就可以任意构造$ecisp_admininfo了,但是不可能
db_pscode在网站初始化的时候就已经设定,并且是随机生成的32字符串
define('db_pscode', '5ae8d385e6ae4a4f633cacd28');
换个思路:
程序中其他的文件会用到加密函数,如果这个需要加密的变量可控,而且加密后的密文我们可以拿到。这样就相当于让程序帮我们构造找我们需要的加密数据了。
最终找到一个文件符合以上的需求\interface\order.php:
通过代码我们可以看到$orderlist有可能可以被我们控制,为了说明方便加段代码输出:
构造url:
**.**.**.**/index.php?ac=order&at=orderupdae&bprice=anb&did[aa]=87|dcc|ccc|a1|a2|a3|a4|a5&amount=1
最终输出的结果为:
再返回之前admin_purview权限验证的函数对比,此时esp_adminuserid满足不为空,esp_username也满足不为空,esp_softurl和esp_useragent都是可控的。
esp_softurl代表网站后台的路径,esp_useragent代表本机agent值,都是可知的。用md5加密下。
最后构造的URL:
**.**.**.**/index.php?ac=order&at=orderupdae&bprice=anb&did[aa]=87|dcc|ccc|5f4f40bac141a48d05a94ac90514fe05|a2|a3|c8273f6a0177588459b1971c65829cc6|a5&amount=1
把cookie中ecisp_order_list改为ecisp_admininfo
访问后台地址:
漏洞证明:
修复方案:
后台的权限还是从cookie解密获取帐号和密码后去数据库验证一遍
版权声明:转载请注明来源 Code_Sec@乌云
漏洞回应
厂商回应:
危害等级:无影响厂商忽略
忽略时间:2013-08-10 09:08
厂商回复:
漏洞Rank:10 (WooYun评价)
最新状态:
暂无
漏洞评价:
对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值