UTF-7 XSS 浅析

Test on: IE 8.0

vul.php

 

sec.php

 

encode.php {换行符被xxoo了,请自己添加}

 

 

vul.php 与 sec.php 不同在于 charset 的设置,如果没有设置 charset 那么它就是易受攻击的

因为没有了编码的限制,我们可以使用另一种不常用的编码(UTF-7)来逃过xss的检测

具体方法:

1.先用我写的encode.php将xss代码进行加密

XSS CODE:  <script>alert(’90sec’)</script>

UTF-7 XSS Encode:  +ADw-script+AD4-alert(’90sec’)+ADw-/script+AD4-

2.将 UTF-7 XSS Encode 添上 UTF-7 Bom 让它成为 UTF-7 的编码

+/v8 +ADw-script+AD4-alert(’90sec’)+ADw-/script+AD4-

Bom 与 Encode 之间有一个空格哦

在bom与encode之间也可以存在其他代码,

如:+/v8 just for fun +ADw-script+AD4-alert(’90sec’)+ADw-/script+AD4-

3.如果是POST提交,就可以直接把 UTF-7 编码字符提交出去

如果是GET方式,得先把编码字符进行URL转码,因为浏览器会吞掉+号,我就在这儿停了很久

+/v8 +ADw-script+AD4-alert(’90sec’)+ADw-/script+AD4-的URL代码

 

测试vul.php:

 

效果图:

相关资料:

http://shiflett.org/blog/2005/dec/google-xss-example

http://shiflett.org/blog/2005/dec/googles-xss-vulnerability

http://zh.wikipedia.org/zh-cn/UTF-7

PS:我写的不一定对哦,有错请纠正啦,谢谢

编辑评论:UTF-7 XSS已经出来很久了,算是老文重读,给大家科普下啦~

对XSS想有更深入利用认识与了解的请参考:

用xss平台沦陷百度投诉中心后台

基于flash的反射型xss的利用方法

责任编辑:梧桐雨

作者

作者 laterain文章转载于:http://lcx.cc/?i=2862

网络安全攻防研究室(www.91ri.org)信息安全小组收集整理。