1. 首先上传一个正常的图片,抓包并发送消息,看输入。
2. 然后再接收方,打开调试工具,看输出~
3. 可以看到,输入和输出有同样的内容。。
4. 试了下输入处可以在后面添加内容,接着我们就是想着如何构造输入,导致畸形输出。
5. 常规的 ",> 试都没试,这个要是没过滤的话。。就太低级的了。。
6. 首先测试 "> 这个经常导致存储型Xss的组合。 结果被过滤了。。
7. 接着,既然是json数据,我们用\u0022\u003e来表示 "> 应该也是可以的,结果应该服务器端解析错误。返回的retcode不等于0.
8. ****** 重点在这里 ******
由于WEBQQ的消息内容是动态推送的,我就联想到了, xxx.innerHTML="\u0022\u003e" 会输出为 ">,我做以下猜测。
\\u0022\\u003e -->(经过服务器端会输出为)--> \u0022\u003e -->(经过innerHTML输出为) ">
9. 基于上面这个想法,我们做了下面的测试,结果。。。侧漏了
10. 接着后就好办了。构造利用代码。
-->unicode编码转换
--> 然后将 \ 全部转换为 \\ ,并且加入到发送的数据r字段的 offpic参数处。
11. 发送利用代码,接收方调用我们的外部文件。
12. 为了进一步演示此漏洞危害, 编写了以下蠕虫代码进行测试。
qqworm.js
qqworm.php
13. 本蠕虫代码中为测试用,对被传播的在线用户进行了限制,其工作原理及真实演示效果见漏洞证明。