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处,可以进行测试。
我昨天自己测过很多遍,都成功,昨天没截图。
验证方式再靠谱一点~编码方式在复杂一点,不要一下子就被我看懂嘛
版权声明:转载请注明来源 白非白@乌云漏洞回应 厂商回应:
未能联系到厂商或者厂商积极拒绝