欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

XSS绕过filter高级技术part1

来源:本站整理 作者:佚名 时间:2018-12-25 TAG: 我要投稿

在如今的web时代,XSS攻击十分常见,针对xss攻击的防御也有不少,Filter就是一种用来防御xss攻击的最常见的手段,filter通常是采用黑名单的形式或者基于正则表达式来过滤。尽管如此,依然有很多技术可以用来绕过Filter。
基本变形
我们可以先从绕过相对简单的filter开始。根据Filter过滤规则复杂度的不同,绕过的难易程度肯定也不同,这些简单的过滤器还是比较容易绕过的,只要做一些基本的变形即可。
我们用到的大部分技术都是测试XSS漏洞的最简单的payload的变形,就像下面的代码一样。
alert(1)
如果测试的参数存在xss,就会弹框显示1.
Filter肯定会过滤这个payload,不过有时候,我们只要对payload进行一些简单的修改,就能绕过默认的最基础的filter。比如可以尝试在开始的script标签中插入一个空格或者是tab,如下所示:
alert(1)
alert(1)
当然,也可以通过对tab,换行,回车进行编码来绕过,如下所示:
alert(1)
alert(1)
alert(1)
对标签进行大小写也有可能骗过filter,如下:
alert(1)
还有一种方法非常有效,而且通常都能够成功绕过,那就是插入null字节。在xss payload的任何地方插入null字节,有时候可以绕过filter,如下所示:
alert(1)
al%00ert(1)
属性和标签
HTML属性提供了页面上元素的更多信息。当我们查找XSS漏洞时,通常可以利用这些属性来引入script标签,从而确认是否存在xss。例如,我们以input元素为例,包含一个value的属性,如下:
我们可以闭合value属性的双引号从而闭合input标签来插入我们的XSS payload,如下:
alert(1)
有时候即使使用任意的标签名也可以绕过filter,如下:
alert(1)
跟上面的类似,我们也可以替换标签名和第一个属性之间空格来测试,如下:
alert(1)
alert(1)
alert(1)
alert(1)
alert(1)
改变标签名大小写,有时候也会有效果,如下:
alert(1)
null字节的小技巧对标签名同样有效,我们可以尝试在不同的位置插入null字节,如下:
alert(1)
alert(1)
这对属性名和属性值也同样适用,如下:
alert(1)
a%00lert(1)
事件处理器(Event Handlers)
HTML语言也包含了事件,事件就是页面上元素发生的动作。事件处理器就是实现该动作的方法,通常是借助JavaScript。事件可以由浏览器或者用户自己发起,比如下面这些例子都是事件,单击按钮,页面加载或者是抛出错误。
相关阅读:利用这三个工具进行fuzz测试来发现xss漏洞
现在我们还是以上面的input标签为例,我们尝试向input标签插入一个包含xss payload的事件,我们可以选择任何合适的事件处理器(这里我们选择onsubmit)来构造payload。如果存在xss漏洞,那么下面的代码,将会在表单被提交时触发弹框,如下:
根据不同类型的filter,还有很多其他的事件处理器来探测xss漏洞。大部分甚至都不需要用户交互,所以测试时使用这些事件处理器就最好不过了,如下:
HTML5还引入了一些关于事件处理器的新的攻击因素。比如audio,video和SVG等都可以用来触发xss,如下:
新的标准也允许在结束标签内使用事件处理器,如下:
分隔符和括号
分隔符是用于分隔文本字符串或者其他数据流的一个或多个字符。在挖xss漏洞时,巧妙的使用分隔符非常有效。在HTML中,我们经常使用空格来分隔属性和它的值。还有的时候,只要使用一个单引号或者双引号作为分隔符就可以绕过filter了,如下:
对分隔符进行编码也可以用来绕过防御,如下:
重音符或者是反引号也是绕过filter的一种不错的技巧,如下:
编码版本如下:
Filter有时候会过滤某些关键词,比如以“on”开头的事件处理器,以此来防御此类xss攻击。
如果我们把属性的位置换到前面,filter无法识别反引号,会将它视为不是以“on”开头的单独的属性,这样也就可以有效绕过filter了,如下:
跟分隔符一样,尖括号也可以利用来绕过filter。在某些情况下,filter仅仅只会查找开始括号和闭合括号,然后将尖括号里面的内容与恶意标签黑名单比较。通过使用多个尖括号,有时候可以骗过filter接受后面的代码。再使用双斜线注释掉后面的闭合标签,所以也不会报错,如下:

[1] [2]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载