• 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

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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 接口测试和功能测试虽然都属于软件测试的范畴,但两者的测试目的、测试内容和测试重点都有所不同。那今天我将接口测试和功能测试配合实例为大家介绍这两种测试的区别,以 Apifox 这个最近风头很大的接口测试软件进行讲解。一、测试目的不同接口测试的目的是测试应用程序的接口是否能够按照规范要求与其他系统或组件进行交互,以及在不同负载条件下接口的稳定性、性能和安全性。功能测试的目的则是为了确保应用程序的功能符合规格说明书或需求文档中的规定。Apifox 是一个在线接口测试平台(但其实也有桌面端啦),它的主要目的是为了帮助测试人员快速创建和执行接口测试用例,验证接口的正确性和稳定性。通过使用 Apifox,...
            0 0 1011
            分享
          • 1. qa 是如何工作的,如何保证产品质量的?首先制定质量保证计划->根据过程清单和产品清单对组织级和项目级内容进行检查->不符合项记录在不符合项问题记录表中、反馈项目精力,跟踪问题知道问题解决->编写质量保证报告,反馈给公司领导2.你是如何进行组织级项目的检查?首先,明确组织级的角色有哪些?如 epg、cr、ot等,再针对每个角色的过程和产品进行检查EPG角色:根据《过程检查单》对EPG过程进行检查,EPG工作内容包括(过程管理)和(过程资产开发),查看改进过程是否按照《过程改进计划》进行,是否建立组织财富库,是否定期召开过程改进会议,是否编写《EPG月度报告》;[管理性能...
            0 0 3657
            分享
          •   综合南方都市报、香港金融管理局网站消息,在 10 月底举行的第九届香港金融科技周活动中,香港金融管理局总裁余伟文表示,为了打破支付障碍,香港金管局正与中国人民银行紧密合作,建立香港“转数快”(FPS)快速支付系统与内地网上银行支付系统(IBPS)之间的互联,将支持 7x24 小时、实时、小额跨境汇款,并可使用手机号码等账户识别代号转账。  “转数快”(FPS)即“快速支付系统”,是香港金管局在 2018 年推出的支付金融基建,由香港银行同业结算有限公司负责运作,在香港推行即时支付,全日 24 小时为消费者及商户提供零售支付服务。  余伟文指出,现在香港居民使用“转数快”,只需输入电话号码,...
            0 0 192
            分享
          •   当QA成为大型项目的QA owner时,那么测试方案就成为QA整个项目流程中的重要的工作指南。那测试方案中,要写些什么内容呢?希望这篇文章可以提供给你很好的思路。  ps: 每个人都有不同的理解,大家可以在评论区留言交流。  项目背景&文档  简要描述本次测试的项目背景 (目的:可以让其他人快速了解到项目的全貌,以及个人对项目背景的理解)  项目的prd链接  项目的技术方案链接  测试排期及人力投入  测试排期很重要,因为涉及到项目的上线时间,可以用日历表,可以用Excel、也可以用表格,方式不限制,主要是把测试阶段、每个模块、工期、人力投入描述清楚。  线下测试方案  项目开发...
            0 0 1034
            分享
          • 现在很多人,等不及。现在很多人,不想等。外面的广告更加夸张,我要的现在就要。真是chedan。搞什么假惺惺不懂都要付出时间。把时间这个变量狠狠地抛诸脑后,定会受到时间狠狠地鞭打,让你好好停下来,等等时间。等,本来就是行动计划的一部分。心里没数,就等不及;心里没底,就等不起;肚里没货,就等不了;胸中没有战略,就等不下。急,不是因为真的急,而是不知道该干嘛。一切尽在咫尺,不是所有的事情都尽在掌握。《孙子兵法》说先计算,看看自己有多少胜算的把握,算出来可胜,行啦,这个时候再动;算出来,把握不大,不要动,等到时机成熟的时候,再动;等到能动的时候再动。不到亮剑的时候,就摩拳擦掌,就“磨刀霍霍向猪羊”,也...
            1 1 905
            分享
      • 51testing软件测试圈微信