CN114257389A - 一种基于语法分析的反射型xss检测方法及装置 - Google Patents
一种基于语法分析的反射型xss检测方法及装置 Download PDFInfo
- Publication number
- CN114257389A CN114257389A CN202011000017.9A CN202011000017A CN114257389A CN 114257389 A CN114257389 A CN 114257389A CN 202011000017 A CN202011000017 A CN 202011000017A CN 114257389 A CN114257389 A CN 114257389A
- Authority
- CN
- China
- Prior art keywords
- type
- trigger point
- current website
- payload
- detection
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000001514 detection method Methods 0.000 title claims abstract description 140
- 230000004044 response Effects 0.000 claims abstract description 66
- 238000012795 verification Methods 0.000 claims abstract description 64
- 238000000034 method Methods 0.000 claims abstract description 59
- 239000000523 sample Substances 0.000 claims description 64
- 239000000203 mixture Substances 0.000 claims description 16
- 238000010200 validation analysis Methods 0.000 claims 2
- 230000008569 process Effects 0.000 description 10
- 238000012360 testing method Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 239000000126 substance Substances 0.000 description 4
- 238000011161 development Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 239000000243 solution Substances 0.000 description 3
- PCTMTFRHKVHKIS-BMFZQQSSSA-N (1s,3r,4e,6e,8e,10e,12e,14e,16e,18s,19r,20r,21s,25r,27r,30r,31r,33s,35r,37s,38r)-3-[(2r,3s,4s,5s,6r)-4-amino-3,5-dihydroxy-6-methyloxan-2-yl]oxy-19,25,27,30,31,33,35,37-octahydroxy-18,20,21-trimethyl-23-oxo-22,39-dioxabicyclo[33.3.1]nonatriaconta-4,6,8,10 Chemical group C1C=C2C[C@@H](OS(O)(=O)=O)CC[C@]2(C)[C@@H]2[C@@H]1[C@@H]1CC[C@H]([C@H](C)CCCC(C)C)[C@@]1(C)CC2.O[C@H]1[C@@H](N)[C@H](O)[C@@H](C)O[C@H]1O[C@H]1/C=C/C=C/C=C/C=C/C=C/C=C/C=C/[C@H](C)[C@@H](O)[C@@H](C)[C@H](C)OC(=O)C[C@H](O)C[C@H](O)CC[C@@H](O)[C@H](O)C[C@H](O)C[C@](O)(C[C@H](O)[C@H]2C(O)=O)O[C@H]2C1 PCTMTFRHKVHKIS-BMFZQQSSSA-N 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 235000014510 cooky Nutrition 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 230000003211 malignant effect Effects 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1433—Vulnerability analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/30—Semantic analysis
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1408—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
- H04L63/1416—Event detection, e.g. attack signature detection
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种基于语法分析的反射型XSS检测方法及装置,该方法包括:判断当前网站是否存在触发点;在当前网站存在触发点的情况下,获取与当前网站的第一网页响应源码对应的第一抽象语法树;基于第一抽象语法树,确定当前网站中触发点的类型与攻击路径;基于类型和所述攻击路径,生成验证性Payload,基于验证性Payload对当前网站进行反射型XSS检测。上述方法中,首先对当前网站进行预检测,在存在触发点的情况下,基于触发点的类型和攻击路径确定验证性Payload,基于验证性Payload进行反射型XSS检测,在存在触发点的情况下有针对性的选取Payload,不再需要枚举Payload,提高了检测效率。
Description
技术领域
本发明涉及攻击检测技术领域,尤其涉及一种基于语法分析的反射型XSS检测方法及装置。
背景技术
跨站脚本攻击XSS(Cross Site Scripting)指通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。攻击成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容。
反射型XSS一般出现在URL参数及网站搜索栏中,由于需要点击包含恶意代码的URL才可以触发,并且只能触发一次,所以也被称为“非持久性XSS”。每一种类型的XSS检测方式都不一样。
现在反射型XSS检测的方法都是通过收集各种恶意Payload,通过这些Payload构造恶意URL,发送给网站并根据网站的响应进行检测。使用这种检测方法纯属于枚举Payload,检出率完全依赖与Payload的数量。为了更高的检出率,就得收集更多的Payload。然而漏洞攻击姿势是一直在更新的。这就导致Payload库越来越大,在Payload库特别大的情况下,导致检测效率低下,且容易占据网站大部分资源,造成业务上的压力。
发明内容
有鉴于此,本发明提供了一种基于语法分析的反射型XSS检测方法及装置,用以解决现在反射型XSS检测的方法都是通过收集各种恶意Payload,通过这些Payload构造恶意URL,发送给网站并根据网站的响应进行检测。使用这种检测方法纯属于枚举Payload,检出率完全依赖与Payload的数量。为了更高的检出率,就得收集更多的Payload。然而漏洞攻击姿势是一直在更新的。这就导致Payload库越来越大,在Payload库特别大的情况下,导致检测效率低下,且容易占据网站大部分资源,造成业务上的压力的问题。具体方案如下:
一种基于语法分析的反射型XSS检测方法,包括:
对当前网站进行预探针检测判断所述当前网站是否存在触发点;
在所述当前网站存在触发点的情况下,获取与所述当前网站的第一网页响应源码对应的第一抽象语法树;
基于所述第一抽象语法树,确定所述当前网站中触发点的类型与攻击路径,其中,所述类型和所述攻击路径存在对应关系;
基于所述类型和所述攻击路径,生成验证性Payload,基于所述验证性Payload对所述当前网站进行反射型XSS检测,其中,所述验证性Payload至少为一个。
上述的方法,可选的,对当前网站进行预探针检测判断所述当前网站是否存在触发点,包括:
基于随机字符串和预设的检测探针代码生成检测探针;
将所述检测探针发送给所述当前网站,获取所述当前网站的第一网页响应源码;
在所述第一网页响应源码中包含的网页类型为HTML时,基于所述检测探针判断所述网页响应源码中是否存在触发点。
上述的方法,可选的,还包括:
在所述第一网页响应源码中存在触发点时,获取所述检测探针在所述第一网页响应源码中的符号组成;
基于所述符号组成,确定所述当前网站中存在的绕过方法。
上述的方法,可选的,基于所述第一抽象语法树,确定所述当前网站中触发点的类型与攻击路径,包括:
遍历所述第一抽象语法树的各个节点,将存在所述检测探针的节点作为触发点;
针对每一个触发点,获取该触发点的类型;
依据所述对应关系,确定预设所述类型对应的攻击路径。
上述的方法,可选的,基于所述类型和所述攻击路径,生成验证性Payload,基于所述验证性Payload对所述当前网站进行反射型XSS检测,包括:
基于所述类型、所述攻击路径和所述绕过方法,生成所述验证性Payload;
依据优先级顺序,发送所述验证性Payload,获取第二网页响应源码;
获取所述第二响应源码的第二抽象语法树;
遍历所述第二抽象语法树判断是否存在所述验证性Payload。
一种基于语法分析的反射型XSS检测装置,包括:
判断模块,英语对当前网站进行预探针检测判断所述当前网站是否存在触发点;
获取模块,用于在所述当前网站存在触发点的情况下,获取与所述当前网站的第一网页响应源码对应的第一抽象语法树;
确定模块,用于基于所述第一抽象语法树,确定所述当前网站中触发点的类型与攻击路径,其中,所述类型和所述攻击路径存在对应关系;
检测模块,用于基于所述类型和所述攻击路径,生成验证性Payload,基于所述验证性Payload对所述当前网站进行反射型XSS检测,其中,所述验证性Payload至少为一个。
上述的装置,可选的,所述判断模块包括:
探针生成单元,用于基于随机字符串和预设的检测探针代码生成检测探针;
第一获取单元,用于将所述检测探针发送给所述当前网站,获取所述当前网站的第一网页响应源码;
第一判断单元,用于在所述第一网页响应源码中包含的网页类型为HTML时,基于所述检测探针判断所述网页响应源码中是否存在触发点。
上述的装置,可选的,还包括:
第二获取单元,用于在所述第一网页响应源码中存在触发点时,获取所述检测探针在所述第一网页响应源码中的符号组成;
方法确定单元,用于基于所述符号组成,确定所述当前网站中存在的绕过方法。
上述的装置,可选的,所述确定模块包括:
触发点确定单元,遍历所述第一抽象语法树的各个节点,将存在所述检测探针的节点作为触发点;
第三获取单元,用于针对每一个触发点,获取该触发点的类型;
路径确定单元,用于依据所述对应关系,确定预设所述类型对应的攻击路径。
上述的装置,可选的,所述检测模块包括:
Payload生成单元,用于基于所述类型、所述攻击路径和所述绕过方法,生成所述验证性Payload;
发送和获取单元,用于依据优先级顺序,发送所述验证性Payload,获取第二网页响应源码;
第四获取单元,用于获取所述第二响应源码的第二抽象语法树;
第二判断单元,用于遍历所述第二抽象语法树判断是否存在所述验证性Payload。
与现有技术相比,本发明包括以下优点:
本发明公开了一种基于语法分析的反射型XSS检测方法及装置,该方法包括:对当前网站进行预探针检测判断所述当前网站是否存在触发点;在所述当前网站存在触发点的情况下,获取与所述当前网站的第一网页响应源码对应的第一抽象语法树;基于所述第一抽象语法树,确定所述当前网站中触发点的类型与攻击路径,其中,所述类型和所述攻击路径存在对应关系;基于所述类型和所述攻击路径,生成验证性Payload,基于所述验证性Payload对所述当前网站进行反射型XSS检测,其中,所述验证性Payload至少为一个。上述方法中,首先对当前网站进行预检测,在存在触发点的情况下,基于触发点的类型和攻击路径确定验证性Payload,基于验证性Payload进行反射型XSS检测,在存在触发点的情况下有针对性的选取Payload,不再需要枚举Payload,提高了检测效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例公开的一种基于语法分析的反射型XSS检测方法流程图;
图2为本申请实施例公开的一种基于语法分析的反射型XSS检测装置结构框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
本发明公开了一种基于语法分析的反射型XSS检测方法及装置,应用于对反射型XSS的检测过程中,现有技术中,随着web2.0技术的高速发展和互联网的大众化,web应用程序得到了广泛应用,以网上购物、社交网站等为代表的web技术在很大程度上正在改变人们工作和交流的方式。不过,这些新技术的发展,一方面使商业活动更加方便快捷的发展,但是与此同时也带来了机密信息泄漏、财产损失、账户被盗等严重安全隐患。web应用程序的漏洞也随之成为互联网上最严重的安全隐患之一,根据通用漏洞披露数据库统计数据,从1999年到2020年,漏洞库共收集XSS漏洞13381个,XSS漏洞数量排名第一,另外缓冲区溢出12861个,SQL注入漏洞5963个。在近几年的开放式web应用程序安全项目(OWASP)组织公布的漏洞危害排名中XSS漏洞常位居前三。
现在反射型XSS检测的方法都是通过收集各种恶意有效载荷Payload,通过这些Payload构造恶意URL,发送给网站并根据网站的响应进行检测。使用这种检测方法纯属于枚举Payload,检出率完全依赖与Payload的数量。为了更高的检出率,就得收集更多的Payload。然而漏洞攻击姿势是一直在更新的,其中,Payload在漏洞攻击通常会做一些有害的或者恶性的动作,在恶意代码中实现这个功能的部分叫做“有效载荷”。
当前反射型XSS检测的方法基本都是基于维护一个丰富的XSS Payload库,只有保证XSS Payload库的全面性和丰富性,才能保证检出率。通过直接匹配Payload(尽管使用更加完善的正则匹配)是否在网页中出现来判断是否存在漏洞很难保证误报率。
现有的检测过程中,由于当前检测方式是基于枚举Payload库,在Payload库特别大的情况下,导致检测效率低下,且容易占据网站大部分资源,造成业务上的压力。由于根据得到的网站响应进行规则匹配,但通过规则去匹配,匹配上了也无法保证恶意代码是真的执行了。会导致误报率较高。漏报率取决于Payload库的丰富性,但一般为了平衡检测效率,会牺牲漏报率。
也有其他检测的方法为结合静态分析与污点传播进行动态Fuzzing测试进行XSS检测。虽然使用了污点追踪技术,确实能减少大量的Payload,增加检测效率,但最终仍需要许多Payload进行模糊测试。
因此,本发明提供了一种基于语法分析的反射型XSS检测方法用于解决上述问题,所述方法的执行流程如图1所示,包括步骤:
S101、对当前网站进行预探针检测判断所述当前网站是否存在触发点;
本发明实施例中,探针检测指用一个简短的代码进行检测,对攻击点做一个初步的信息收集,依据经验或者具体的情况为探针检测编写预设的检测探针代码,本发明实施例中对所述预设的检测探针代码的存在形式不进行限定,针对每次预探针检测都会生成随机字符串,基于所述随机字符串,所述预设的监测探针代码并添加预设的符号组成检测探针,其中,所述预设的符号可以为双引号,尖括号等等,所述预设符号可以基于经验或者具体情况进行设定,本发明实施例中对所述预设符号的具体存在形式不进行限定。
基于所述检测探针,构建检测URL,构建过程如下:给定一个URL如:https://www.xxx.com?q=test,其中,参数q的参数值为test,探针分为两部分,固定的特殊标志字符+随机字符,假设固定字符为ABCD,随机字符为aet(每次生成都不一样),生成的检测探针为:aetABCDaet,随机字符的目的是用于快速定位探针位置。比如,固定字符或许被过滤了,那么我通过定位到aet的位置,则能快速找到ABCD的位置。生成检测探针后,替换原来的参数值,得到检测URL:https://www.xxx.com?q=aetABCDaet,将所述检测URL发送给所述当前网站,所述当前网站会对所述检测探针进行响应,获取所述当前网站的第一网页响应源码,获取所述第一网页响应源码中响应头的Content-Type,基于所述Content-Type判断所述当前网站的网页类型是否是HTML类型,简单来说就是HTTP请求获得目标服务器的返回,在该返回中会有明确的位置指明返回的内容为什么类型,如果是图片,则会说明这是一张图片,如果是HTML类型,则会说明这是一个HTML。在所述第一网页响应源码中包含的网页类型不是HTML时,退出检测,在所述第一网页响应源码中包含的网页类型是HTML时,基于所述检测探针判断所述网页响应源码中是否存在触发点,判断过程如下:遍历所述第一网页响应源码判断其中是否存在与所述检测探针中随机字符串相同的语句段,若存在,说明所述当前网站存在触发点,其中,所述触发点指检测探针在所述第一网页源码中出现的位置,若不存在,说明所述当前网站不存在触发点,代表无论使用何种Payload,都不会对所述当前网站造成影响。
进一步的,在所述第一网页响应源码中存在触发点时,获取所述检测探针在所述第一网页响应源码中的符号组成,将所述符号组成与所述检测探针中的初始符号组成进行比较,若两者相同,则不存在绕过方法,若两者不同,则所述符号组成相较于所述初始符号组成中缺少的符号对应的方法为所述当前网站中存在的绕过方法。例如:检测探针为一串随机的字符串并在前后位置加上一些特殊符号(如引号尖括号)。通常,网站或者Waf(Waf为应用防火墙)为了安全性,会过滤掉引号、尖括号等特殊符号。通过检查网页源码中随机字符串的前后位置,还剩下哪些特殊符号,如果检测探针中的特殊符号都不见了,则代表所有特殊符号都被过滤了,说明当前网站中存在与过滤掉的特殊符号对应的绕过方法,优选的,在进行后续反射型XSS检测时,不再检测对应的特殊符号,减少检测过程Payload的数量。
S102、获取与所述当前网站的第一网页响应源码对应的第一抽象语法树;
本发明实施例中,在所述当前网站存在触发点的情况下,对所述第一网页响应源码进行语法分析,其中,语法分析包括:根据语言的语法规则,判断程序在结构上是否正确,并且得到完成的语法结构。,由于每一门编程语言有其语法规则,根据语法规则可将程序代码转换为机器可执行的机器码。因此,会有对应的语法解析器,使用语法解析器能够对程序的语法规则以及结构进行判断是否符合规则,并且转换成相对于的语法结构。
所述语法结构指的是抽象语法树(Abstract Syntax Tree),简称AST,是源代码语法结构的一种抽象表示。它以树状的形式表现编程语言的语法结构,树上的每个节点都表示源代码中的一种结构。本发明实施例中,与所述第一网页响应源码对应的为第一抽象语法树。
S103、基于所述第一抽象语法树,确定所述当前网站中触发点的类型与攻击路径,其中,所述类型和所述攻击路径存在对应关系;
本发明实施例中,遍历所述第一抽象语法树的各个节点,将存在所述检测探针的节点作为触发点,其中,针对所述第一抽象语法树,所述触发点至少为一个,所述触发点中存储有其对应的类型,获取该触发点所属位置及类型,其中,所述类型包括:
(1)触发点为属性名
(2)触发点为属性值
(3)触发点在注释中
(4)触发点为Style标签内容
(5)触发点为Script标签内容
(6)触发点为除Style、Script标签以外的其他标签内容。
本发明实施例中,针对上述各个类型可根据细节再细分,如属性值是被单引号包裹,双引号包裹、或无引号包裹三种类型,优选的,预先针对每一种类型,会基于经验或者具体情况分配攻击路径,将类型和攻击路径建立关对应关系,其中,所述攻击路径中存在至少一种Payload。本发明实施例中,对所述攻击路径的具体存在形式不进行限定。
在确定了所述触发点类型后,依据所述对应关系,确定与所述类型对应的攻击路径。
S104、基于所述类型和所述攻击路径,生成验证性Payload,基于所述验证性Payload对所述当前网站进行反射型XSS检测,其中,所述验证性Payload至少为一个。
本发明实施例中,基于所述类型和所述攻击路径,生成验证性Payload,假设,所述类型包括:HTML_COMMENT(标签)、EVENT(事件型属性值)、URL(URL型属性值)、KEY(属性名),则对应的攻击路径为:
HTML_COMMENT:闭合标签-->恶意代码<ahref='javascript:${EVENT}'></a>
EVENT:闭合标签{$QUOTE}恶意代码prompt(65534)
URL:闭合标签{$QUOTE}恶意代码javascript:${EVENT}
KEY:闭合标签>恶意代码<script>${EVENT}</script>
其中,形如${**}均表示为不固定的值,不同的名称对应一组值
比如${QUOTE}代表‘(单引号)“(双引号)
另外,恶意代码也允许拥有多个,优选的,控制在5个之内,根据触发点的类型,获取攻击路径,根据攻击路径最后动态组合成验证性Payload。优选的,为了进步减少Payload,还可以基于所述类型、所述攻击路径和所述绕过方法生成验证性Payload、相较于基于所述类型和所述攻击路径直接生成验证性Payload,添加绕过方法后可以将生成的验证性Payload中与所述绕过方法相关的Payload过滤掉,进一步减少反射型XSS检测中Payload的数量。
进一步的,针对每一种类型,预先为其对应的攻击路径中的各个Payload确定优先级,优先级可以基于Payload在进行反射型XSS检测过程中反馈的网页源码的明显程度或者其它优选确定条件进行优先级确定,本发明实施例中,对所述优先级确定的具体方法不进行限定。
本发明实施例中,基于优先级顺序,发送所述验证性Payload,获取所述第二网页响应源码,所述验证性Payload包含一两个含恶意攻击代码的Payload,一个概念性验证的Payload(无恶意攻击代码)。目的是在于若网站使用了敏感代码检测,有可能导致包含恶意攻击代码的Payload不起作用,此时则可使用概念性验证的Payload进行验证。概念性验证Payload指的是不做任何恶意操作,只是尝试改变HTML结构,而含恶意攻击代码的Payload会尝试做无危害性的操作(如使用弹窗提示)。
对所述第二网页响应源码进行语法分析,确定与所述第二网页响应源码对应的第二抽象语法树,其中,所述第二抽象语法树的确定过程与所述第一抽象语法树的确定过程相同,在此不再赘述,体局优先级顺序,遍历所述第二抽象语法树,遍历所述第二抽象语法树中每一个节点,判断是否存在所述验证性Payload。如果所述第二抽象语法树中包含所述验证性Payload,则说明所述第二网页源码中已经包含所述验证Payload。说明所述当前网站存在漏洞,将漏洞检测结果输出,反之若所述第二抽象语法树中不包含所述验证性Payload,依据优先级顺序继续执行下一个验证性Payload。
本发明公开了一种基于语法分析的反射型XSS检测方法,包括:对当前网站进行预探针检测判断所述当前网站是否存在触发点;在所述当前网站存在触发点的情况下,获取与所述当前网站的第一网页响应源码对应的第一抽象语法树;基于所述第一抽象语法树,确定所述当前网站中触发点的类型与攻击路径,其中,所述类型和所述攻击路径存在对应关系;基于所述类型和所述攻击路径,生成验证性Payload,基于所述验证性Payload对所述当前网站进行反射型XSS检测,其中,所述验证性Payload至少为一个。上述方法中,首先对当前网站进行预检测,在存在触发点的情况下,基于触发点的类型和攻击路径确定验证性Payload,基于验证性Payload进行反射型XSS检测,在存在触发点的情况下有针对性的选取Payload,不再需要枚举Payload,提高了检测效率。
本发明所述方法可以实现大幅度提升检测效率。由于现在技术采用Fuzzingj技术进行漏洞检测,需要收集大量的Payload进行模糊测试,就会导致需要大量的请求网站,造成网站压力大及检测效率低。而本发明使用语法分析的技术动态生成Payload,最多仅需几条Playload即可确认一个攻击点是否存在漏洞。
本发明所述方法可以实现更高的检出率与更低的误报率。现有技术通过模糊测试拿到网站响应,然后对网站响应通过规则匹配的方法判断是否存在漏洞,而检出率与误报率取决于模糊测试的全面性以及规则的准确性。全面性与准确性靠规则去维护则较难保证效果,而本发明通过语法分析可针对网站响应进行构建抽象语法树,准确确认恶意代码是否正确插入网页中。
本发明所述方法通过先进行一次预探针检测,确认当前网站是否需要进一步分析,大量减少无效分析与检测过程。然后对网页源码进行语法分析,生成抽象语法树,找到HTML代码和Javascript代码中可能存在的反射型XSS漏洞的触发点,对关键节点进行特征提取和分拣,确认触发点的类型与攻击路径。基于上述的分析结果,动态生成相应类型与攻击路径的Payload,用尽可能少Payload,找到正确的漏洞存在点,实现自动化检测反射型XSS漏洞。
基于上述的一种基于语法分析的反射型XSS检测方法,本发明实施例中还提供了一种基于语法分析的反射型XSS检测装置,所述检测装置的结构框图如图2所示,包括:
判断模块201、获取模块202、确定模块203和检测模块204。
其中,
所述判断模块201,英语对当前网站进行预探针检测判断所述当前网站是否存在触发点;
所述获取模块202,用于在所述当前网站存在触发点的情况下,获取与所述当前网站的第一网页响应源码对应的第一抽象语法树;
所述确定模块203,用于基于所述第一抽象语法树,确定所述当前网站中触发点的类型与攻击路径,其中,所述类型和所述攻击路径存在对应关系;
所述检测模块204,用于基于所述类型和所述攻击路径,生成验证性Payload,基于所述验证性Payload对所述当前网站进行反射型XSS检测,其中,所述验证性Payload至少为一个。
本发明公开了一种基于语法分析的反射型XSS检测装置,包括:对当前网站进行预探针检测判断所述当前网站是否存在触发点;在所述当前网站存在触发点的情况下,获取与所述当前网站的第一网页响应源码对应的第一抽象语法树;基于所述第一抽象语法树,确定所述当前网站中触发点的类型与攻击路径,其中,所述类型和所述攻击路径存在对应关系;基于所述类型和所述攻击路径,生成验证性Payload,基于所述验证性Payload对所述当前网站进行反射型XSS检测,其中,所述验证性Payload至少为一个。上述装置中,首先对当前网站进行预检测,在存在触发点的情况下,基于触发点的类型和攻击路径确定验证性Payload,基于验证性Payload进行反射型XSS检测,在存在触发点的情况下有针对性的选取Payload,不再需要枚举Payload,提高了检测效率。
本发明实施例中,所述判断模块201包括:
探针生成单元、第一获取单元和第一判断单元。
其中,
所述探针生成单元,用于基于随机字符串和预设的检测探针代码生成检测探针;
所述第一获取单元,用于将所述检测探针发送给所述当前网站,获取所述当前网站的第一网页响应源码;
所述第一判断单元,用于在所述第一网页响应源码中包含的网页类型为HTML时,基于所述检测探针判断所述网页响应源码中是否存在触发点。
本发明实施例中,所述判断单元201还包括:
第二获取单元和方法确定单元。
其中,
所述第二获取单元,用于在所述第一网页响应源码中存在触发点时,获取所述检测探针在所述第一网页响应源码中的符号组成;
所述方法确定单元,用于基于所述符号组成,确定所述当前网站中存在的绕过方法。
本发明实施例中,所述确定模块203包括:
触发点确定单元、第三获取单元和路径确定单元。
其中,
所述触发点确定单元,遍历所述第一抽象语法树的各个节点,将存在所述检测探针的节点作为触发点;
所述第三获取单元,用于针对每一个触发点,获取该触发点的类型;
所述路径确定单元,用于依据所述对应关系,确定预设所述类型对应的攻击路径。
本发明实施例中,所述检测模块204包括:
Payload生成单元、发送和获取单元、第四获取单元和第二判断单元。
所述Payload生成单元,用于基于所述类型、所述攻击路径和所述绕过方法,生成所述验证性Payload;
所述发送和获取单元,用于依据优先级顺序,发送所述验证性Payload,获取第二网页响应源码;
所述第四获取单元,用于获取所述第二响应源码的第二抽象语法树;
所述第二判断单元,用于遍历所述第二抽象语法树判断是否存在所述验证性Payload。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本发明时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
以上对本发明所提供的一种基于语法分析的反射型XSS检测方法及装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (10)
1.一种基于语法分析的反射型XSS检测方法,其特征在于,包括:
对当前网站进行预探针检测判断所述当前网站是否存在触发点;
在所述当前网站存在触发点的情况下,获取与所述当前网站的第一网页响应源码对应的第一抽象语法树;
基于所述第一抽象语法树,确定所述当前网站中触发点的类型与攻击路径,其中,所述类型和所述攻击路径存在对应关系;
基于所述类型和所述攻击路径,生成验证性Payload,基于所述验证性Payload对所述当前网站进行反射型XSS检测,其中,所述验证性Payload至少为一个。
2.根据权利要求1所述的方法,其特征在于,对当前网站进行预探针检测判断所述当前网站是否存在触发点,包括:
基于随机字符串和预设的检测探针代码生成检测探针;
将所述检测探针发送给所述当前网站,获取所述当前网站的第一网页响应源码;
在所述第一网页响应源码中包含的网页类型为HTML时,基于所述检测探针判断所述网页响应源码中是否存在触发点。
3.根据权利要求2所述的方法,其特征在于,还包括:
在所述第一网页响应源码中存在触发点时,获取所述检测探针在所述第一网页响应源码中的符号组成;
基于所述符号组成,确定所述当前网站中存在的绕过方法。
4.根据权利要求1所述的方法,其特征在于,基于所述第一抽象语法树,确定所述当前网站中触发点的类型与攻击路径,包括:
遍历所述第一抽象语法树的各个节点,将存在所述检测探针的节点作为触发点;
针对每一个触发点,获取该触发点的类型;
依据所述对应关系,确定预设所述类型对应的攻击路径。
5.根据权利要求3所述的方法,其特征在于,基于所述类型和所述攻击路径,生成验证性Payload,基于所述验证性Payload对所述当前网站进行反射型XSS检测,包括:
基于所述类型、所述攻击路径和所述绕过方法,生成所述验证性Payload;
依据优先级顺序,发送所述验证性Payload,获取第二网页响应源码;
获取所述第二响应源码的第二抽象语法树;
遍历所述第二抽象语法树判断是否存在所述验证性Payload。
6.一种基于语法分析的反射型XSS检测装置,其特征在于,包括:
判断模块,英语对当前网站进行预探针检测判断所述当前网站是否存在触发点;
获取模块,用于在所述当前网站存在触发点的情况下,获取与所述当前网站的第一网页响应源码对应的第一抽象语法树;
确定模块,用于基于所述第一抽象语法树,确定所述当前网站中触发点的类型与攻击路径,其中,所述类型和所述攻击路径存在对应关系;
检测模块,用于基于所述类型和所述攻击路径,生成验证性Payload,基于所述验证性Payload对所述当前网站进行反射型XSS检测,其中,所述验证性Payload至少为一个。
7.根据权利要求6所述的装置,其特征在于,所述判断模块包括:
探针生成单元,用于基于随机字符串和预设的检测探针代码生成检测探针;
第一获取单元,用于将所述检测探针发送给所述当前网站,获取所述当前网站的第一网页响应源码;
第一判断单元,用于在所述第一网页响应源码中包含的网页类型为HTML时,基于所述检测探针判断所述网页响应源码中是否存在触发点。
8.根据权利要求7所述的装置,其特征在于,还包括:
第二获取单元,用于在所述第一网页响应源码中存在触发点时,获取所述检测探针在所述第一网页响应源码中的符号组成;
方法确定单元,用于基于所述符号组成,确定所述当前网站中存在的绕过方法。
9.根据权利要求6所述的装置,其特征在于,所述确定模块包括:
触发点确定单元,遍历所述第一抽象语法树的各个节点,将存在所述检测探针的节点作为触发点;
第三获取单元,用于针对每一个触发点,获取该触发点的类型;
路径确定单元,用于依据所述对应关系,确定预设所述类型对应的攻击路径。
10.根据权利要求8所述的装置,其特征在于,所述检测模块包括:
Payload生成单元,用于基于所述类型、所述攻击路径和所述绕过方法,生成所述验证性Payload;
发送和获取单元,用于依据优先级顺序,发送所述验证性Payload,获取第二网页响应源码;
第四获取单元,用于获取所述第二响应源码的第二抽象语法树;
第二判断单元,用于遍历所述第二抽象语法树判断是否存在所述验证性Payload。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011000017.9A CN114257389A (zh) | 2020-09-22 | 2020-09-22 | 一种基于语法分析的反射型xss检测方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011000017.9A CN114257389A (zh) | 2020-09-22 | 2020-09-22 | 一种基于语法分析的反射型xss检测方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114257389A true CN114257389A (zh) | 2022-03-29 |
Family
ID=80788388
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011000017.9A Pending CN114257389A (zh) | 2020-09-22 | 2020-09-22 | 一种基于语法分析的反射型xss检测方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114257389A (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103455759A (zh) * | 2012-06-05 | 2013-12-18 | 深圳市腾讯计算机系统有限公司 | 一种页面漏洞检测装置及检测方法 |
CN104462981A (zh) * | 2013-09-12 | 2015-03-25 | 深圳市腾讯计算机系统有限公司 | 漏洞检测方法及装置 |
US20160110547A1 (en) * | 2014-10-21 | 2016-04-21 | Veracode, Inc. | Systems and methods for analysis of cross-site scripting vulnerabilities |
CN108769081A (zh) * | 2018-07-11 | 2018-11-06 | 中国人民解放军国防科技大学 | 一种检测xss攻击的方法、装置及计算机可读存储介质 |
CN109218284A (zh) * | 2018-07-24 | 2019-01-15 | 百度在线网络技术(北京)有限公司 | Xss漏洞检测方法及装置、计算机设备及可读介质 |
CN109462583A (zh) * | 2018-10-31 | 2019-03-12 | 南京邮电大学 | 一种基于静态和动态相结合的反射型漏洞检测方法 |
CN109933980A (zh) * | 2019-02-28 | 2019-06-25 | 北京长亭科技有限公司 | 一种漏洞扫描方法、装置和电子设备 |
CN110113311A (zh) * | 2019-03-05 | 2019-08-09 | 北京丁牛科技有限公司 | 跨站脚本攻击xss漏洞检测方法及装置 |
US20200137084A1 (en) * | 2018-10-25 | 2020-04-30 | EMC IP Holding Company LLC | Protecting against and learning attack vectors on web artifacts |
CN111294345A (zh) * | 2020-01-20 | 2020-06-16 | 支付宝(杭州)信息技术有限公司 | 一种漏洞检测方法、装置及设备 |
-
2020
- 2020-09-22 CN CN202011000017.9A patent/CN114257389A/zh active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103455759A (zh) * | 2012-06-05 | 2013-12-18 | 深圳市腾讯计算机系统有限公司 | 一种页面漏洞检测装置及检测方法 |
CN104462981A (zh) * | 2013-09-12 | 2015-03-25 | 深圳市腾讯计算机系统有限公司 | 漏洞检测方法及装置 |
US20160110547A1 (en) * | 2014-10-21 | 2016-04-21 | Veracode, Inc. | Systems and methods for analysis of cross-site scripting vulnerabilities |
CN108769081A (zh) * | 2018-07-11 | 2018-11-06 | 中国人民解放军国防科技大学 | 一种检测xss攻击的方法、装置及计算机可读存储介质 |
CN109218284A (zh) * | 2018-07-24 | 2019-01-15 | 百度在线网络技术(北京)有限公司 | Xss漏洞检测方法及装置、计算机设备及可读介质 |
US20200137084A1 (en) * | 2018-10-25 | 2020-04-30 | EMC IP Holding Company LLC | Protecting against and learning attack vectors on web artifacts |
CN109462583A (zh) * | 2018-10-31 | 2019-03-12 | 南京邮电大学 | 一种基于静态和动态相结合的反射型漏洞检测方法 |
CN109933980A (zh) * | 2019-02-28 | 2019-06-25 | 北京长亭科技有限公司 | 一种漏洞扫描方法、装置和电子设备 |
CN110113311A (zh) * | 2019-03-05 | 2019-08-09 | 北京丁牛科技有限公司 | 跨站脚本攻击xss漏洞检测方法及装置 |
CN111294345A (zh) * | 2020-01-20 | 2020-06-16 | 支付宝(杭州)信息技术有限公司 | 一种漏洞检测方法、装置及设备 |
Non-Patent Citations (3)
Title |
---|
王优楠: "一种XSS漏洞灰盒检测方案的设计与实现", 中国优秀硕士学位论文全文数据库 * |
谷家腾;辛阳;: "基于动态分析的XSS漏洞检测模型", 计算机工程, no. 10 * |
麻荣宽;魏强;武泽慧;: "PHP程序污点型漏洞静态检测方法", 计算机工程与应用, no. 01 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8201259B2 (en) | Method for evaluating and accessing a network address | |
CN103888490B (zh) | 一种全自动的web客户端人机识别的方法 | |
US9032516B2 (en) | System and method for detecting malicious script | |
CN101964025B (zh) | Xss检测方法和设备 | |
US8943588B1 (en) | Detecting unauthorized websites | |
CN109462583B (zh) | 一种基于静态和动态相结合的反射型漏洞检测方法 | |
CN106789939B (zh) | 一种钓鱼网站检测方法和装置 | |
Parameshwaran et al. | DexterJS: Robust testing platform for DOM-based XSS vulnerabilities | |
CN107832622B (zh) | 漏洞检测方法、装置、计算机设备及存储介质 | |
US8407766B1 (en) | Method and apparatus for monitoring sensitive data on a computer network | |
CN105868290B (zh) | 一种展现搜索结果的方法及装置 | |
CN106022132A (zh) | 一种基于动态内容分析的网页木马实时检测方法 | |
CN113518077A (zh) | 一种恶意网络爬虫检测方法、装置、设备及存储介质 | |
CN112989348B (zh) | 攻击检测方法、模型训练方法、装置、服务器及存储介质 | |
CN105488400A (zh) | 一种恶意网页综合检测方法及系统 | |
CN113961930A (zh) | Sql注入漏洞检测方法、装置及电子设备 | |
CN107103243B (zh) | 漏洞的检测方法及装置 | |
CN104023025A (zh) | 基于业务规则的网站安全漏洞检测方法及装置 | |
CN114491560A (zh) | 一种漏洞检测方法、装置、存储介质及电子设备 | |
CN110719344B (zh) | 域名获取方法、装置、电子设备及存储介质 | |
CN107026854A (zh) | 漏洞验证方法及装置 | |
CN103581321A (zh) | 一种refer链的创建方法、装置及安全检测方法和客户端 | |
CN108200191B (zh) | 利用微扰法的客户端动态url相关脚本字符串检测系统 | |
CN114257389A (zh) | 一种基于语法分析的反射型xss检测方法及装置 | |
CN110032872A (zh) | 一种业务逻辑漏洞检测方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20231117 Address after: Room 301, building 1, No. 5, Xiaguangli, Chaoyang District, Beijing 100027 Applicant after: Beijing keynote Network Inc. Address before: 100085 1-312-338, floor 3, building 1, courtyard 35, Shangdi East Road, Haidian District, Beijing Applicant before: Beijing safety consensus Technology Co.,Ltd. |
|
TA01 | Transfer of patent application right |