[公开漏洞]墨迹天气android客户端系列2:修改任意邮箱用户密码姿势一

来源:WooYun 浏览:706次 时间:2014-07-16
做网站找雨过天晴工作室
墨迹天气android客户端系列2:修改任意邮箱用户密码姿势一 相关厂商: 墨迹天气 漏洞作者:白非白 提交时间:2014-05-31 15:41 公开时间:2014-07-15 15:41 漏洞类型:设计缺陷/逻辑错误 危害等级:高 自评Rank:20 漏洞状态: 未联系到厂商或者厂商积极忽略 漏洞来源:http://www.wooyun.org Tags标签: 设计缺陷/边界绕过 逻辑错误 设计错误 客户端程序设计错误 漏洞详情 披露状态:

2014-05-31:积极联系厂商并且等待厂商认领中,细节不对外公开
2014-07-15:厂商已经主动忽略漏洞,细节向公众公开

简要描述:

墨迹天气是一款十分流行的桌面天气软件,有很多漂亮的皮肤(收费)。所有漏洞都是在研究如何实现收费皮肤免费使用的过程中发现。。。。。。

详细说明:

这个修改密码是根据客户端的“忘记密码?”功能发现的。

正常青年修改密码的流程:

点击忘记密码->选择邮箱方式找回->点击邮箱中修改密码连接->重置密码



wooyun青年修改密码的流程:

打开重置密码的连接,直接修改其他用户密码





http://ugc.moji001.com/mapi/ResetPasswordBefore?E268443E43D93DAB7EBEF303BBE9642F={{****}}&07CC694B9B3FC636710FA08B6922C42B=[[31343031343334363738363430]]&lan=CH



参数说明:

上面连接中{{}}处的内容为注册用户的邮箱+ascii hex编码后内容(即a@qq.com编码后为614071712e636f6d,可以用burp的encode功能实现),是要修改密码的用户的邮箱

[[]]处的内容为java获取的13位当前时间戳+ascii hex编码后内容(31343031343334363738363430解码后为13位时间戳1401434678640)

[[]]处的内容是服务器判断一个修改密码连接是否失效的标准,假如[[]]中的时间戳转换成可以看懂的时间为2014年1月1号12:30,你修改密码的时间为2014年1月1号16:30,那么这个连接就失效了。

换句话说就是:你修改密码时的时间不能大于连接中时间2个小时,2个小时后连接就失效了。



我怎么知道哪个邮箱注册了墨迹天气呢?

http://ugc.moji001.com/sns/VerificationAccount?Account=a@126.com

改变a@126.com未你要测试的邮箱,如果返回true,表示未注册,返回false,表示已注册。

所有已注册的邮箱都可以通过上面的连接 修改密码。

ps:网上各种库各种邮箱,用burp遍历一次就能得到大量注册用户。



时间戳该怎么得到?

方式一:用java函数得到当前时间的13位时间戳。在之后的两个小时内,[[]]内内容保持当前时间戳编码后的内容不变,修改邮箱即可。

方式二:用自己邮箱注册一个帐号,点击一次忘记密码,邮箱中得到一个连接,使用该连接中的时间戳,即可在两个小时内修改任意邮箱用户密码。

漏洞证明:

http://ugc.moji001.com/mapi/ResetPasswordBefore?E268443E43D93DAB7EBEF303BBE9642F=here&07CC694B9B3FC636710FA08B6922C42B=31343031353131343330303330&lan=CH



上面的连接的时间戳是今天12:46,也就是说在14:46之前修改连接中的here即可修改用户密码

@xsser 随便用邮箱注册一个墨迹天气帐号,将邮箱 用ascii hex方式编码后填入上面连接here处,可以进行测试。



我昨天自己测过很多遍,都成功,昨天没截图。

修复方案:

验证方式再靠谱一点~编码方式在复杂一点,不要一下子就被我看懂嘛

版权声明:转载请注明来源 白非白@乌云

漏洞回应 厂商回应:

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