网络安全检测|网络安全服务|网络安全扫描-香港墨客投资移动版

主页 > 业界资讯 > ddos防御

XSS过滤绕过速查表(5)

这个和上面一样有效,不过使用了标签。在进行跨站脚本攻击时,如不能同时使用等号或斜杠,这是非常有用的,这种情况在现实世界里不止一次发生了:

2.51. 远程样式表3

这种方式仅在Opera 8.0(9.x不可以)中有效,但方法比较有创意. 根据RFC2616,设置一个Link头部不是HTTP1.1规范的一部分,但一些浏览器仍然允许这样做 (例如Firefox和 Opera). 这里的技巧是设置一个头部(和普通头部并没有什么区别,只是设置Link: <>; REL=stylesheet)并且在远程样式表中包含使用了Java的跨站脚本攻击向量,这一点是FireFox不支持的:

2.52. 远程样式表4

这仅能在Gecko渲染引擎下有效并且需要在父页面绑定一个XML文件。具有讽刺意味的是 Netscape认为Gecko更安全 ,所以对绝大多数网站来说会受到漏洞影响:

2.53. 含有分隔Java的STYLE标签

这个XSS会在IE中造成无限循环:

2.54. STYLE属性中使用注释分隔表达式

由Roman Ivanov创建

2.55. 含表达式的IMG STYLE

这是一个将上面XSS攻击向量混合的方法,但确实展示了STYLE标签可以用相当复杂的方式分隔,和上面一样,也会让IE进入死循环:

2.56. STYLE标签(仅旧版本Netscape可用) 2.57. 使用背景图像的STYLE标签 2.58. 使用背景的STYLE标签 2.59. 含STYLE属性的HTML任意标签

IE6.0和IE渲染引擎模式下的Netscape 8.1+并不关心你建立的HTML标签是否存在,只要是由尖括号和字母开始的即可:

2.60. 本地htc文件

这和上面两个跨站脚本攻击向量有些不同,因为它使用了一个必须和XSS攻击向量在相同服务器上的.htc文件。这个示例文件通过下载Java并将其作为style属性的一部分运行来进行攻击:

2.61. US-ASCII编码

US-ASCII编码(由Kurt Huwig发现)。它使用了畸形的7位ASCII编码来代替8位。这个XSS攻击向量可以绕过大多数内容过滤器,但是只在主机使用US-ASCII编码传输数据时有效,或者可以自己设置编码格式。相对绕过服务器端过滤,这在绕过WAF跨站脚本过滤时候更有效。Apache Tomcat是目前唯一已知使用US-ASCII编码传输的:

2.62. META

关于meta刷新比较奇怪的是它并不会在头部中发送一个referrer-所以它通常用于不需要referrer的时候:

2.62.1 使用数据的META

URL scheme指令。这个非常有用因为它并不包含任何可见的单词或Java指令,因为它使用了base64编码.请查看RFC 2397寻找更多细节。你同样可以使用具有Base64编码功能的XSS工具来编码HTML或Java:

2.62.2 含有额外URL参数的META

如果目标站点尝试检查URL是否包含””,你可以用以下技术规避它(由Moritz Naumann提交):

2.63. IFRAME

如果允许Iframe那就会有很多XSS问题:

2.64. 基于事件IFRAME

Iframes和大多数其他元素可以使用下列事件(由David Cross提交):

2.65. FRAME

Frames和iframe一样有很多XSS问题:

2.66. TABLE

2.66.1. TD

和上面一样,TD也可以通过BACKGROUND来包含JavaXSS攻击向量:

2.67. DIV

2.67.1. DIV背景图像

2.67.2. 含有Unicode XSS利用代码的DIV背景图像

这进行了一些修改来混淆URL参数。原始的漏洞是由RenaudLifchitz在Hotmail发现的:

2.67.3. 含有额外字符的DIV背景图像

Rnaske进行了一个快速的XSS模糊测试来发现IE和安全模式下的Netscape 8.1中任何可以在左括号和Java指令间加入的额外字符。这都是十进制的但是你也可以使用十六进制来填充(以下字符可用:1-32, 34, 39, 160, 8192-8.13, 12288, 65279):

2.67.4. DIV表达式

一个非常有效的对抗现实中的跨站脚本过滤器的变体是在冒号和”expression”之间添加一个换行:

2.68. html 条件选择注释块

只能在IE5.0及更高版本和IE渲染引擎模式下的Netscape 8.1生效。一些网站认为在注释中的任何内容都是安全的并且认为没有必要移除,这就允许我们添加跨站脚本攻击向量。系统会在一些内容周围尝试添加注释标签以便安全的渲染它们。如我们所见,这有时并不起作用:

2.69. BASE标签

在IE和安全模式下的Netscape 8.1有效。你需要使用//来注释下个字符,这样你就不会造成Java错误并且你的XSS标签可以被渲染。同样,这需要当前网站使用相对路径例如”images/image.jpg”来放置图像而不是绝对路径。如果路径以一个斜杠开头例如”/images/image.jpg”你可以从攻击向量中移除一个斜杠(只有在两个斜杠时注释才会生效):

2.70. OBJECT标签

如果允许使用OBJECT,你可以插入一个病毒攻击载荷来感染用户,类似于APPLET标签。链接文件实际是含有你XSS攻击代码的HTML文件:

2.71. 使用EMBED标签加载含有XSS的FLASH文件

如果你添加了属性allowAccess=”never”以及allownetworking=”internal”则可以减小风险(感谢Jonathan Vanasco提供的信息):

2.72. 使用EMBED SVG包含攻击向量

该示例只在FireFox下有效,但是比上面的攻击向量在FireFox下好,因为不需要用户安装或启用FLASH。感谢nEUrOO提供:

2.73. 在FLASH中使用Action混淆XSS攻击向量 2.74. CDATA混淆的XML数据岛

这个XSS攻击只在IE和使用IE渲染模式的Netscape 8.1下有效-攻击向量由Sec Consult在审计Yahoo时发现

2.75. 使用XML数据岛生成含内嵌Java的本地XML文件

这和上面是一样的但是将来源替换为了包含跨站脚本攻击向量的本地XML文件(必须在同一服务器上):

2.76. XML中使用HTML+TIME

这是Grey Magic攻击Hotmail和Yahoo的方法。这只在IE和IE渲染模式下的Netscape8.1有效并且记得需要在HTML域的BODY标签中间才有效:

2.77. 使用一些字符绕过”.js”过滤

你可以将你的Java文件重命名为图像来作为XSS攻击向量:

2.78. SSI(服务端脚本包含)

这需要在服务器端允许SSI来使用XSS攻击向量。似乎不用提示这点,因为如果你可以在服务器端执行指令那一定是有更严重的问题存在:

2.79. PHP

需要服务器端安装了PHP来使用XSS攻击向量。同样,如果你可以远程运行任意脚本,那会有更加严重的问题:

2.80. 嵌入命令的IMAGE

(责任编辑:admin)