标签style为隐藏属性,从而使得该插入页面不会被用户发现,插入的页面链接就是构造好的url地址。
当页面被加载时,页面通过这个url接口向腾讯地图的RealTime Bidding服务器发送一个请求,服务器没有对请求来源进行效验,直接将请求的数据返回,并附带了一些查询信息,如下图所示,其中exploit是构造的利用代码。
当exploit = “</script><svg><script>eval(window.name);//”,请求服务器之后iframe标签里的内容就变成下边的内容:
利用代码中的标签“</script><svg><script>”用于绕过浏览器的XSS过滤器,浏览器会将这三个标签忽略掉只留下后边的内容,然后第一个注释符号将后边的内容都给注释掉了,最后的有效内容就一句:eval(window.name)。之后eval会将字符串name里边的内容当作js代码执行,其执行结果就是在文档结尾创建<script></script>标签去加载执行js主功能模块http://conf3.gamexm.net/moo.js。
主功能js部分代码如下所示:
该js代码做了混淆,其按照OlOlll=”(x)”的方式进行替换,我们还原第一部分代码为:
eval("var l = function(x){return String.fromCharCode(x)}");
该处生成一个函数I,其功能是返回数字对应的ascii码,下边利用该函数将一些数字还原成新的函数,依次类推,最后解出来的功能代码如下所示: