CN108846286A - 跨站脚本漏洞检测方法及装置 - Google Patents
跨站脚本漏洞检测方法及装置 Download PDFInfo
- Publication number
- CN108846286A CN108846286A CN201810645614.3A CN201810645614A CN108846286A CN 108846286 A CN108846286 A CN 108846286A CN 201810645614 A CN201810645614 A CN 201810645614A CN 108846286 A CN108846286 A CN 108846286A
- Authority
- CN
- China
- Prior art keywords
- address
- page
- detection
- node
- site scripting
- 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 215
- 230000001960 triggered effect Effects 0.000 claims abstract description 43
- 238000004088 simulation Methods 0.000 claims abstract description 23
- 230000003993 interaction Effects 0.000 claims abstract description 13
- 238000000034 method Methods 0.000 claims description 44
- 238000013515 script Methods 0.000 claims description 30
- 238000009795 derivation Methods 0.000 claims description 21
- 238000012545 processing Methods 0.000 claims description 12
- 238000004590 computer program Methods 0.000 claims description 7
- 230000006399 behavior Effects 0.000 description 43
- 230000006870 function Effects 0.000 description 15
- 238000010586 diagram Methods 0.000 description 13
- 238000002347 injection Methods 0.000 description 9
- 239000007924 injection Substances 0.000 description 9
- 238000010276 construction Methods 0.000 description 8
- 238000001914 filtration Methods 0.000 description 8
- 238000012360 testing method Methods 0.000 description 8
- 238000004458 analytical method Methods 0.000 description 6
- 230000008859 change Effects 0.000 description 6
- 230000006854 communication Effects 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 238000007689 inspection Methods 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000006855 networking Effects 0.000 description 4
- 230000004044 response Effects 0.000 description 4
- 239000000243 solution Substances 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 230000014509 gene expression Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 230000005611 electricity Effects 0.000 description 2
- 230000005291 magnetic effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 235000014347 soups Nutrition 0.000 description 2
- 241000239223 Arachnida Species 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 230000003044 adaptive effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 235000014510 cooky Nutrition 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 238000002372 labelling Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000003014 reinforcing effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明涉及一种跨站脚本漏洞检测方法及装置,属于网络安全技术领域。所述跨站脚本漏洞检测方法包括:将一目标站点的起始地址以及派生地址作为待访问地址;在浏览器模拟环境下加载所述待访问地址,获取第一检测页面;通过模拟浏览器行为触发所述第一检测页面中具有交互属性的目标元素节点,得到第二检测页面;获取各所述第一检测页面和第二检测页面中的注入点;以及检测各所述注入点是否存在跨站脚本漏洞。本发明可以减少跨站脚本漏洞的误报和漏报。
Description
技术领域
本发明涉及网络安全技术领域,具体而言,涉及一种跨站脚本漏洞检测方法、跨站脚本漏洞检测装置、电子设备以及计算机可读存储介质。
背景技术
随着互联网的高速发展,面向互联网的业务越来越多,保证互联网业务的安全性也越来越重要。例如,在网络应用中,如果存在XSS(Cross Site Scripting,跨站脚本)漏洞,则攻击者可能会将通过跨站脚本漏洞将恶意代码注入到页面中;当客户端用户浏览该页面时,恶意代码会被浏览器自动解析执行,达到挂马、钓鱼、盗取用户Cookie、劫持用户浏览行为等目的。因此,进行跨站脚本漏洞检测是非常必要的。
现有的跨站脚本漏洞检测方案中,一般是通过静态分析的方式进行跨站脚本漏洞判断。这种检测方式能够对一些逻辑简单的网站进行跨站脚本漏洞检测,并获得可以接受的测试效果。但是随着网络应用技术的日渐复杂,这种检测方式开始出现越来越多的误报、漏报情况。
因此,需要提供一种新的跨站脚本漏洞检测方法,以提升跨站脚本漏洞检测的准确性,有效减少漏洞误报和漏报的情况。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本发明的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本发明的目的在于提供一种跨站脚本漏洞检测方法、跨站脚本漏洞检测装置、电子设备及计算机可读存储介质,进而至少在一定程度上克服由于相关技术的限制和缺陷而导致的跨站脚本漏洞误报和漏报的问题。
根据本发明的第一方面,提供一种跨站脚本漏洞检测方法,包括:
将一目标站点的起始地址以及派生地址作为待访问地址;
在浏览器模拟环境下加载所述待访问地址,获取第一检测页面;
通过模拟浏览器行为触发所述第一检测页面中的目标元素节点,得到第二检测页面;
获取各所述第一检测页面和第二检测页面中的注入点;
检测各所述注入点是否存在跨站脚本漏洞。
在本发明的一种示例性实施例中,所述目标元素节点包括所述第一检测页面中具有交互属性的元素节点。
在本发明的一种示例性实施例中,所述在浏览器模拟环境下加载待访问地址包括:
通过无头浏览器加载所述待访问地址。
在本发明的一种示例性实施例中,所述第二检测页面为所述第一检测页面执行页面中的脚本或者加载页面中的AJAX方法后得到页面。
在本发明的一种示例性实施例中,所述通过模拟浏览器行为触发所述第一检测页面中的目标元素节点,包括:
获取所述第一检测页面中的目标元素节点并添加至元素节点列表;
判断所述元素节点列表中是否存在未触发过的元素节点;
如果所述元素节点列表中存在未触发过的元素节点,将一所述未过触发的元素节点作为待触发元素节点;以及
通过模拟浏览器行为触发所述待触发元素节点。
在本发明的一种示例性实施例中,所述方法还包括:
判断所述第二检测页面相比于所述第一检测页面是否出现新的目标元素节点;
如果所述第二检测页面相比于所述第一检测页面出现新的目标节点,将所述新的目标元素节点加入至所述元素节点列表。
在本发明的一种示例性实施例中,所述在浏览器模拟环境下加载所述待访问地址,包括:
将所述目标站点的起始地址以及派生地址加入地址列表;
判断所述地址列表中是否存在未加载过的待访问地址;
如果所述地址列表中存在未加载过的待访问地址,将一未加载过的所述待访问地址作为待加载地址;以及
在浏览器模拟环境下加载所述待加载地址。
在本发明的一种示例性实施例中,所述将所述目标站点的起始地址以及派生地址加入地址列表,包括:
将所述目标站点的起始地址加入至所述地址列表;以及
获取所述第一检测页面中的派生地址并加入至所述地址列表。
在本发明的一种示例性实施例中,所述将所述目标站点的起始地址以及派生地址加入地址列表,包括:
判断所述第二检测页面相对于所述第一检测页面是否发生页面跳转;
如果所述第二检测页面相对于所述第一检测页面发生页面跳转,将所述第二检测页面的地址加入至所述地址列表。
在本发明的一种示例性实施例中,所述方法还包括:
对所述地址列表进行相似地址去重处理。
在本发明的一种示例性实施例中,所述检测各所述注入点是否存在跨站脚本漏洞,包括:
获取攻击载荷;
向所述注入点注入所述攻击载荷并构造请求数据包,以及将所述请求数据包提交至预设服务器;以及
根据所述预设服务器的反馈信息判断所述注入点是否存在跨站脚本漏洞。
根据本发明的第二方面,提供一种跨站脚本漏洞检测装置,包括:
地址获取模块,用于将一目标站点的起始地址以及派生地址作为待访问地址;
页面加载模块,用于在浏览器模拟环境下加载所述待访问地址,获取第一检测页面;
行为模拟模块,用于通过模拟浏览器行为触发所述第一检测页面中的目标元素节点,得到第二检测页面;
注入点获取模块,用于获取各所述第一检测页面和第二检测页面中的注入点;
漏洞检测模块,用于检测各所述注入点是否存在跨站脚本漏洞。
在本发明的一种示例性实施例中,所述目标元素节点包括所述第一检测页面中具有交互属性的元素节点。
在本发明的一种示例性实施例中,所述在浏览器模拟环境下加载待访问地址包括:
通过无头浏览器加载所述待访问地址。
在本发明的一种示例性实施例中,所述第二检测页面为所述第一检测页面执行页面中的脚本或者加载页面中的AJAX方法后得到页面。
在本发明的一种示例性实施例中,所述行为模拟模块包括:
元素节点获取单元,用于获取所述第一检测页面中的目标元素节点并添加至元素节点列表;
触发判断单元,用于在所述元素节点列表中存在未触发过的元素节点时,将一所述未过触发的元素节点作为待触发元素节点;以及
行为模拟单元,用于通过模拟浏览器行为触发所述待触发元素节点。
在本发明的一种示例性实施例中,所述元素节点获取单元还用于,在所述第二检测页面相比于所述第一检测页面出现新的目标节点时,将所述新的目标元素节点加入至所述元素节点列表。
在本发明的一种示例性实施例中,所述页面加载模块包括:
地址获取单元,用于将所述目标站点的起始地址以及派生地址加入地址列表;
访问判断单元,用于在所述地址列表中存在未加载过的待访问地址时,将一未加载过的所述待访问地址作为待加载地址;以及
页面加载单元,用于在浏览器模拟环境下加载所述待加载地址。
在本发明的一种示例性实施例中,所述将所述目标站点的起始地址以及派生地址加入地址列表,包括:
将所述目标站点的起始地址加入至所述地址列表;以及
获取所述第一检测页面中的派生地址并加入至所述地址列表。
在本发明的一种示例性实施例中,所述将所述目标站点的起始地址以及派生地址加入地址列表,包括:
判断所述第二检测页面相对于所述第一检测页面是否发生页面跳转;
如果所述第二检测页面相对于所述第一检测页面发生页面跳转,将所述第二检测页面的地址加入至所述地址列表。
在本发明的一种示例性实施例中,所述页面加载模块还包括:
数据清洗单元,用于对所述地址列表进行相似地址去重处理。
在本发明的一种示例性实施例中,所述漏洞检测模块包括:
攻击载荷获取单元,用于获取攻击载荷;
攻击载荷注入单元,用于向所述注入点注入所述攻击载荷并构造请求数据包,以及将所述请求数据包提交至预设服务器;以及
漏洞判断单元,用于根据所述预设服务器的反馈信息判断所述注入点是否存在跨站脚本漏洞。
根据本发明的第三方面,提供一种电子设备,包括:处理器;以及存储器,用于存储所述处理器的可执行指令;其中,所述处理器配置为经由执行所述可执行指令来执行上述任意一项所述的方法。
根据本发明的第四方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一项所述的方法。
本发明示例性实施例可以具有以下有益效果:
本发明示例实施方式的跨站脚本漏洞检测方法中,在获取待访问地址后,通过在浏览器模拟环境下加载待访问地址,获取第一检测页面,并通过模拟浏览器行为触发第一检测页面中具有交互属性的目标元素节点,得到第二检测页面。这样,通过模拟真实的浏览器环境以及浏览器行为触发第一检测页面中的目标元素节点,可以得到的元素节点发生改变的第二检测页面或者发生页面跳转的第二检测页面;因而相比于现有技术可以更进一步在第二检测页面获取新的注入点,进而可以提高跨站脚本漏洞检测的广度和深度,提升跨站脚本漏洞检测的准确性,有效减少跨站脚本漏洞误报和漏报的情况,进而可以提升网络应用的安全性。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了可以应用本发明实施例的一种跨站脚本漏洞检测方法及装置的示例性***架构的示意图;
图2示出了适于用来实现本发明实施例的电子设备的计算机***的结构示意图;
图3示意性示出了根据本发明的一个实施例的跨站脚本漏洞检测方法的流程图;
图4示意性示出了根据本发明的一个实施例中加载第一检测页面的流程图;
图5示意性示出了根据本发明的一个实施例中触发第二检测页面的流程图;
图6示意性示出了根据本发明的一个实施例中加载第一检测页面以及触发第二检测页面的整体流程图;
图7示意性示出了根据本发明的注入点检测步骤的流程图;
图8示意性示出了根据本发明的一个实施例的跨站脚本漏洞检测方法的流程图;
图9示意性示出了根据本发明的一个实施例的跨站脚本漏洞检测装置的框图;
图10示意性示出了根据本发明的一个实施例的行为模拟模块的框图;
图11示意性示出了根据本发明的一个实施例的页面加载模块的框图;
图12示意性示出了根据本发明的一个实施例的漏洞检测模块的框图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本发明将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。在下面的描述中,提供许多具体细节从而给出对本发明的实施方式的充分理解。然而,本领域技术人员将意识到,可以实践本发明的技术方案而省略所述特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知技术方案以避免喧宾夺主而使得本发明的各方面变得模糊。
此外,附图仅为本发明的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
图1示出了可以应用本发明实施例的一种跨站脚本漏洞检测方法及装置的示例性应用环境的***架构的示意图。
如图1所示,***架构100可以包括终端设备101、102、103中的一个或多个,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。终端设备101、102、103可以是具有显示屏的各种电子设备,包括但不限于台式计算机、便携式计算机、智能手机和平板电脑等等。应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。比如服务器105可以是多个服务器组成的服务器集群等。
本发明实施例所提供的跨站脚本漏洞检测方法一般由终端设备101、102、103执行,相应地,跨站脚本漏洞检测装置一般设置于终端设备101、102、103中。但本领域技术人员容易理解的是,本发明实施例所提供的跨站脚本漏洞方法也可以由服务器105执行,相应的,跨站脚本漏洞检测装置也可以设置于服务器105中,本示例性实施例中对此不做特殊限定。
图2示出了适于用来实现本发明实施例的电子设备的计算机***的结构示意图。
需要说明的是,图2示出的电子设备的计算机***200仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图2所示,计算机***200包括中央处理单元(CPU)201,其可以根据存储在只读存储器(ROM)202中的程序或者从存储部分208加载到随机访问存储器(RAM)203中的程序而执行各种适当的动作和处理。在RAM 203中,还存储有***操作所需的各种程序和数据。CPU201、ROM 202以及RAM 203通过总线204彼此相连。输入/输出(I/O)接口205也连接至总线204。
以下部件连接至I/O接口205:包括键盘、鼠标等的输入部分206;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分207;包括硬盘等的存储部分208;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分209。通信部分209经由诸如因特网的网络执行通信处理。驱动器210也根据需要连接至I/O接口205。可拆卸介质211,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器210上,以便于从其上读出的计算机程序根据需要被安装入存储部分208。
特别地,根据本发明的实施例,下文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分209从网络上被下载和安装,和/或从可拆卸介质211被安装。在该计算机程序被中央处理单元(CPU)201执行时,执行本申请的方法和装置中限定的各种功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元也可以设置在处理器中。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定。
作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该电子设备执行时,使得该电子设备实现如下述实施例中所述的方法。例如,所述的电子设备可以实现如图3~图7所示的各个步骤等。
以下对本发明实施例的技术方案进行详细阐述:
相关技术中,一般是通过静态分析的方式进行跨站脚本漏洞检测。例如,首先获取目标站点的目录结构、对各个页面的源代码进行静态解析,将其中的表单信息提取出来;然后构建规则库,利用规则对源代码进行文本匹配以达到寻找注入点的目的。然后,找到注入点后,构建攻击载荷库,并在向服务器发送请求时带上攻击载荷;在服务器返回数据后,通过分析服务器返回的数据是否符合某些规则来判断是否存在跨站脚本漏洞。但由于浏览器对页面进行渲染的过程非常复杂,整个页面是一个动态的环境,静态分析的方式很难模拟真实的浏览器环境,非常容易遗漏待检测页面,进而存在大量误报漏报的情况。
基于上述问题,本示例实施方式首先提供了一种跨站脚本漏洞检测方法。参考图3所示,该方法可以包括以下步骤:
步骤S310.将一目标站点的起始地址以及派生地址作为待访问地址。
本示例实施方式中,目标站点即待检测网络站点;对于动态网络站点而言,通过访问其起始地址,可以加载起始HTML页面;通过分析HTML页面的内容,运用相关算法可以找到新的网络地址,这些新的网络地址即派生地址;同时,如果后续触发JavaScrip等脚本或加载Ajax方法得到的新的网络地址,同样属于目标站点的派生地址。例如,www.xxx.c om为某站点起始地址,www.xxx.com/index.html为直接解析www.xxx.co m对应的页面得到的派生地址,www.xxx.com/custom.jsp为触发第一页面中的JavaScrip脚本后得到的派生地址。目标站点的起始地址可以直接得到,目标站点的派生地址可以结合网络爬虫等方式得到,本示例性实施例中对此不做特殊限定。
步骤S320.在浏览器模拟环境下加载所述待访问地址,获取第一检测页面。
对于动态页面而言,其很多内容需要通过用户操作,如打开浏览器、点击某个按钮、进行指定交互等,触发浏览器解析JavaScript或加载Ajax方法才能生成。本示例实施方式中,在浏览器模拟环境下加载所述待访问地址,即模拟用户在浏览器中打开所述待访问地址的操作,进而得到第一检测页面。由于无头浏览器能够模拟真实的浏览器使用场景,因此,本示例实施方式中,所述浏览器模拟环境可以通过无头浏览器提供。相比于真实浏览器,无头浏览器运行速度更快且可以在无界面的服务器运行测试,同时由于不存在外界干扰,也更加稳定;此外,还可以在一台设备上模拟运行多个无头浏览器,方便进行并发测试。
步骤S330.通过模拟浏览器行为触发所述第一检测页面中具有交互属性的目标元素节点,得到第二检测页面。
本示例实施方式中,在上述浏览器模拟环境下,可以模拟浏览器行为。例如,基于上述无头浏览器,用户可以通过脚本等方式来模拟执行如打开浏览器、点击某个按钮、进行指定交互等浏览器行为。如果第一检测页面上存在具有交互属性的目标元素节点,通过模拟上述浏览器行为触发上述目标元素节点,则可以触发第一检测页面中的脚本被执行或者触发第一检测页面中的AJAX(Asynchronous JavaScript and XML,异步JavaScript和XML)方法被加载等。在第一检测页面中的脚本被执行或者第一检测页面中的AJAX方法被加载后,则可能产生元素节点的改变或者页面的跳转,得到第二检测页面。
步骤S340.获取各所述第一检测页面和第二检测页面中的注入点。
本示例实施方式中,注入点是指可以进行代码注入的地方,即通常是漏洞可以利用的地方。举例而言,在使用浏览器浏览页面的时候,用户与页面两者交互的地方主要是在于页面的form表单之中。form表单的输入主要是存在input标签中,input标签一般拥有3个属性参数:name、value和type。进而,可以通过采用正则表达式等方式在第一检测页面和第二检测页面查找form表单以及form表单的上述属性参数作为注入点信息;当然,本领域技术人员容易理解的是,所述注入点也可以为其他类型的注入点,查找的注入点的方式也不局限于正则表达式,本示例性实施例中对此不做特殊限定。此外,本示例实施方式中可以是在所述第一检测页面和第二检测页面加载后即获取其中的注入点;也可以是在通过各步骤获取了目标站点的起始地址以及所有的派生地址之后,再在重新加载各地址得到的页面中获取注入点,本示例性实施例中对此同样不做特殊限定。
步骤S350.检测各所述注入点是否存在跨站脚本漏洞。
在获取注入点之后,则可以通过模拟跨站脚本攻击等方式检测注入点是否存在跨站脚本漏洞。例如,通过将事先准备的攻击载荷(Payload)注入注入点构造请求数据包,在请求数据包构造完成后,可以使用HTTP的get请求或post请求向预设服务器(即目标站点相关联的服务器)发送请求。当发送完请求之后,会收到预设服务器返回的响应,分析这个响应即可判断该注入点是否存在跨站脚本漏洞。当然,在本发明的其他示例性实施例中,也可以通过其他方式检测各所述注入点是否存在跨站脚本漏洞,这同样属于本发明的保护范围。
本发明示例实施方式的跨站脚本漏洞检测方法中,通过模拟真实的浏览器环境以及浏览器行为触发第一检测页面中的目标元素节点,可以得到的元素节点发生改变的第二检测页面或者发生页面跳转的第二检测页面;因而相比于现有技术可以更进一步在第二检测页面获取新的注入点,进而可以提高跨站脚本漏洞检测的广度和深度,提升跨站脚本漏洞检测的准确性,有效减少跨站脚本漏洞误报和漏报的情况,进而可以提升网络应用的安全性。
下面,结合图4至图7对于本示例实施方式的上述步骤进行更加详细的说明。
参考图4所示,本示例实施方式中,上述步骤310可以包括步骤S410以及步骤S450;上述步骤320可以包括步骤S420、步骤S430、步骤S440以及步骤S460;具体而言:
在步骤S410中,将所述目标站点的起始地址加入至地址列表。例如,目标站点的起始地址为http://www.xxx.com,则将http://www.xxx.com加入至地址列表URL_List。
在步骤S420中,判断所述地址列表中是否存在未加载过的待访问地址。本示例实施方式中,可以将被加载过的待访问地址移动到另一列表中,例如移动到地址列表URL_List_Visit,从而便于判断所述地址列表中是否存在未加载过的待访问地址。当然,也可以通过其他方式辅助判断所述地址列表中是否存在未加载过的待访问地址;例如对地址列表中已经被加载过的待访问地址进行标记等;本示例性实施例中对此不做特殊限定。
在步骤S430中,如果判断所述地址列表中存在未加载过的待访问地址,则将一未加载过的所述待访问地址作为待加载地址。举例而言,可以是依次选择未加载过的所述待访问地址作为待加载地址,也可以是随机选择或者按照其他规则选择未加载过的所述待访问地址作为待加载地址,本示例性实施例中对此不做特殊限定。
在步骤S440中,在浏览器模拟环境下加载所述待加载地址。如上述步骤S320所述,本示例实施方式中,可以通过无头浏览器加载所述待加载地址。具体而言,所述无头浏览器例如可以是基于Webkit的PhantomJS、Splash,基于Gecko的SlimerJS,基于Rhnio的HtmlUnit,基于Trident的TrifleJS等等,本示例性实施例中对此不做特殊限定。
在步骤S450中,获取所述第一检测页面中的派生地址并加入至所述地址列表。
举例而言,在浏览器模拟环境下加载所述待加载地址后,生成的第一检测页面中除了可能有非动态添加的派生地址,还可能有由网络脚本(如JavaScript)等动态添加的派生地址。以HTML页面为例,其中<a>元素节点的href属性用于存储任何有效文档的相对或绝对URL;因此,上述的派生地址一般是存储在<a>元素节点的href属性中。进而,可以通过获取<a>元素节点及相关属性信息来获取所述第一检测页面中的派生地址。例如,可以通过document.getElementsByTagName方法获取第一检测页面上所有的<a>元素节点以及<a>元素节点的href属性。
在步骤S460中,判断第一检测页面中是否存在目标元素节点。
本示例实施方式中,目标元素节点为第一检测页面上存在具有交互属性的目标元素节点。在实际场景中,具有交互属性的目标元素节点的属性通常以“on”开头;例如:带有onClick(用户点击超链接的行为)属性的<a>元素节点、带有onAbort(下载图片的过程被用户手动停止的行为)属性的<img>元素节点、带有onSubmit(按下提交按钮行为)属性的<form>元素节点、带有onUnload(退出当前页面的行为)属性的<body>元素节点等等。因此,可以遍历第一检测页面中的所有元素节点,判断是否有属性以“on”开头的目标元素节点,进而判断第一检测页面中是否存在目标节点。
如果判断第一检测页面中存在目标元素节点,则跳转至下述步骤S510;如果判断第一检测页面中不存在目标元素节点,则跳转至步骤S420,进行迭代循环,直至地址列表中的待访问地址全部都被加载过。
参考图5所示,本示例实施方式中,上述步骤330可以包括步骤S510至步骤S580。具体而言:
在步骤S510中,获取所述第一检测页面中的目标元素节点并添加至元素节点列表。例如,获取上述步骤S460中检测到的以“on”开头的目标元素节点,并将这些目标元素节点添加至元素节点列表Tag_List。
在步骤S520中,判断所述元素节点列表中是否存在未触发过的元素节点。本示例实施方式中,可以将被触发过的元素节点移动到另一列表中,例如移动到Tag_List_Visit,从而便于判断所述元素节点列表中是否存在未触发过的元素节点。当然,也可以通过其他方式辅助判断所述元素节点列表中是否存在未触发过的元素节点;例如对元素节点列表中已经被触发过的元素节点进行标记等;本示例性实施例中对此不做特殊限定。
在步骤S530中,如果判断所述元素节点列表中存在未触发过的元素节点,将一所述未过触发的元素节点作为待触发元素节点。举例而言,可以是依次选择未触发过的元素节点作为待触发元素节点,也可以是随机选择或者按照其他规则选择未触发过的元素节点作为待触发元素节点,本示例性实施例中对此不做特殊限定。此外,相反的,如果判断所述元素节点列表中不存在未触发过的元素节点,即所有目标元素节点都被触发完毕,则可以跳转至上述步骤S420,进行下一待访问地址的加载操作。
在步骤S540中,通过模拟浏览器行为触发所述待触发元素节点,得到第二检测页面。例如,首先获取该待触发元素节点的浏览器行为类型,然后通过模拟该浏览器行为触发所述待触发元素节点,进而触发第一检测页面中的脚本(如JavaScript等)被执行或者触发第一检测页面中的AJAX方法被加载等。例如,对于带有onSubmit(按下提交按钮行为)属性的<form>待触发元素节点,可以通过模拟按下提交按钮的行为,触发form的提交。本示例实施方式中,可以通过调用dispatchEvent函数或者Python的Beautiful Soup库的Ghost.py模块等方式模拟浏览器行为,本示例性实施例中对此不做特殊限定。
此外,无头浏览器的addEventListener函数主要用于监听用户行为。本示例实施方式中还可以提前对addEventListener函数进行修改,使得在模拟浏览器行为后,修改后的addEventListener函数能够记录下模拟的浏览器行为作用的对象和行为类型,以便于后续分析。类似的,还可以提前修改无头浏览器的原生XMLHttpRequest对象,使得通过模拟浏览器行为触发第一检测页面加载AJAX方法发出请求时,可以获取到请求的类型、请求的链接和请求的参数,以便于后续分析。
根据第一检测页面中的脚本或者AJAX方法的不同,在第一检测页面中的脚本被执行或者第一检测页面中的AJAX方法被加载后,可能得到三种类型的第二检测页面:第二检测页面相对于所述第一检测页面发生页面跳转;第二检测页面相对于所述第一检测页面未发生页面跳转,但产生元素节点的改变;第二检测页面相对于所述第一检测页面未发生页面跳转,也未产生元素节点的改变。下面结合步骤S550至步骤S580对这三种情形进行说明:
在步骤S550中,判断所述第二检测页面相对于所述第一检测页面是否发生页面跳转。例如,如果判断所述第二检测页面的URL相对于所述第一检测页面的URL发生了变化,则可以认为第二检测页面相对于所述第一检测页面发生了页面跳转。
在步骤S560中,如果判断所述第二检测页面相对于所述第一检测页面发生页面跳转,则将第二检测页面的地址加入至地址列表,等待被重新加载,即等待执行上述步骤S420及其后续步骤。同时,由于第二检测页面相关的检测将在后续过程重新执行(即上述步骤S420及其后续步骤),因此此时跳转至步骤S520,进行下一个待触发元素节点的触发。相反的,如果判断所述第二检测页面相对于所述第一检测页面未发生页面跳转,则转至下述步骤S570。
在步骤S570中,判断所述第二检测页面相比于所述第一检测页面是否出现新的目标元素节点。目标元素节点的获取可以参考上述步骤S460,因此此处不再重复赘述。如果判断所述第二检测页面相比于所述第一检测页面未出现新的目标元素节点,则可以跳转至步骤S520,进行下一个待触发元素节点的触发。相反的,如果判断所述第二检测页面相比于所述第一检测页面出现新的目标元素节点,则跳转至步骤S580。
在步骤S580中,将所述新的目标元素节点添加至所述元素节点列表,并跳转至步骤S520,进行下一个待触发元素节点的触发。
图6示出了将上述S410至步骤S580综合之后的流程图。本示例实施方式中,步骤S410至步骤S580可以结合网络爬虫实现。网络爬虫可以是基于Python的Beautiful Soup库、lxml库或者requests库等,也可以基于Java的Arachnid、Ex-Crawler、MetaSeeker等,本示例性实施例中对此不做特殊限定。传统的网络爬虫仅采用正则表达式匹配一般URL的形式,这样很可能会遗漏掉待检测页面;而基于本示例实施方式中的上述步骤S410至步骤S580,通过提供浏览器模拟环境、并模拟浏览器行为,可以将目标站点不断的全面展开,进而可以对应的提高后续注入点检测的广度和深度以及跨站脚本漏洞检测的广度和深度,有效减少漏洞误报和漏报的情况。
此外,对一个目标站点,可能存在很多网页结构相同但展示的内容有所不同的派生地址。为了减少待访问地址的数量,提高检测效率以及降低计算资源消耗,本示例实施方式中,还可以包括对所述地址列表进行相似地址去重处理的步骤。例如,对于地址列表中的派生地址http://xx x.com/index.php?id=1和派生地址http://xxx.com/index.php?id=2,两者的网页结构相同,网页链接上仅仅是某个数字参数不同;对于地址列表中的这类派生地址,可以仅保留一个;所以可以将派生地址里的数字替换成通配符“\d”,这样,上面两个派生地址都会被修改为http://xxx.com/ind ex.php?id=\d,即仅保留了一个,实现了相似地址去重处理的效果。当然,在本发明的其他示例性实施例中,也可以通过路径去重、文件去重、请求去重等其他去重方式进行相似地址去重处理,本示例性实施例中对此不做特殊限定。
参考图7所示,本示例实施方式中,所述检测各所述注入点是否存在跨站脚本漏洞可以包括步骤S710至步骤S730。具体而言:
在步骤S710中,获取攻击载荷(Payload)。由于跨站脚本攻击的方式多种多样,因此,在构造攻击载荷时,需要考虑到足够的场景去构造攻击载荷,以提升漏洞检测的全面性和准确性。例如:
对于可以在HTML标签之间注入代码的场景,需要将跨站脚本攻击代码注入在标签之间。例如,对于“<div>[input]</div>”,跨站脚本攻击代码可以注入在注入点“[input]”中,构造的攻击载荷可以为“<script>alert(/found_xss/)</script>”。
对于可以在HTML标签之内注入代码的场景,需要将跨站脚本攻击代码注入在标签之内。例如,对于“<a href=‘[input]’>test</a>”,跨站脚本攻击代码可以注入在注入点“[input]”中,构造的攻击载荷可以为“javascript:alert(/found_xss/)”。
对于可以在网络脚本如JavaScript中注入代码的场景,需要将跨站脚本攻击代码注入在网络脚本之内。例如,对于“<script>var test=‘[input]’;</script>”,跨站脚本攻击代码可以注入在注入点“[input]”中,构造的攻击载荷可以为“</script><script>alert(/xss_found/)</script>”。
对于需要绕过过滤规则进行注入的场景:有时候直接注入攻击载荷可能会被目标站点过滤拦截,导致跨站脚本攻击失败,所以在检测时需要考虑到绕过这些过滤的情况。举例而言,可以通过修改大小写绕过过滤,如构造的攻击载荷可以为“<SCRipt>alert(/found_xss/)</sCrIPT>”;也可以利用HTML元素节点的优先级绕过过滤,如构造的攻击载荷可以为“<textarea><a href="</textarea><img src=a onerror=alert('xss_found')//”;还可以利用宽字节环境来绕过过滤、通过伪协议绕过过滤或者通过修改后缀绕过过滤等,本示例性实施例中对此不做特殊限定。
当然,本领域技术人员还可以根据其他场景,构成其他形式的攻击载荷,这同样属于本发明的保护范围。
在步骤S720中,向所述注入点注入所述攻击载荷并构造请求数据包,以及将所述请求数据包提交至预设服务器。本示例实施方式中,可以利用网络脚本如JavaScript脚本对注入点所在页面进行动态的编辑,将注入点的值设置为上述的攻击载荷并构造请求数据包;在构造请求数据包后,可以使用HTTP的get请求或post请求向预设服务器发送请求。
步骤S730.根据所述预设服务器的反馈信息判断所述注入点是否存在跨站脚本漏洞。当发送完请求之后,会收到预设服务器返回的响应,分析这个响应即可判断该注入点是否存在跨站脚本漏洞。例如,在上述攻击载荷中具有“alert(/found_xss/)”指令,这样如果收到预设服务器返回的响应后,弹出了对话框,且对话框中含有“found_xss”,则可以确认所述注入点存在跨站脚本漏洞。当然,在本发明的其他示例性实施例中,也可以通过其他方式检测各所述注入点是否存在跨站脚本漏洞,这同样属于本发明的保护范围。
此外,对于同一注入点,可能需要通过多个攻击载荷进行测试,因此可以循环运行上述步骤S720以及步骤S730,依次通过各个攻击载荷对该注入点进行测试。在检测完毕后,可以将检测结果存储在数据库中,以便开发者参考使用,所述数据库例如可以为MySql、Oracle、DB2等,本示例性实施例中对此不做特殊限定。
在一种示例性实施例中,本发明中的跨站脚本漏洞检测方法的流程可以如图8所示。例如,在步骤S810中,将目标站点(即待检测网络站点的)起始地址作为待访问地址输入无头浏览器(如PhantomJS等)后,在无头浏览器提供的浏览器模拟环境下,加载待访问地址,获取第一检测页面。在步骤S820中,通过模拟浏览器行为触发所述第一检测页面中具有交互属性的目标元素节点,得到第二检测页面;例如,通过模拟浏览器行为触发第一检测页面执行页面中的脚本执行或者触发第一检测页面中的AJAX方法加载,得到第二检测页面。在步骤S830中,获取第一检测页面以及第二检测页面中的派生地址,并进行相似地址去重处理后,加入至地址列表。如果所述地址列表中存在未加载过的待访问地址,则通过步骤S810依次加载未访问所述待加载地址,并执行后续步骤S820以及步骤S830,直至所述地址列表中的地址全部被加载完毕。同时,将无头浏览器当前加载的页面的页面地址存入一消息队列,消息队列例如可以为RabbitMQ等。在步骤S840中,可以从该消息队列中取出页面地址,并获取取出的页面地址对应的页面中的注入点;在获取注入点之后,则可以针对各注入点进行漏洞检测。在检测完毕后,可以将检测结果存储在数据库中,以便开发者参考使用,所述数据库例如可以为MySql、Oracle、DB2等,本示例性实施例中对此不做特殊限定。
由上可知,本发明示例实施方式的跨站脚本漏洞检测方法中,通过模拟真实的浏览器环境以及浏览器行为可以对目标站点进行更加全面的展开,进而可以对应的提高后续注入点检测的广度和深度以及跨站脚本漏洞检测的广度和深度,提升跨站脚本漏洞检测的准确性,有效减少漏洞误报和漏报的情况,进而提升了网络应用的安全性。
应当注意,尽管在附图中以特定顺序描述了本发明中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。
进一步的,本示例实施方式中,还提供了一种跨站脚本漏洞检测装置。该跨站脚本漏洞检测装置可以应用于一终端设备。参考图9所示,该跨站脚本漏洞检测装置900可以包括地址获取模块910、页面加载模块920、行为模拟模块930、注入点获取模块940以及漏洞检测模块950。其中:
地址获取模块910可以用于将一目标站点的起始地址以及派生地址作为待访问地址。
页面加载模块920可以用于在浏览器模拟环境下加载所述待访问地址,获取第一检测页面。
行为模拟模块930可以用于通过模拟浏览器行为触发所述第一检测页面中的目标元素节点,得到第二检测页面。
注入点获取模块940可以用于获取各所述第一检测页面和第二检测页面中的注入点。
漏洞检测模块950可以用于检测各所述注入点是否存在跨站脚本漏洞。
本示例实施方式中,所述目标元素节点可以包括所述第一检测页面中具有交互属性的元素节点。
本示例实施方式中,所述在浏览器模拟环境下加载待访问地址可以包括:通过无头浏览器加载所述待访问地址。
本示例实施方式中,所述第二检测页面可以为所述第一检测页面执行页面中的脚本或者加载页面中的AJAX方法后得到页面。
参考图10所示,本示例实施方式中,所述行为模拟模块930可以包括元素节点获取单元1010、触发判断单元1020以及行为模拟单元1030。其中:
元素节点获取单元1010可以用于获取所述第一检测页面中的目标元素节点并添加至元素节点列表。
触发判断单元1020可以用于在所述元素节点列表中存在未触发过的元素节点时,将一所述未过触发的元素节点作为待触发元素节点。
行为模拟单元1020可以用于通过模拟浏览器行为触发所述待触发元素节点。
本示例实施方式中,所述元素节点获取单元1010还可以用于,在所述第二检测页面相比于所述第一检测页面出现新的目标节点时,将所述新的目标元素节点加入至所述元素节点列表。
参考图11所示,本示例实施方式中,所述页面加载模块920可以包括地址获取单元1110、访问判断单元1120以及页面加载单元1130。其中:
地址获取单元1110可以用于将所述目标站点的起始地址以及派生地址加入地址列表。
访问判断单元1120可以用于在所述地址列表中存在未加载过的待访问地址时,将一未加载过的所述待访问地址作为待加载地址。
页面加载单元1130可以用于在浏览器模拟环境下加载所述待加载地址。
本示例实施方式中,地址获取单元1110具体可以用于将所述目标站点的起始地址加入至所述地址列表;以及获取所述第一检测页面中的派生地址并加入至所述地址列表。
本示例实施方式中,地址获取单元1110还可以在判断所述第二检测页面相对于所述第一检测页面发生页面跳转时,将所述第二检测页面的地址加入至所述地址列表。
本示例实施方式中,所述页面加载模块920还可以包括数据清洗单元。数据清洗单元可以用于对所述地址列表进行相似地址去重处理。
参考图12所示,本示例实施方式中,所述漏洞检测模块950可以包括攻击载荷获取单元1210、攻击载荷注入单元1220以及漏洞判断单元1230。其中:
攻击载荷获取单元1210可以用于获取攻击载荷。
攻击载荷注入单元1220可以用于向所述注入点注入所述攻击载荷并构造请求数据包,以及将所述请求数据包提交至预设服务器。
漏洞判断单元1230可以用于根据所述预设服务器的反馈信息判断所述注入点是否存在跨站脚本漏洞。
上述跨站脚本漏洞检测装置中各模块的具体细节已经在对应的跨站脚本漏洞检测方法中进行了详细的描述,因此此处不再赘述。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。
Claims (13)
1.一种跨站脚本漏洞检测方法,其特征在于,包括:
将一目标站点的起始地址以及派生地址作为待访问地址;
在浏览器模拟环境下加载所述待访问地址,获取第一检测页面;
通过模拟浏览器行为触发所述第一检测页面中具有交互属性的目标元素节点,得到第二检测页面;
获取各所述第一检测页面和第二检测页面中的注入点;
检测各所述注入点是否存在跨站脚本漏洞。
2.根据权利要求1所述的方法,其特征在于,所述在浏览器模拟环境下加载待访问地址包括:
通过无头浏览器加载所述待访问地址。
3.根据权利要求1所述的方法,其特征在于,所述第二检测页面为所述第一检测页面执行页面中的脚本或者加载页面中的AJAX方法后得到页面。
4.根据权利要求1~3任意一项所述的方法,其特征在于,所述通过模拟浏览器行为触发所述第一检测页面中的目标元素节点,包括:
获取所述第一检测页面中的目标元素节点并添加至元素节点列表;
判断所述元素节点列表中是否存在未触发过的元素节点;
如果所述元素节点列表中存在未触发过的元素节点,将一所述未过触发的元素节点作为待触发元素节点;以及
通过模拟浏览器行为触发所述待触发元素节点。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
判断所述第二检测页面相比于所述第一检测页面是否出现新的目标元素节点;
如果所述第二检测页面相比于所述第一检测页面出现新的目标节点,将所述新的目标元素节点加入至所述元素节点列表。
6.根据权利要求1~3或5任意一项所述的方法,其特征在于,所述在浏览器模拟环境下加载所述待访问地址,包括:
将所述目标站点的起始地址以及派生地址加入地址列表;
判断所述地址列表中是否存在未加载过的待访问地址;
如果所述地址列表中存在未加载过的待访问地址,将一未加载过的所述待访问地址作为待加载地址;以及
在浏览器模拟环境下加载所述待加载地址。
7.根据权利要求6所述的方法,其特征在于,所述将所述目标站点的起始地址以及派生地址加入地址列表,包括:
将所述目标站点的起始地址加入至所述地址列表;以及
获取所述第一检测页面中的派生地址并加入至所述地址列表。
8.根据权利要求6所述的方法,其特征在于,所述将所述目标站点的起始地址以及派生地址加入地址列表,包括:
判断所述第二检测页面相对于所述第一检测页面是否发生页面跳转;
如果所述第二检测页面相对于所述第一检测页面发生页面跳转,将所述第二检测页面的地址加入至所述地址列表。
9.根据权利要求6所述的方法,其特征在于,所述方法还包括:
对所述地址列表进行相似地址去重处理。
10.根据权利要求1~3或5或7~9任意一项所述的方法,其特征在于,所述检测各所述注入点是否存在跨站脚本漏洞,包括:
获取攻击载荷;
向所述注入点注入所述攻击载荷并构造请求数据包,以及将所述请求数据包提交至预设服务器;以及
根据所述预设服务器的反馈信息判断所述注入点是否存在跨站脚本漏洞。
11.一种跨站脚本漏洞检测装置,其特征在于,包括:
地址获取模块,用于将一目标站点的起始地址以及派生地址作为待访问地址;
页面加载模块,用于在浏览器模拟环境下加载所述待访问地址,获取第一检测页面;
行为模拟模块,用于通过模拟浏览器行为触发所述第一检测页面中的目标元素节点,得到第二检测页面;
注入点获取模块,用于获取各所述第一检测页面和第二检测页面中的注入点;
漏洞检测模块,用于检测各所述注入点是否存在跨站脚本漏洞。
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1至10中任一项所述的跨站脚本漏洞检测方法。
13.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如权利要求1至10中任一项所述的跨站脚本漏洞检测方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810645614.3A CN108846286A (zh) | 2018-06-21 | 2018-06-21 | 跨站脚本漏洞检测方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810645614.3A CN108846286A (zh) | 2018-06-21 | 2018-06-21 | 跨站脚本漏洞检测方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108846286A true CN108846286A (zh) | 2018-11-20 |
Family
ID=64203590
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810645614.3A Pending CN108846286A (zh) | 2018-06-21 | 2018-06-21 | 跨站脚本漏洞检测方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108846286A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109740100A (zh) * | 2019-01-03 | 2019-05-10 | 北京字节跳动网络技术有限公司 | 一种网页节点嗅探方法、装置、设备和储存介质 |
CN110365641A (zh) * | 2019-05-31 | 2019-10-22 | 阿里巴巴集团控股有限公司 | 跨站脚本攻击漏洞检测方法、设备及计算机可读介质 |
CN111291288A (zh) * | 2020-01-22 | 2020-06-16 | 奇安信科技集团股份有限公司 | 网页链接抽取方法及*** |
CN111756771A (zh) * | 2020-07-21 | 2020-10-09 | 腾讯科技(深圳)有限公司 | 跨站脚本攻击的检测方法和装置 |
CN114626062A (zh) * | 2022-02-22 | 2022-06-14 | 中国人民解放军国防科技大学 | 一种基于动静结合的网站应用用户交互点发现方法和*** |
CN114928484A (zh) * | 2022-05-16 | 2022-08-19 | 上海斗象信息科技有限公司 | 蜜罐生成方法、装置、电子设备及存储介质 |
CN115186274A (zh) * | 2022-09-14 | 2022-10-14 | 深圳开源互联网安全技术有限公司 | 基于iast的安全测试方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8949990B1 (en) * | 2007-12-21 | 2015-02-03 | Trend Micro Inc. | Script-based XSS vulnerability detection |
CN104683328A (zh) * | 2015-01-29 | 2015-06-03 | 兴华永恒(北京)科技有限责任公司 | 一种跨站漏洞扫描方法及*** |
CN104881607A (zh) * | 2015-05-21 | 2015-09-02 | 北京工业大学 | 一种基于模拟浏览器行为的xss漏洞检测*** |
-
2018
- 2018-06-21 CN CN201810645614.3A patent/CN108846286A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8949990B1 (en) * | 2007-12-21 | 2015-02-03 | Trend Micro Inc. | Script-based XSS vulnerability detection |
CN104683328A (zh) * | 2015-01-29 | 2015-06-03 | 兴华永恒(北京)科技有限责任公司 | 一种跨站漏洞扫描方法及*** |
CN104881607A (zh) * | 2015-05-21 | 2015-09-02 | 北京工业大学 | 一种基于模拟浏览器行为的xss漏洞检测*** |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109740100A (zh) * | 2019-01-03 | 2019-05-10 | 北京字节跳动网络技术有限公司 | 一种网页节点嗅探方法、装置、设备和储存介质 |
CN110365641A (zh) * | 2019-05-31 | 2019-10-22 | 阿里巴巴集团控股有限公司 | 跨站脚本攻击漏洞检测方法、设备及计算机可读介质 |
CN111291288A (zh) * | 2020-01-22 | 2020-06-16 | 奇安信科技集团股份有限公司 | 网页链接抽取方法及*** |
CN111291288B (zh) * | 2020-01-22 | 2023-05-12 | 奇安信科技集团股份有限公司 | 网页链接抽取方法及*** |
CN111756771A (zh) * | 2020-07-21 | 2020-10-09 | 腾讯科技(深圳)有限公司 | 跨站脚本攻击的检测方法和装置 |
CN111756771B (zh) * | 2020-07-21 | 2023-04-18 | 腾讯科技(深圳)有限公司 | 跨站脚本攻击的检测方法和装置 |
CN114626062A (zh) * | 2022-02-22 | 2022-06-14 | 中国人民解放军国防科技大学 | 一种基于动静结合的网站应用用户交互点发现方法和*** |
CN114928484A (zh) * | 2022-05-16 | 2022-08-19 | 上海斗象信息科技有限公司 | 蜜罐生成方法、装置、电子设备及存储介质 |
CN115186274A (zh) * | 2022-09-14 | 2022-10-14 | 深圳开源互联网安全技术有限公司 | 基于iast的安全测试方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108846286A (zh) | 跨站脚本漏洞检测方法及装置 | |
USRE49486E1 (en) | System and method for tracking web interactions with real time analytics | |
CN105940654B (zh) | 特权静态被托管的web应用 | |
US8296722B2 (en) | Crawling of object model using transformation graph | |
CN102597993B (zh) | 利用统一资源标识符管理应用状态信息 | |
US9910992B2 (en) | Presentation of user interface elements based on rules | |
US20150033331A1 (en) | System and method for webpage analysis | |
CN106528657A (zh) | 浏览器跳转至应用程序的控制方法及装置 | |
CN105793862B (zh) | 动态程序在隔离环境中的受指导执行 | |
US9262311B1 (en) | Network page test system and methods | |
US10169005B2 (en) | Consolidating and reusing portal information | |
CN105791261B (zh) | 一种跨站脚本攻击的检测方法和检测设备 | |
US20180131779A1 (en) | Recording And Triggering Web And Native Mobile Application Events With Mapped Data Fields | |
CN111309620B (zh) | 一种游戏协议测试方法、装置、电子设备和存储介质 | |
CN105260424B (zh) | 用户浏览网页历史记录和最常访问的处理方法及装置 | |
US20220198025A1 (en) | Web Attack Simulator | |
CN109829121A (zh) | 一种点击行为数据上报的方法和装置 | |
CN107635001A (zh) | Web脚本异常处理方法和装置 | |
Hou et al. | A dynamic detection technique for XSS vulnerabilities | |
Jisha et al. | Mobile applications recommendation based on user ratings and permissions | |
CN109582317A (zh) | 用于调试寄宿应用的方法和装置 | |
CN114491560A (zh) | 一种漏洞检测方法、装置、存储介质及电子设备 | |
Dong et al. | A comprehensive client-side behavior model for diagnosing attacks in ajax applications | |
CN106371987A (zh) | 测试方法和装置 | |
CN104407979B (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20181120 |