• 0
  • 0
分享

 最常见的XSS检测代码:

<script>alert(1)</script> // 调用JavaScript语句
<img src=x onerror=alert(1)> // src是错误的 就会调用error函数
<a href=javascript:alert(1)> // 点击a即可触发

  实际应用中web程序往往会通过一些过滤规则来防止代有恶意代码的用户输入被显示。当上述代码被注入到输入框或者URL参数中时,可能会成功也可能会失败,如果失败了,并不意味着网站不存在XSS漏洞,需要对其进行绕过等方式发掘安全漏洞。

  这里,给大家总结一些XSS绕过方法。

  1、大小写绕过

  某些网站仅仅过滤了<script>标签,而忽略了大小写替换同样可以造成浏览器触发XSS。具体方式为测试语句:

http://192.168.1.102/xss/example2.php?name=<sCript>alert("hey!")</scRipt>

  2、利用过滤后返回语句再次构成攻击语句来绕过

  当网站设置过滤规则时,可以触发XSS的关键字(<script>)被进行了过滤,在查看网页源代码时,script标签被去除掉了,于是我们就可以人为的制造一种巧合,让过滤完script标签后的语句中还有script标签(毕竟alert函数还在),像这样:

<div>http://192.168.1.102/xss/example3.php?name=<sCri<script>pt>alert("hey!")</scRi</script>pt></div><div></div>

  3、尝试使用其他标签来构造XSS

  当script标签被完全过滤时,这时可以尝试使用其它标签来构造XSS。

  这里以<img>标签进行说明:

http://192.168.1.102/xss/example4.php?name=<img 
src='w.123' onerror='alert("hey!")'>

  4、主动闭合标签

  可以通过手动闭合掉引号标签等方式来达到测试XSS漏洞的目的。

  闭合标签

  如果在查看页面的源代码的过程中,发现输入的字符串或者输入字符串的部分,那么就可以设法通过闭合字符串的方式来测试XSS漏洞。

  比如,我们所输入的字符串被放入到<input>标签中(<INPUT type="text" value='<SCRIPT>alert("XSS")</SCRIPT>'/>),那么我们可以修改输入来闭合<input>标签,执行script脚本。

  当我们输入为'/><SCRIPT>alert("XSS")</SCRIPT>,可以发现我们的代码执行了,说明此处存在XSS漏洞。

  绕过引号

  同样的例子,但是我们假设管理员在我们的单引号之前放置了一个“\”,有时候双引号之前也会放置,通过一些类似add_slashes的函数可以实现,这个就是转义字符,我们先前的代码就会变成这样:

<INPUT type="text"value='\'><SCRIPT>alert(\"XSS\")</SCRIPT>'>

  有一些方法可以继续,但是要看过滤的那个函数是怎么放的了。其中一个方法就是使用字符实体,学过html的都知道,就是一些特殊字符会用一些固有的符号组合来表示,举个例子,你不能用<>表示大于和小于,因为这被解释为html标签,但是,你如果要用,可以用下面的来代替。

1.png

  使用&quot;或者&#34;来代替我们的双引号,有时候可以绕过过滤。例子:

<script>alert("XSS")</script>
<script>alert(&quot;XSS&quot;)</script>
<script>alert(&#38;XSS&#38;)</script>

  如果这都被过滤了,那我们可以使用JavaScript的fromCharCode函数,这个函数把指定的Unicode值转换成字符串。

  比如:

<script>alert("XSS")</script>
<script>alert(String.fromCharCode(88,83,83))</script>
<INPUT type="text"value='\'><SCRIPT>alert(String.fromCharCode(88,83,83))</SCRIPT>'>

  5、通过组合编码方式来测试XSS漏洞

  在使用XSS编码测试时,需要考虑HTML渲染的顺序,特别是针对多种编码组合时,要选择合适的编码方式进行测试。

  当浏览器接受到一份HTML代码后,会对标签之间(<p>xxx</p>等,<script>除外)、标签的属性中(<a href='xxxx'>)进行实体字符解码变为相应的字符,而不会发挥出其本来该有的功能,如:&#60;被解码为<后仅被当作字符,而不会被当成标签名的起始。既然是字符串,那在href='xx'这些属性值本来就是字符串的地方可以作为一种可能的绕过的手段。如:

<a href="javascript:alert(1)"></a>

  被解释后为<a href="javascript:alert(1)"></a>,可以弹窗。

  总之,在进行XSS注入测试的时候要关注标签的闭合,这跟sql语句的闭合是差不多的,不过这个变成了HTML标签。此外思路要发散,通过语句跟绕过方式的不同搭配来构造payload,比如说当浏览器对script进行了转义的时候,我们可以尝试用其他标签来构造,当on被转义的时候,我们可以采用伪协议的方式构造即?javascript:,总之在构建payload的时候要发散思维。



作者:王超   

来源:http://www.51testing.com/html/86/n-4479786.html


2021 问卷礼物图.png

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 这是时常被问到的问题,尤其是UI自动化的运行,过程非常耗时,所以,所以多线程不失为一种首先想到的解决方案。多线程是针对的测试用例,所以和selenium没有直接关系,我们要关心的是单元测试框架。unittest首先,应该说明的是unittest本身是不支持多线程的。当然,如果你学过Python的threading模块,也未必不行。不过我在stackoverflow 找了半天,大多是介绍unittest 测试多线程模块,并非是unittest本身如何多线程运行用例。“我如何学习葵花宝典” 和 “我如何验证 张三 学会了葵花宝典”是两回事,而我显然要解决的问题是前者。又重新百度,结果就找了答案。核...
            0 0 1882
            分享
          • 读者提问:小程序自动化测试框架有推荐的吗 ?阿常回答:有,MiniTest。官网地址:https://minitest.weixin.qq.com小程序测试示例:https://git.weixin.qq.com/minitest/miniprogram-demo-test阿常碎碎念:目前小程序的体量越来越大,相关的框架和组件库越来越多,对于测试能力要求也越来越高。业内同行基于Chrome DevTools Protocol开发了很多小程序相关的测试工具,这些工具都有以下缺点:只能在Android端上运行。小程序实际是一个跨平台的产品(IDE,Android和IOS),测试的平台覆盖...
            0 0 1432
            分享
          • 互联网时代的到来,互联共享成为主旋律。多个互联网公司之间的合作越来越深入,越来越紧密,接口测试的重要性显得越来越突出。今天就把我接口测试的思路分享出来,希望可以给大家指明测试的方向,开拓大家的测试思维。从一个模型说起,进行接口测试两年多了,不断的测试,不断的摸索,将接口测试抽象成如下模型:模型很简单,就是四个模块,为了更好的说明这一点,我接下来展开来说。第一:接口文档测试。对于接口接口文档是双方约定的最基础的约定,数据能否正常传输依赖于接口文档,接口文档定义的标准、规范。对于这个接口来说已经完成了大部分的工作。从接口文档中我们要剖析出以下的点展开测试:【1】首先明确请求的数据类型是什么,主流的...
            6 14 4095
            分享
          • 结合了工作经验,写出了这篇文章,是从功能测试转向自动化测试的学习过程。用您5分钟时间阅读完,希望能对您有帮助!什么是自动化测试!你了解吗?自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。通常,在设计了测试用例并通过评审之后,由测试人员根据测试用例中描述的规程一步步执行测试,得到实际结果与期望结果的比较。在此过程中,为了节省人力、时间或硬件资源,提高测试效率,便引入了自动化测试的概念。为什么做自动化测试-你了解吗?1)对个人来说随着时代科技的进步,越来越多的工作偏向于了自动化,软件测试当然也不例外。从发展的趋势来说,只有不断的提升自己,面对各种变化,才可以追上科技的进步。手动测试虽然...
            0 0 565
            分享
          • JMeter 作为一个开源的接口性能测试工具,其本身的小巧和灵活性给了测试人员很大的帮助,但其本身作为一个开源工具,相比于一些商业工具(比如 LoadRunner),在功能的全面性上就稍显不足。这篇博客,就介绍下 JMeter 的一些常用插件。JMeter Plugins Manager从 JMeter Plugins Manager 官方下载网站 下载安装 JMeter Plugins Manager。安装 JMeter Plugins Manager 后,点击 “Options” > “Plugins Manager” 打开插件管理器,其他的插件都可以在这里进行管理。Bas...
            0 0 967
            分享
      • 51testing软件测试圈微信