先给出重现过程
1、发微博处添加音乐,随便搜索一个,比如test,在出现的音乐列表中选择一个插入到微博中,在发表微博的时候截断包,
修改musicSong参数,在后面加上<img src=a onerror=alert(1)>,然后发表微博。
2、回到首页刚发表微博的地方,微博内容如下图:
3、点击播放,执行了我们插入的代码。
漏洞分析过程:
1、漏洞形成的原因经过简单分析是,在http://mat1.gtimg.com/www/mb/js/mi.TalkListRich_120921a.js这个js文件中有如下代码:
点击触发click时间,然后调用MI.TalkList.music(d)函数进行音乐播放。
2、MI.TalkList.music函数在http://mat1.gtimg.com/www/mb/js/mi.Music_120821.js文件中。
上面代码中会从页面中获取歌手名和歌曲名然后替换a变量中的内容,在替换的没有对歌曲名和歌手名进行URL编码和HTML编码处理,造成存在XSS漏洞。
PS:感觉分析的挺乱的,你们看看能否看懂吧!