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

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

缺陷编号:wooyun-2015-0135520

漏洞标题:一封广告邮件引发的“灭云”案(云码网可重置任意用户密码)

相关厂商:云码网

漏洞作者: 163dotcom

提交时间:2015-08-20 11:19

修复时间:2015-10-04 11:20

公开时间:2015-10-04 11:20

漏洞类型:敏感信息泄露

危害等级:中

自评Rank:10

漏洞状态:未联系到厂商或者厂商积极忽略

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-08-20: 积极联系厂商并且等待厂商认领中,细节不对外公开
2015-10-04: 厂商已经主动忽略漏洞,细节向公众公开

简要描述:

云码网可重置任意用户密码漏洞

详细说明:

一大早来到公司,热死了。例行打开邮件,诶,有新邮件,一看却是:

1


最讨厌是没经过同意乱发广告邮件以及街上一见就抓住要你学英语的了!
嘿嘿,昨天不是刚学了burp suite么,今天可以实操了!!
于是打开主页,很快找到“找回密码”的页面,但是如何才能找到登录账户呢?
我扶了扶眼镜,有办法!这里不是还有人脉么,都列出来:

2


虽然都是昵称,但可以找那些昵称全是英文的试。果然找到了一个:hongkon******tai。从昵称可以看出,这位仁兄是十分爱国的。(其实我也是很爱国的!!)
不扯,继续做正事。果然,一试就灵,进入这个页面(简称P页面,下面会用到)::

3


先试了邮箱找回,看能不能截取到什么验证码,无功而返,不详说了。只能尝试手机找回,跳转到这个页面(实际上跟P页面是同一个页面):

4


赶紧抓包(第一次使用如此专业的名词),哈哈,整个手机号出现了(注意,上一个GET地址email也露出来了):

5


但keyMobile是什么?感觉是加密后验证码,32位,格式似乎与md5加密的不一样,中间有一个横杆。(有精通加密的大神科普下这是什么类型的加密?!)但是,密码如何破解呢?
我又扶了扶眼镜,浏览器右键,查看P页面源代码,一眼认出了其中这几行(为了方便大家查看,代码有重新格式化过,且本人有洁癖):

function savePassword(){
var keyMobile = $("#keyMobile").val();
var mobile = $("#mobile").val();
var password = $("#password").val();
var password1 = $("#password1").val();
if (password == "" || password.length < 6) {
alert("密码不能少于6位");
return false;
}
if (password != password1) {
alert("两次输入密码不一致");
return false;
}
jQuery.ajax({url:'http://www.yunmar.com.cn/user/resetpass',
data:{"keyMobile":keyMobile, "mobile":mobile, "password":password},
async:false,
dataType:'json',
type:'POST',
success:function(msg) {
if (msg.success) {
$("#pass").hide();
$("#passOK").show();
} else {
salert(msg.message);
}
}
}
)
}


从中提取了关键的几行信息

http://www.yunmar.com.cn/user/resetpass
keyMobile
mobile
password


burp suite抓包抓到的参数名还历历在目:keyMobile、mobile
好了,轮到google的postman出马了(也是昨天刚学的)

6


这里说成功还不算,登录成功了才算数:

QQ浏览器截屏未命名.png


成功!

漏洞证明:

操作步骤:
1)从“人脉”中筛选用户。
2)通过手机找回密码。
3)抓取keyMobile和mobile参数的值。
4)POST发送http请求。

http://www.yunmar.com.cn/user/resetpass
keyMobile
mobile
password

修复方案:

建议:
1)参数不传递明文的手机号(mobile)或邮箱地址(email)。
2)重置密码时,keyMobile参数的值,是否就是加密后的用户输入的验证码?还有本来后台生成的验证码?如果是前者,最好不传加密后的;如果是后者,那这个验证码就没啥用了。

版权声明:转载请注明来源 163dotcom@乌云


漏洞回应

厂商回应:

未能联系到厂商或者厂商积极拒绝

漏洞Rank:8 (WooYun评价)