028-86922220

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

如何绕过XSS的防护

今天就跟大家聊聊有关如何绕过XSS的防护,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

创新互联成立10年来,这条路我们正越走越好,积累了技术与客户资源,形成了良好的口碑。为客户提供成都网站制作、网站建设、外贸网站建设、网站策划、网页设计、域名与空间、网络营销、VI设计、网站改版、漏洞修补等服务。网站是否美观、功能强大、用户体验好、性价比高、打开快等等,这些对于网站建设都非常重要,创新互联通过对建站技术性的掌握、对创意设计的研究为客户提供一站式互联网解决方案,携手广大客户,共同发展进步。

下面列出了一系列XSS攻击,可用于绕过某些XSS防御filter。针对输入进行过滤是不完全是XSS的防御方法,可以使用这些payload来测试网站在防护XSS攻击方面的能力,希望你的WAF产品能拦截下面所有的payload。

正文

XSS攻击原理:

攻击者向有XSS漏洞的网站中置入精心构造恶意的HTML代码,当用户浏览该网站时,这段HTML代码会自动执行,从而达到攻击的目的。

XSS攻击可以分成两种类型:一种是非持久型XSS攻击 一种是持久型XSS攻击。

反射型:请求地址上加入恶心的HTML代码。

如何绕过XSS的防护

dom型:api向网站注入一些恶意的HTML代码

如何绕过XSS的防护

持久性:攻击者把恶意代码提交到后台数据库中,当用户下次打开的时候就会从后台接收这些恶意的代码。

如何绕过XSS的防护

防范:

    前端通过转义来进行防范和过滤

    后端主要是通过WAF正则+OWASP规则+XSS语义分析+机器学习payload特征进行防卫。

普通的XSS JavaScript注入:

很可能会被过滤,建议先尝试一下(现代浏览器中都不需要引号,因此此处将其省略)

XSS有效负载,该测试将在多个上下文中执行,包括html,脚本字符串,js和url:

javascript:/*-->

使用JavaScript指令的IMG SRC XSS,注: IE7.0在图像上下文中不支持JavaScript指令,但在其他上下文中支持JavaScript指令:

没有引号也没分号情况:

大小写混淆的 XSS攻击payload:

HTML实体,必须使用分号:

同时使用双引号和单引号,则可以使用重音符来封装JavaScript字符串,因为许多跨站点脚本过滤器都不知道重音符:

畸形的a标签,跳过HREF属性:

xxs link

Chrome浏览器喜欢为替换丢失的引号,Chrome会将其放在正确的位置,并在URL或脚本上修复丢失的引号。

xxs link

格式错误的IMG标签,封装在引号中的IMG标签内创建我们的XSS矢量,为了纠正草率的编码。这将使正确解析HTML标记变得更加困难:

">

fromCharCode源字符码,不允许任何类型的引号,可以在JavaScript中eval()a fromCharCode来创建所需的XSS向量:

默认SRC标记可获取过去检查SRC域名的filter,这将绕过大多数SRC域过滤器。在事件方法中插入javascript还将适用于任何使用Form,Iframe,Input,Embed等元素的HTML标记类型注入。这还将允许您将标记类型的任何相关事件替换为onbluronclick从而为您提供大量的这里列出的许多注射的变化:

保留默认的SRC标签为空:

Default SRC tag by leaving it out entirely,完全忽略src:

错误提示 onerror alert:

IMG onerror and javascript alert 编码:

Decimal HTML character references,十进制字符引用,在标记内使用javascript:指令的所有XSS示例都无法在Gecko渲染引擎模式下的Firefox或Netscape 8.1+中运行):

十进制html字符引用,without trailing semicolons,同上+没有尾随分号,这在尝试查找“&#XX;”的XSS中通常很有效,因为大多数人都不了解填充-总共最多7个数字字符。这对于使用$ tmp_string =〜s /.*\&#(\ d +);。* / $ 1 /;等字符串进行解码的人也很有用。这错误地假设需要使用分号来终止html编码的字符串:

十六进制html字符引用,without trailing semicolons,不带尾部分号:

嵌入标签,用于破坏跨站点脚本攻击:

嵌入编码标签,用于分解XSS:

嵌入换行分解XSS:

Only 09 (horizontal tab), 10 (newline) and 13 (carriage return) work. See the ascii chart for more details

嵌入carriage返回分解 XSS:

\x0D是十六进制,也就是13所对就在的ASCII码字符,也就是回车符

null分解js指令,但是空字符%00更有用,它帮助我绕过了某些现实世界的过滤器:

perl -e 'print "";' > out

XSS图像中JavaScript之前的空格和元字符:

错误地假设引号和“javascript:”关键字之间不能有空格,则这非常有用。实际情况是,您可以使用小数点后1-32之间的任何字符

非字母非数字XSS:

Firefox HTML解析器假设非alpha非数字在HTML关键字后无效,认为它是HTML标记后的空白或无效标记。

一些XSS过滤器假定它们要查找的标记被空白分隔开。例如“

Gecko呈现引擎允许在事件处理程序和等号之间使用除字母、数字或封装字符(如引号、尖括号等)以外的任何字符,从而更容易绕过跨站点脚本块。

多余的开放括号:

某些检测引擎使用成对的开闭尖括号,然后对标签进行比较,

双斜线注释了结束的无关括号,以抑制JavaScript错误。

<

没有结束脚本tag:

在Firefox和Netscape 8.1的Gecko渲染引擎模式下,您实际上不需要这个跨站点脚本向量的“>”部分。

Firefox assumes it's safe to close the HTML tag and add closing tags for you。

标记,Opera中工作,Netscape在IE呈现模式下工作,

将自己的JavaScript注入其中,但是服务器端应用程序会转义某些引号,您可以通过转义它们的转义字符来绕过这些引号。

当它被注入时,它将读取,最后将取消对双引号的转义,并导致跨站点脚本向量触发。

\";alert('XSS');//

如果对嵌入的数据应用了正确的JSON或Javascript转义,而不是HTML编码,则完成脚本块并启动。

结束标签tag:

关闭标记的简单XSS向量,可以封装恶意跨站点脚本攻击。</p><p>

INPUT image:

BODY image:

IMG Dynsrc:

IMG lowsrc:

List-style-image:

处理为项目符号列表嵌入图像的相当深奥的问题,这只适用于IE呈现引擎。不是一个特别有用的跨站点脚本。