当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(17) 关注此漏洞

缺陷编号: WooYun-2014-75186

漏洞标题: 帝国CMS(全版) 验证码可无视!可导致验证码无效(验证码识别都是渣渣)

相关厂商: 帝国CMS

漏洞作者: 风情万种

提交时间: 2014-09-07 18:48

公开时间: 2014-12-04 18:50

漏洞类型: 设计缺陷/逻辑错误

危害等级: 高

自评Rank: 20

漏洞状态: 已交由第三方合作机构(cncert国家互联网应急中心)处理

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 help@wooyun.org

Tags标签: 逻辑错误

2人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-09-07: 细节已通知厂商并且等待厂商处理中
2014-09-10: 厂商已经确认,细节仅向厂商公开
2014-09-13: 细节向第三方安全合作伙伴开放(绿盟科技唐朝安全巡航无声信息
2014-11-04: 细节向核心白帽子及相关领域专家公开
2014-11-14: 细节向普通白帽子公开
2014-11-24: 细节向实习白帽子公开
2014-12-04: 细节向公众公开

简要描述:

帝国CMS 验证码可无视!可导致验证码无效(验证码识别都是渣渣)

详细说明:

看帝国 获取验证码的代码

code 区域
//显示验证码
function ShowKey($v){
$vname=ecmsReturnKeyVarname($v);
$key=strtolower(domake_password(4));
ecmsSetShowKey($vname,$key);
..................
}





ecmsReturnKeyVarname 是返回保存验证码的cookie的名称



比如本列打开的页面上注册页面的验证码

url 是 http://localhost/empirecms/e/ShowKey/?v=reg

第一步:根据ecmsReturnKeyVarname 返回的是checkregkey

code 区域
//返回变量名
function ecmsReturnKeyVarname($v){
if($v=='login')//登陆
{
$name='checkloginkey';
}
elseif($v=='reg')//注册
{
$name='checkregkey';
}
elseif($v=='info')//信息
{
$name='checkinfokey';
}
elseif($v=='spacefb')//空间反馈
{
$name='checkspacefbkey';
}
elseif($v=='spacegb')//空间留言
{
$name='checkspacegbkey';
}
elseif($v=='gbook')//留言
{
$name='checkgbookkey';
}
elseif($v=='feedback')//反馈
{
$name='checkfeedbackkey';
}
elseif($v=='getpassword')//取回密码
{
$name='checkgetpasskey';
}
elseif($v=='regsend')//重发激活邮件
{
$name='checkregsendkey';
}
else//评论pl
{
$name='checkplkey';
}
return $name;
}



第二步:ecmsSetShowKey函数将cookie保存到cookie中,看这函数好像是做了不少 其实是把验证码md5了一下就保存到cookie里面了 关键点:$key=$time.','.$checkpass.','.$val;

$val就是验证码的md5

code 区域
/设置验证码
function ecmsSetShowKey($varname,$val,$ecms=0){
global $public_r;
$val=md5($val);
$time=time();
$checkpass=md5(md5($val.'EmpireCMS'.$time).$public_r['keyrnd']);
$key=$time.','.$checkpass.','.$val;
esetcookie($varname,$key,0,$ecms);
}
//设置COOKIE
function esetcookie($var,$val,$life=0,$ecms=0){
global $ecms_config;
$varpre=empty($ecms)?$ecms_config['cks']['ckvarpre']:$ecms_config['cks']['ckadminvarpre'];
return setcookie($varpre.$var,$val,$life,$ecms_config['cks']['ckpath'],$ecms_config['cks']['ckdomain']);
}





第三步:查看cookie,mlukmcheckregkey=1409913237%2C26b915271f0eccf2eef645af070e7e63%2C8f136277f7544773106f4c06dcdb4bf4;

最后面%2C后面8f136277f7544773106f4c06dcdb4bf4就是验证码的md5 这四位数的验证码在cmd5那是一查一个准啊



QQ截图20140905183708.gif



QQ截图20140905183929.gif







漏洞证明:

QQ截图20140905183708.gif



QQ截图20140905183929.gif

修复方案:

验证码识别都市渣渣

版权声明:转载请注明来源 风情万种@乌云


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:10

确认时间:2014-09-10 09:13

厂商回复:

最新状态:

暂无


漏洞评价:

对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值

漏洞评价(共0人评价):
登陆后才能进行评分

评价

  1. 2014-09-05 19:57 | menmen519 ( 普通白帽子 | Rank:914 漏洞数:161 | http://menmen519.blog.sohu.com/)
    2

    估计被忽略,我之前提交csrf shell的一直还在,这个厂商不再

  2. 2014-09-10 12:36 | magerx ( 普通白帽子 | Rank:257 漏洞数:45 | 别说话。)
    0

    开刷了么。。

  3. 2014-12-05 01:17 | Anonymous.L ( 实习白帽子 | Rank:37 漏洞数:8 | 最后一位关注xxxx的人 , 孤独之人)
    4

    几乎没有影响,验证码的功能是防止注册机类似的灌水软件,你即使md5解密也没什么用的,验证码的功能已经完成了,等你解密了都什么时候了。

  4. 2014-12-05 09:10 | 尕肚肚 ( 路人 | Rank:8 漏洞数:2 | 安全技术屌丝)
    2

    不懂,获得已经验证过的验证码有什么用?

登录后才能发表评论,请先 登录