CN113872919A - 一种漏洞扫描方法及装置 - Google Patents

一种漏洞扫描方法及装置 Download PDF

Info

Publication number
CN113872919A
CN113872919A CN202010616977.1A CN202010616977A CN113872919A CN 113872919 A CN113872919 A CN 113872919A CN 202010616977 A CN202010616977 A CN 202010616977A CN 113872919 A CN113872919 A CN 113872919A
Authority
CN
China
Prior art keywords
test
script
browser
post
sequence
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.)
Granted
Application number
CN202010616977.1A
Other languages
English (en)
Other versions
CN113872919B (zh
Inventor
孔振
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202010616977.1A priority Critical patent/CN113872919B/zh
Publication of CN113872919A publication Critical patent/CN113872919A/zh
Application granted granted Critical
Publication of CN113872919B publication Critical patent/CN113872919B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1433Vulnerability analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Computer And Data Communications (AREA)

Abstract

本申请实施例提供一种漏洞扫描方法及装置,涉及计算机技术领域,用于解决现有技术中无法完成存在依赖关系的多个请求的模糊测试,测试不效率不高的问题。该方法包括:获取浏览器上网络web应用的脚本序列,其中,脚本序列包括按照时序先后排列的前置操作的脚本、第一测试操作的脚本和后置操作的脚本,后置操作包括用于清空web应用的应用数据的操作;在第一测试操作的脚本插入至少一个用于漏洞检测的测试参数,生成第二测试操作的脚本;在浏览器上依次执行前置操作、第二测试操作和后置操作,向服务器依次发送前置操作、第二测试操作和后置操作对应的HTTP请求报文;接收来自服务器的HTTP响应报文。

Description

一种漏洞扫描方法及装置
技术领域
本申请涉及计算机技术领域,尤其涉及一种漏洞扫描方法及装置。
背景技术
网络(web)应用是一种可以通过web访问的应用程序,用户只需要通过浏览器即可访问应用程序,操作便捷。其中,web应用是基于客户端-服务器模型的,web应用的客户端和服务器之间是基于超文本传输协议(Hypertext Transfer Protocol,HTTP)进行交互的,即客户端和服务器之间可以通过交换HTTP报文进行通信。
目前,可以通过漏洞测试技术对web应用进行模糊(fuzz)测试,以检测web应用是否存在安全漏洞。具体的,可以通过代理服务器截取客户端上web应用的每一条HTTP请求报文,并针对每一条HTTP请求报文的输入参数中插入随机或者半随机参数,如输入正常的输入参数,或者非法输入参数,例如计算机指令等,然后转发给服务端进行处理。通过查看该HTTP请求报文对应的HTTP响应报文中的特定值,确定是否存在安全漏洞,以检测web应用的安全性。
但是,上述的漏洞测试方案无法完成存在依赖关系的多个请求的fuzz测试,例如,请求1表示新建一个数据,请求2表示删除新建的数据,请求3表示在新建的数据上进行修改。如果漏洞测试的执行顺序为请求1、请求2到请求3,由于请求2删除了请求1新建的数据,会导致请求3执行不成功,则测试程序会由于web应用的流程执行失败而报错,而对于插入参数的测试并不能体现,因此,是无效的测试。或者,当请求1执行失败,没有成功新建数据,则请求2就不会成功,仍是无效的测试。如此,测试效率不高,且无法检测出上述多个请求中存在的安全漏洞。
发明内容
本申请提供一种漏洞扫描方法及装置,解决了现有技术中无法完成存在依赖关系的多个请求的模糊测试,测试不效率不高的问题。
为达到上述目的,本申请采用如下技术方案:
第一方面,提供一种漏洞扫描方法,应用于漏洞扫描装置,该方法包括:获取浏览器上网络web应用的脚本序列,其中,脚本序列包括按照时序先后排列的前置操作的脚本、第一测试操作的脚本和后置操作的脚本,后置操作包括用于清空web应用的应用数据的操作;在第一测试操作的脚本插入至少一个用于漏洞检测的测试参数,生成第二测试操作的脚本;在浏览器上依次执行前置操作、第二测试操作和后置操作,向服务器依次发送前置操作、第二测试操作和后置操作对应的HTTP请求报文;接收来自服务器的HTTP响应报文。
上述技术方案中,本申请实施例通过设计完整、独立的测试脚本序列,漏洞扫描装置依此重放针对测试脚本序列中的第一测试操作插入用于漏洞检测的测试参数后,漏洞扫描装置依此重放测试脚本序列进行漏洞扫描,根据服务器返回的响应与测试用例中期待的响应进行对比,得到测试结果。由于每个测试用例都是独立的,与其他测试用例之间不存在依赖关系,因此,测试脚本序列中每个用户请求都能成功执行,从而测试覆盖率较高,进行模糊测试检测安全漏洞的定位性更强,提高测试的效率。
在一种可能的设计方式中,测试参数包括计算机程序代码。上述可能的实现方式中,漏洞扫描装置可以针对测试脚本序列中的第一测试操作插入用于漏洞检测的测试参数,该测试参数可以是合法的输入数据,也可以是非法的输入数据,例如,计算机程序代码,用于执行计算机指令。从而漏洞扫描装置可以根据分别插入不同的测试参数,检测出web应用上进行各个用户请求操作是否存在安全漏洞,提高安全测试的灵活性和测试效率。
在一种可能的设计方式中,获取浏览器上网络web应用的脚本序列,具体包括:接收来自代理服务器转发的HTTP报文,HTTP报文包括脚本序列,脚本序列是客户端根据web应用接收的用户操作生成的。
上述可能的实现方式中,漏洞扫描装置获取的测试脚本序列,是根据对客户端上浏览器web应用的用户操作进行录制生成的。漏洞扫描装置可以通过来自代理服务器转发的HTTP报文,获取测试脚本序列,或者漏洞扫描装置还可以直接接收来自客户端录制的测试脚本序列,提高漏洞扫描过程的灵活性。
在一种可能的设计方式中,在浏览器上依次执行前置操作、第二测试操作和后置操作,具体包括:调用客户端上的浏览器应用,在浏览器上的web应用上依次执行前置操作、第二测试操作和后置操作;生成前置操作、第二测试操作和后置操作对应的HTTP请求报文。
上述可能的实现方式中,漏洞扫描装置可以通过远程调用客户端上的浏览器依次重放前置操作、第二测试操作和后置操作,进行安全漏洞扫描。或者漏洞扫描装置还可以在本地的浏览器上重放前置操作、第二测试操作和后置操作进行漏洞扫描。漏洞扫描装置可以根据分别插入不同的测试参数,遍历所有的测试参数和测试用例,检测出web应用上进行各个用户请求操作是否存在安全漏洞,提高安全测试的灵活性和测试效率。
在一种可能的设计方式中,浏览器为扫描装置本地的浏览器。
上述可能的实现方式中,当漏洞扫描装置在本地的浏览器上重放测试操作时,可以释放远程操作客户端浏览器的资源占用,节省漏洞扫描的成本开销。
在一种可能的设计方式中,接收来自服务器的HTTP响应报文之后,该方法还包括:根据HTTP响应报文进行回显操作,生成测试结果,其中,回显操作包括直接回显、根据HTTP响应报文的时间回显或者基于回显平台进行回显中的至少一种。
上述可能的实现方式中,漏洞扫描装置重放测试操作后,接收来自服务器的HTTP响应报文,漏洞扫描装置可以对HTTP响应报文中的特定字段根据不同方式进行回显,验证该测试操作中每个用户请求得到的响应是否符合该测试用例的预期结果,如果符合则测试通过;如果不符合,则可能存在潜在的安全漏洞。从而,根据回显结果生成测试结果,较为直观地检测出每个测试操作对应的响应,提高测试效率。
第二方面,提供一种漏洞扫描装置,该装置包括:获取模块,用于获取浏览器上网络web应用的脚本序列,其中,脚本序列包括按照时序先后排列的前置操作的脚本、第一测试操作的脚本和后置操作的脚本,后置操作包括用于清空web应用的应用数据的操作;处理模块,用于在第一测试操作的脚本插入至少一个用于漏洞检测的测试参数,生成第二测试操作的脚本;处理模块,还用于在浏览器上依次执行前置操作、第二测试操作和后置操作,向服务器依次发送前置操作、第二测试操作和后置操作对应的HTTP请求报文;获取模块,还用于接收来自服务器的HTTP响应报文。
在一种可能的设计方式中,测试参数包括计算机程序代码。
在一种可能的设计方式中,获取模块具体用于:接收来自代理服务器转发的HTTP报文,HTTP报文包括脚本序列,脚本序列是客户端根据web应用接收的用户操作生成的。
在一种可能的设计方式中,处理模块具体用于:调用客户端上的浏览器应用,在浏览器上的web应用上依次执行前置操作、第二测试操作和后置操作;生成前置操作、第二测试操作和后置操作对应的HTTP请求报文。
在一种可能的设计方式中,浏览器为扫描装置本地的浏览器。
在一种可能的设计方式中,处理模块还用于:根据HTTP响应报文进行回显操作,生成测试结果,其中,回显操作包括直接回显、根据HTTP响应报文的时间回显或者基于回显平台进行回显中的至少一种。
第三方面,提供一种电子设备,该电子设备包括:处理器和传输接口;其中,处理器被配置为执行存储在存储器中的指令,以实现如上述第一方面中任一项所述的漏洞扫描方法。
第四方面,提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令由计算机或处理器执行时,使得所述计算机或所述处理器能够执行如上述第一方面中任一项所述的漏洞扫描方法。
第五方面,提供一种计算机程序产品,当所述计算机程序产品在计算机或处理器上运行时,使得所述计算机或所述处理器执行如上述第一方面中任一项所述的漏洞扫描方法。
可以理解地,上述提供的任一种漏洞扫描装置、计算机可读存储介质和计算机程序产品,均可以用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
附图说明
图1为本申请实施例提供的一种漏洞扫描系统的架构示意图;
图2为本申请实施例提供的一种漏洞扫描方法的流程示意图;
图3为本申请实施例提供的另一种漏洞扫描方法的流程示意图;
图4为本申请实施例提供的另一种漏洞扫描方法的流程示意图;
图5为本申请实施例提供的一种漏洞扫描装置的结构示意图;
图6为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
以下,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
需要说明的是,本申请中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
首先,对本申请涉及的技术名词进行简单介绍。
网络应用程序,是一种使用网页浏览器在互联网或者局域网上执行操作的应用软件,可以简称为web应用,例如,新闻门户网站,论坛网站或者购物网站等。web应用通常是以网页语言撰写的应用程序,例如HTML、JavaScript、Java等编程语言。web应用可以通过计算机上配置的浏览器来运行,不需要事先安装程序等。
网络漏洞,是指在硬件、软件和协议等的具体实现或系统安全策略上存在的缺陷,本申请的实施例重点关注web应用上的安全缺陷,可以使得攻击者能够在未授权的情况下访问或破坏系统,造成安全隐患。因此,网络漏洞是指存在于计算机网络系统中的、可能对系统中的组成和数据等造成损害的安全缺陷,专业技术人员可以通过一系列有效的测试,检测出web应用上可能存在的网络漏洞,以进行针对性的修复。
模糊测试(fuzz testing)是一种安全测试方法,介于完全的手工测试和完全的自动化测试之间,是一个缩微版的自动化测试框架。模糊测试支持输入随机与特定的测试数据对web应用进行漏洞检测。
具体的,模糊测试的执行过程可以包括:1、测试工具通过随机或是半随机的方式生成大量数据;2、测试工具将生成的数据发送给被测试的系统,作为输入参数;3、测试工具检测被测系统的状态,如是否能够响应,响应是否正确等;4、根据被测系统的状态判断是否存在潜在的安全漏洞。
测试用例(Test Case),是指对一个软件产品进行测试任务的描述内容,体现测试的方案、方法、技术和策略。测试用例的内容可以包括测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本等,最终形成文档。通常对于一个被测对象,技术人员需要编写大量的测试用例,已覆盖该被测对象的所有功能。而其中,一个测试用例是为某个特殊目标或者测试特定功能而编制的一组测试输入、执行条件以及预期结果,用于核实该被测对象是否满足某个特定的需求。在本申请的实施例中,每一个单独的测试用例都可以用于对web应用的某一项功能或者某一应用场景等进行测试。
需要说明的是,测试用例的编写是本领域技术人员根据被测对象进行人为进行编制的,针对不同类别的软件,测试用例一般是不同的。测试用例的完整性、测试用例对被测对象的覆盖率以及测试用例的可执行性等可以作为衡量测试用例的测试效率的指标。
漏洞扫描,是指基于漏洞数据库,通过扫描等手段对指定的远程或者本地计算机系统的安全脆弱性进行检测,发现可利用漏洞的一种安全检测行为。用于进行漏洞扫描的软件程序产品和/或硬件设备可以称为漏洞扫描装置,如计算机。
脚本(Script),是一种编程语言,具体可以是使用一种特定的描述性语言,依据一定的格式编写的可执行文件,可以用来控制软件应用程序。脚本通常是以文本存储的,当计算机中存储的脚本被调用时,计算机对脚本进行解释或者编译。
计算机指令,就是使得计算机执行某项任务或者工作的指示和命令,可以通过计算机程序语言来表示。示例性的,通常使用的计算机指令包括用于显示字符或后台数据的指令,用于返回某一个指定页面的指令,或者用于删除数据的指令等。
代理服务器,是用来代理网络用户去取得网络信息,即是客户端和服务端之间的网络信息的中转站,也是用户网络和互联网服务商之间的中间代理机构,负责转发合法的网络信息,并对转发的数据进行控制和记录的节点。
接下来,对本申请实施例的实施环境和应用场景进行介绍。
本申请实施例应用于执行漏洞扫描的通信系统,该通信系统可以包括客户端、代理节点、扫描节点和服务端,如图1所示。其中,客户端是指配置有web应用的、接收用户服务请求的客户端计算机。代理节点是指客户端和服务端的中间转发设备,具体可以为代理服务器,用于转发客户端和服务端之间的传输数据。扫描节点是用于检测安全漏洞的计算机,具体可以为漏洞扫描装置,或者部署有漏洞扫描产品的计算机,其中,漏洞扫描产品可以为具有漏洞扫描功能的计算机软件程序。漏洞扫描产品可以与web应用的客户端部署在同一台计算机上,也可以与客户端分别部署在不同的计算机上。服务端是指提供网络服务的计算机或者服务器。
本申请实施例提供一种漏洞扫描方法,应用于漏洞扫描装置,可以用于对web应用进行功能测试或者安全测试。如图2所示,该方法可以包括:
S201:漏洞扫描装置获取浏览器上web应用的脚本序列,其中,脚本序列包括按照时序先后排列的前置操作的脚本、第一测试操作的脚本和后置操作的脚本。
漏洞扫描装置可以通过代理服务器的转发,获取浏览器上web应用上的脚本序列。其中,浏览器可以为客户端上的浏览器,还可以为漏洞扫描装置本地安装的浏览器。
脚本序列,是指多个单独的脚本按照一定的先后顺序组成的序列。在本申请中,web应用上的脚本序列具体是指,当用户操作浏览器访问web应用的时候,用户的一系列操作,例如,点击操作,输入数据的操作,删除数据的操作或者关闭web应用的操作等,都会使得web应用生成用户操作对应的脚本语言,web应用上的多个用户操作即可以对应一组脚本序列。
其中,第一测试操作是指在任一单独测试用例的目标测试功能对应的操作步骤。例如,测试用例casel的目标测试功能是在web应用上新增设备,则第一测试操作可以包括,请求1:点击“新增”按钮或者图标;请求2:输入新增的设备信息,例如,可以包括设备名称,设备属性,设备类型和备注信息等;请求3:点击“确认”按钮或者图标。
前置操作是指任一单独的测试用例中,执行第一测试操作序列之前需要在web应用上执行的多个操作,可以为准备操作或者预配置操作等。例如,上述的casel的目标测试功能是在web应用上新增设备,则前置操作可以包括:登录该web应用的具体操作,还可以包括在web应用的“设置”界面清楚用户数据的操作。因此,前置操作具体可以是指用于在web应用上进行第一测试操作之前进行的操作,可以包括用户登陆该web应用的操作,资源释放的操作,设置该web应用的配置参数、用户信息的操作,或者,生成特定数据的操作等。
后置操作是指任一单独的测试用例中,执行第一测试操作序列之后,为不对其他测试用例造成影响,需要在web应用上执行的多个操作,具体可以为清除数据的操作或者恢复初始设置的操作等。例如,可以包括用于清空web应用上的用户数据的操作,具体可以为清空前置操作和第一测试操作所产生的应用数据的操作。
在本申请的实施例中,单个测试用例是完整的并且是独立的,测试用例之间不存在依赖关系,因此,在测试过程中,单个测试用例都可以独立进行测试。
S202:漏洞扫描装置在第一测试操作的脚本插入至少一个用于漏洞检测的测试参数,生成第二测试操作的脚本。
漏洞扫描装置在第一测试操作的脚本序列中插入至少一个测试参数,该测试参数可以包括合法的输入参数,测试参数的paylaod可以包括随机或者半随机生成的字符或者数字等。测试参数的paylaod还可以包括非法的输入参数,例如计算机指令等。
漏洞扫描装置在第一测试操作的脚本序列中插入至少一个测试参数,具体包括:漏洞扫描装置获取到第一测试操作的脚本序列后,计算第一测试操作的脚本中包括的多个请求,计算出该多个请求中包括的输入参数的插入点,根据多个插入点分别插入至少一个测试参数payload;即针对每一个插入点,生成每一个测试参数payload对应的第二测试操作的脚本。
其中,插入点表示测试操作中,需要插入输入参数的脚本节点,例如,上述的请求2:输入新增的设备信息中,即存在插入点,可以在该插入点插入测试参数。
S203:漏洞扫描装置在浏览器上依次执行前置操作、第二测试操作和后置操作,向服务器依次发送前置操作、第二测试操作和后置操作对应的HTTP请求报文。
漏洞扫描装置在浏览器上依次重放前置操作、第二测试操作和后置操作,针对一个测试用例遍历每一个测试参数payload,在浏览器上进行模糊测试。
其中,该浏览器可以为客户端录制脚本序列的浏览器,也可以是漏洞扫描装置上配置的浏览器,本申请对此不做具体限定。
漏洞扫描装置在浏览器重放插入不同测试参数的该测试用例,即浏览器向服务器一次发送前置操作、第二测试操作和后置操作对应的HTTP请求报文。
服务器具体可以为该web应用对应的为用户提供服务和数据的服务器,服务器依次接收到HTTP请求报文之后,响应于用户的请求操作,生成对应的HTTP响应报文,发送给请求服务的客户端或者浏览器。
S204:漏洞扫描装置接收来自服务器的HTTP响应报文。
漏洞扫描装置接收来自服务器的HTTP响应报文,并根据响应报文进行回显操作,具体可以是漏洞扫描装置根据第二测试操作对应的响应报文进行回显,根据回显结果得到该测试用例的测试结果。
其中,回显是指计算机显示正在执行的批处理命令及执行的结果等操作,在本申请的实施例中,漏洞扫描装置可以通过HTTP响应报文中包括的特定值进行回显。例如,用户输入设备名称,对应的回显操作可以为通过计算机的显示屏,显示用于指示该设备名称的结果指示。回显操作还包括用于指示某个用户请求成功执行的响应操作或者响应结果的显示。
回显操作具体可以包括直接回显、根据HTTP响应报文的时间回显或者基于回显平台进行回显中的至少一种。直接回显是指根据HTTP响应报文的内容进行显示,例如,直接显示操作成功,或者新建数据成功并显示在页面上的操作。根据HTTP响应报文的时间回显是指基于HTTP请求报文的时间戳和对应的HTTP响应报文的时间戳进行回显。其中,回显平台是一种独立的软件系统,可以通过检测HTTP连接或者域名系统协议(Domain Name System,DNS)连接等方式来获得受攻击服务器的请求,通过回显可以表明payload已经在受攻击服务器生效,或者攻击已经在受攻击服务器发生等。
上述本申请的实施方式中,通过编排并且生成独立并且完整的测试用例,漏洞扫描装置对测试用例中的测试请求操作插入测试参数后,依次重放前置操作、第二测试操作和后置操作,进行测试,从而根据响应报文与预期的测试响应进行对比,得到测试结果。漏洞扫描装置只对测试用例中的最关键的核心测试操作进行fuzz测试,重放一次fuzz测试第一测试操作中的一个输入参数。由于每个测试用例之间不存在依赖性,并不会由于一个测试用例执行失败影响其他用例的测试,执行测试的成功率较高,从而能够提高测试效率。
进一步的,根据上述实施方式可以实现自动化测试,根据编排好的测试用例,编写自动化测试的脚本代码,通过运行该自动化的测试脚本并且逐个插入不同的测试参数,可以对web应用实现自动化的模糊测试,提高测试效率。
基于上述的漏洞扫描原理以及实施方式,本申请实施例提供一种漏洞扫描方法,应用于如图1所示的测试系统,该测试系统可以包括客户端、代理节点、扫描节点和服务端。具体的,该漏洞扫描方法可以用于对web应用进行模糊测试,检测web应用是否存在潜在的安全漏洞。如图3所示,该方法可以包括:
S301:客户端录制web应用上的操作脚本,得到操作脚本序列,操作脚本序列包括前置操作序列、第一测试操作序列和后置操作序列。
具体的,客户端接收用户在web应用上的点击操作,客户端根据接收到的web应用上的点击操作录制web应用上的操作脚本序列。其中,操作脚本序列具体可以为HTTP请求报文,依此可以包括前置操作序列、第一测试操作序列和后置操作序列对应的HTTP请求报文。
S302:客户端将脚本序列发送给代理节点。
S303:代理节点接收来自客户端的脚本序列。
代理节点作为客户端和服务端之间的数据中转站,可以负责客户端和服务端之间传输数据的转发功能。例如,代理节点可以将来自客户端的HTTP请求报文转发给服务端,还可以将来自服务端的HTTP响应报文转发给客户端。其中,HTTP响应报文与HTTP请求报文可以是一一对应的。
S304:代理节点向扫描节点发送脚本序列。
在本申请实施例中,由于需要通过漏洞扫描装置对web应用进行模糊测试,因此,漏洞扫描装置可以截获代理节点的数据流量,即代理节点向扫描节点发送客户端录制的脚本序列,以使得扫描节点进行扫描,检测安全漏洞。
S305:扫描节点接收来自代理节点的脚本序列,对第一测试操作序列插入至少一个测试参数,生成第二测试操作序列;并远程控制客户端的浏览器上依次执行前置操作、第二测试操作和后置操作。
S306:扫描节点将前置操作、第二测试操作和后置操作对应的HTTP请求报文发送给服务端。
S307:扫描节点接收来自服务端的HTTP响应报文。
上述本申请的实施方式,通过引入独立且完整的测试用例设计,避免由于测试用例之间的用户请求存在依赖,导致测试操作中的操作靠后的请求fuzz测试不成功的问题。只对测试用例中的关键的几个测试操作插入测试参数,进行fuzz测试,保证所有请求都可以执行成功,提高测试的准确性和测试效率。
示例性的,结合在web应用上添加安全设备这个场景为例来进行进一步说明。
首先设计测试用例,测试用例中包括前置操作、第一测试操作和后置操作。前置操作可以包括用于资源释放的操作。以添加安全设备为例,第一测试操作的执行步骤可以包括:请求1、点击“增加”按钮,请求2、输入设备信息,请求3、点击“确认”按钮。后置操作可以包括将添加的安全设备进行删除的操作。
然后,将测试用例内的操作脚本序列代理到代理服务端上,操作脚本序列包括前置操作、第一测试操作和后置操作对应的脚本,第一测试操作的脚本包括上述的请求1、请求2和请求3。
扫描节点根据接收到的操作脚本序列,计算出第一测试操作的这一组请求的测试参数插入点,对于每一个插入点,遍历测试参数payload,得到每个测试参数payload对应的第二测试操作。扫描节点在浏览器上重放前置操作、第二测试操作和后置操作。处理一个插入点,并利用payload和插入点进行漏洞检测,一次重放操作执行完成之后,执行后置操作。由于第一测试操作中的三个请求都被重放了,就导致这三个存在依赖的请求都可以执行成功,模糊测试也就能够成功执行。
最后,扫描装置可以根据接收到的来自服务端的HTTP响应报文,通过对HTTP响应报文中包括的特定字段进行直接回显、时间差异回显或者回显平台等方式进行观测,得到测试结果,确定该测试用例进行测试的功能步骤中是否存在潜在的安全漏洞。
通过本申请的上述实施方式,根据测试用例设计出完整、独立的测试用例,测试用例之间不存在依赖关系,即测试用例能够逐个执行fuzz测试,不必因为web应用功能执行不下去而频繁报错,测试质量较高,进行模糊测试的成本开销降低,提高测试效率。
本申请实施例还提供一种漏洞扫描方法,应用于如图1所示的测试系统,该测试系统可以包括客户端、代理节点、扫描节点和服务端。具体的,该漏洞扫描方法可以用于对web应用进行模糊测试,检测web应用是否存在潜在的安全漏洞。如图4所示,该方法可以包括:
S401:客户端录制web应用上的操作脚本,得到操作脚本序列,操作脚本序列包括前置操作序列、第一测试操作序列和后置操作序列。
S402:客户端将脚本序列发送给扫描节点。
S403:扫描节点接收来自客户端的脚本序列,并根据脚本序列中的第一测试操作序列插入至少一个测试参数,生成第二测试操作序列。
S404:扫描节点在本地浏览器上依次执行前置操作、第二测试操作和后置操作,向代理节点发送前置操作、第二测试操作和后置操作对应的HTTP请求报文。
S405:代理节点将来自扫描节点的HTTP请求报文发送给服务端。
S406:服务端向代理节点发送HTTP响应报文。
S407:代理节点接收HTTP响应报文,并转发给扫描节点。
S408:扫描节点接收来自服务端的HTTP响应报文。
本申请的上述实施方式,扫描节点可以在本地浏览器进行测试操作脚本的重放,不需要远程调用客户端浏览器,因此可以释放客户端资源的占用,节省测试成本。另外,根据本申请实施例的要求,根据完整、独立的测试用例编排设计测试脚本,即可完成web应用的功能测试和漏洞检测,可以进一步减少测试的成本开销,提高测试效率。
进一步的,还可以用过自动化测试方式,将完整、独立的测试用例编写成计算机脚本语言,计算机可以根据脚本语言自动化执行测试,提高了安全测试的自动化程度;并且,测试操作的序列可以根据测试需要进行改变和调整,从而应用于web应用的不同生命周期的功能测试和漏洞检测。
另外,本申请实施例还提供一种漏洞扫描装置500,如图5所示,该装置可以包括获取模块501和处理模块502。
获取模块501,可以用于获取浏览器上网络web应用的脚本序列,其中,脚本序列包括按照时序先后排列的前置操作的脚本、第一测试操作的脚本和后置操作的脚本,后置操作包括用于清空web应用的应用数据的操作。
处理模块502,可以用于在第一测试操作的脚本插入至少一个用于漏洞检测的测试参数,生成第二测试操作的脚本。
处理模块502,还用于在浏览器上依次执行前置操作、第二测试操作和后置操作,向服务器依次发送前置操作、第二测试操作和后置操作对应的HTTP请求报文。
获取模块501,还用于接收来自服务器的HTTP响应报文。
在一种实施方式中,测试参数可以包括计算机程序代码。
在一种实施方式中,获取模块501具体可以用于:接收来自代理服务器转发的HTTP报文,HTTP报文包括脚本序列,脚本序列是客户端根据web应用接收的用户操作生成的。
在一种实施方式中,处理模块502具体可以用于:调用客户端上的浏览器应用,在浏览器上的web应用上依次执行前置操作、第二测试操作和后置操作;生成前置操作、第二测试操作和后置操作对应的HTTP请求报文。
在一种实施方式中,浏览器为扫描装置本地的浏览器。
在一种实施方式中,处理模块502,具体还可以用于:根据HTTP响应报文进行回显操作,生成测试结果,其中,回显操作包括直接回显、根据HTTP响应报文的时间回显或者基于回显平台进行回显中的至少一种。
需要说明的是,上述的装置500中具体的执行过程和实施例可以参照上述方法实施例中漏洞扫描装置执行的步骤和相关的描述,所解决的技术问题和带来的技术效果也可以参照前述实施例所述的内容,此处不再一一赘述。
在本实施例中,该漏洞扫描装置以采用集成的方式划分各个功能模块的形式来呈现。这里的“模块”可以指特定电路、执行一个或多个软件或固件程序的处理器和存储器、集成逻辑电路、和/或其他可以提供上述功能的器件。在一个简单的实施例中,本领域的技术人员可以想到该漏洞扫描装置可以采用如下图6所示的形式。
图6为本申请实施例示出的一种示例性的电子设备600的结构示意图,该电子设备600可以为上述实施方式中的漏洞扫描装置,用于执行上述实施方式中的漏洞扫描方法。如图6所示,该电子设备600可以包括至少一个处理器601,通信线路602以及存储器603。
处理器601可以是一个通用中央处理器(central processing unit,CPU),微处理器,特定应用集成电路(application-specific integrated circuit,ASIC),或一个或多个集成电路。
通信线路602可包括一条通路,在上述组件之间传送信息,该通信线路例如可以是总线。
存储器603可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electricallyerasable programmable read-only memory,EEPROM)、只读光盘(compact disc read-only memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器可以是独立存在,通过通信线路602与处理器相连接。存储器也可以和处理器集成在一起。本申请实施例提供的存储器通常为非易失性存储器。其中,存储器603用于存储执行本申请实施例的方案所涉及的计算机程序指令,并由处理器601来控制执行。处理器601用于执行存储器603中存储的计算机程序指令,从而实现本申请实施例提供的方法。
可选的,本申请实施例中的计算机程序指令也可以称之为应用程序代码,本申请实施例对此不作具体限定。
在具体实现中,作为一种实施例,处理器601可以包括一个或多个CPU,例如图6中的CPU0和CPU1。
在具体实现中,作为一种实施例,电子设备600可以包括多个处理器,例如图6中的处理器601和处理器607。这些处理器可以是单核(single-CPU)处理器,也可以是多核(multi-CPU)处理器。这里的处理器可以指一个或多个设备、电路、和/或用于处理数据(例如计算机程序指令)的处理核。
在具体实现中,作为一种实施例,电子设备600还可以包括通信接口604。电子设备可以通过通信接口604收发数据,或者与其他设备或通信网络通信,该通信接口604例如可以为以太网接口,无线接入网接口(radio access network,RAN),无线局域网接口(wireless local area networks,WLAN)或者USB接口等。
在具体实现中,作为一种实施例,电子设备600还可以包括输出设备605和输入设备606。输出设备605和处理器601通信,可以以多种方式来显示信息。例如,输出设备605可以是液晶显示器(liquid crystal display,LCD),发光二级管(light emitting diode,LED)显示设备,阴极射线管(cathode ray tube,CRT)显示设备,或投影仪(projector)等。输入设备606和处理器601通信,可以以多种方式接收用户的输入。例如,输入设备606可以是鼠标、键盘、触摸屏设备或传感设备等。
在具体实现中,电子设备600可以是台式机、便携式电脑、网络服务器、掌上电脑(personal digital assistant,PDA)、移动手机、平板电脑、无线终端设备、嵌入式设备、智能摄像头或有图6中类似结构的设备。本申请实施例不限定电子设备600的类型。
在一些实施例中,图6中的处理器601可以通过调用存储器603中存储的计算机程序指令,使得电子设备600执行上述方法实施例中的方法。
示例性的,图5中的各处理模块的功能/实现过程可以通过图6中的处理器601调用存储器603中存储的计算机程序指令来实现。例如,图5中的获取模块501和处理模块502的功能/实现过程可以通过图6中的处理器601调用存储器603中存储的计算机执行指令来实现。
在示例性实施例中,还提供了一种包括指令的计算机可读存储介质,上述指令可由电子设备600的处理器601执行以完成上述实施例的漏洞扫描方法。因此其所能获得的技术效果可参考上述方法实施例,在此不再赘述。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件程序实现时,可以全部或部分地以计算机程序产品的形式来实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。
最后应说明的是:以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

Claims (15)

1.一种漏洞扫描方法,其特征在于,应用于漏洞扫描装置,所述方法包括:
获取浏览器上网络web应用的脚本序列,其中,所述脚本序列包括按照时序先后排列的前置操作的脚本、第一测试操作的脚本和后置操作的脚本,所述后置操作包括用于清空所述web应用的应用数据的操作;
在所述第一测试操作的脚本插入至少一个用于漏洞检测的测试参数,生成第二测试操作的脚本;
在浏览器上依次执行所述前置操作、所述第二测试操作和所述后置操作,向服务器依次发送所述前置操作、所述第二测试操作和所述后置操作对应的HTTP请求报文;
接收来自服务器的HTTP响应报文。
2.根据权利要求1所述的方法,其特征在于,所述测试参数包括计算机程序代码。
3.根据权利要求1或2所述的方法,其特征在于,所述获取浏览器上网络web应用的脚本序列,具体包括:
接收来自代理服务器转发的HTTP报文,所述HTTP报文包括所述脚本序列,所述脚本序列是客户端根据所述web应用接收的用户操作生成的。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述在浏览器上依次执行所述前置操作、所述第二测试操作和所述后置操作,具体包括:
调用客户端上的浏览器应用,在所述浏览器上的所述web应用上依次执行所述前置操作、所述第二测试操作和所述后置操作;
生成所述前置操作、所述第二测试操作和所述后置操作对应的HTTP请求报文。
5.根据权利要求4所述的方法,其特征在于,所述浏览器为所述扫描装置本地的浏览器。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述接收来自服务器的HTTP响应报文之后,所述方法还包括:
根据所述HTTP响应报文进行回显操作,生成测试结果,其中,所述回显操作包括直接回显、根据所述HTTP响应报文的时间回显或者基于回显平台进行回显中的至少一种。
7.一种漏洞扫描装置,其特征在于,所述装置包括:
获取模块,用于获取浏览器上网络web应用的脚本序列,其中,所述脚本序列包括按照时序先后排列的前置操作的脚本、第一测试操作的脚本和后置操作的脚本,所述后置操作包括用于清空所述web应用的应用数据的操作:
处理模块,用于在所述第一测试操作的脚本插入至少一个用于漏洞检测的测试参数,生成第二测试操作的脚本;
所述处理模块,还用于在浏览器上依次执行所述前置操作、所述第二测试操作和所述后置操作,向服务器依次发送所述前置操作、所述第二测试操作和所述后置操作对应的HTTP请求报文;
所述获取模块,还用于接收来自服务器的HTTP响应报文。
8.根据权利要求7所述的装置,其特征在于,所述测试参数包括计算机程序代码。
9.根据权利要求7或8所述的装置,其特征在于,所述获取模块,具体用于:
接收来自代理服务器转发的HTTP报文,所述HTTP报文包括所述脚本序列,所述脚本序列是客户端根据所述web应用接收的用户操作生成的。
10.根据权利要求7-9任一项所述的装置,其特征在于,所述处理模块,具体用于:
调用客户端上的浏览器应用,在所述浏览器上的所述web应用上依次执行所述前置操作、所述第二测试操作和所述后置操作;
生成所述前置操作、所述第二测试操作和所述后置操作对应的HTTP请求报文。
11.根据权利要求10所述的装置,其特征在于,所述浏览器为所述扫描装置本地的浏览器。
12.根据权利要求7-11任一项所述的装置,其特征在于,所述处理模块,还用于:
根据所述HTTP响应报文进行回显操作,生成测试结果,其中,所述回显操作包括直接回显、根据所述HTTP响应报文的时间回显或者基于回显平台进行回显中的至少一种。
13.一种电子设备,其特征在于,所述电子设备包括:
处理器和传输接口;
其中,所述处理器被配置为执行存储在存储器中的指令,以实现如权利要求1-6中任一项所述的漏洞扫描方法。
14.一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令由计算机或处理器执行时,使得所述计算机或所述处理器能够执行如权利要求1-6中任一项所述的漏洞扫描方法。
15.一种计算机程序产品,当所述计算机程序产品在计算机或处理器上运行时,使得所述计算机或所述处理器执行如权利要求1-6中任一项所述的漏洞扫描方法。
CN202010616977.1A 2020-06-30 2020-06-30 一种漏洞扫描方法及装置 Active CN113872919B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010616977.1A CN113872919B (zh) 2020-06-30 2020-06-30 一种漏洞扫描方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010616977.1A CN113872919B (zh) 2020-06-30 2020-06-30 一种漏洞扫描方法及装置

Publications (2)

Publication Number Publication Date
CN113872919A true CN113872919A (zh) 2021-12-31
CN113872919B CN113872919B (zh) 2022-11-22

Family

ID=78981592

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010616977.1A Active CN113872919B (zh) 2020-06-30 2020-06-30 一种漏洞扫描方法及装置

Country Status (1)

Country Link
CN (1) CN113872919B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114826756A (zh) * 2022-05-10 2022-07-29 深信服科技股份有限公司 一种web漏洞检测方法及相关组件

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106412067A (zh) * 2016-09-30 2017-02-15 广东电网有限责任公司电力科学研究院 基于工控协议模糊测试的数据分层生成方法
CN107046526A (zh) * 2016-12-28 2017-08-15 北京邮电大学 基于Fuzzing算法的分布式异构网络漏洞挖掘方法
CN107608902A (zh) * 2017-10-23 2018-01-19 中国联合网络通信集团有限公司 程序接口测试方法及装置
CN108536600A (zh) * 2018-04-12 2018-09-14 平安普惠企业管理有限公司 回归测试方法、设备、装置及计算机可读存储介质
US20180349602A1 (en) * 2017-06-06 2018-12-06 Sap Se Security testing framework including virtualized server-side platform
CN110750448A (zh) * 2019-09-18 2020-02-04 北京丁牛科技有限公司 基于符号执行的测试用例生成方法及装置
CN110837472A (zh) * 2019-11-06 2020-02-25 腾讯科技(深圳)有限公司 一种浏览器测试方法、装置及计算机设备

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106412067A (zh) * 2016-09-30 2017-02-15 广东电网有限责任公司电力科学研究院 基于工控协议模糊测试的数据分层生成方法
CN107046526A (zh) * 2016-12-28 2017-08-15 北京邮电大学 基于Fuzzing算法的分布式异构网络漏洞挖掘方法
US20180349602A1 (en) * 2017-06-06 2018-12-06 Sap Se Security testing framework including virtualized server-side platform
CN107608902A (zh) * 2017-10-23 2018-01-19 中国联合网络通信集团有限公司 程序接口测试方法及装置
CN108536600A (zh) * 2018-04-12 2018-09-14 平安普惠企业管理有限公司 回归测试方法、设备、装置及计算机可读存储介质
CN110750448A (zh) * 2019-09-18 2020-02-04 北京丁牛科技有限公司 基于符号执行的测试用例生成方法及装置
CN110837472A (zh) * 2019-11-06 2020-02-25 腾讯科技(深圳)有限公司 一种浏览器测试方法、装置及计算机设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
孙雅静: "浏览器安全机制分析", 《中国优秀硕士学位论文全文数据库(电子期刊)》 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114826756A (zh) * 2022-05-10 2022-07-29 深信服科技股份有限公司 一种web漏洞检测方法及相关组件

Also Published As

Publication number Publication date
CN113872919B (zh) 2022-11-22

Similar Documents

Publication Publication Date Title
CN108595329B (zh) 一种应用测试方法、装置及计算机存储介质
CN110324311B (zh) 漏洞检测的方法、装置、计算机设备和存储介质
TWI603600B (zh) 利用運行期代理器及網路探查器判定漏洞之技術
US10915637B2 (en) Method, client, and system for testing application
CN111400722B (zh) 扫描小程序的方法、装置、计算机设备和存储介质
CN101877696B (zh) 在网络应用环境下重构错误响应信息的设备和方法
KR101691245B1 (ko) 웹 서비스 모니터링 시스템 및 방법
US20090082008A1 (en) Mobile Phone Code Debugging Method and Apparatus
KR101507469B1 (ko) 소스 코드 분석 서비스 제공 방법
JP2004164617A (ja) クロスサイトスクリプティング脆弱性の自動検出
JP2005285118A (ja) リモートソフトウェアサポートエージェントシステム
US10491629B2 (en) Detecting sensitive data sent from client device to third-party
CN104834588B (zh) 检测常驻式跨站脚本漏洞的方法和装置
CN108768960A (zh) 病毒检测方法、装置、存储介质及计算机设备
CN110119350A (zh) 软件开发工具包测试方法、装置和设备及计算机存储介质
CN107360189A (zh) 突破Web防护的漏洞扫描方法及装置
CN113114680A (zh) 用于文件上传漏洞的检测方法和检测装置
CN113411333A (zh) 一种越权访问漏洞检测方法、装置、系统和存储介质
US20180227314A1 (en) System and method for performing antivirus scan of a web page
CN114116078A (zh) 基于微前端的应用数据处理方法、装置、设备及介质
CN113872919B (zh) 一种漏洞扫描方法及装置
KR100984639B1 (ko) 보안검수 자동화 시스템 및 방법
Dong et al. A comprehensive client-side behavior model for diagnosing attacks in ajax applications
CN114491560A (zh) 一种漏洞检测方法、装置、存储介质及电子设备
CN114357457A (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
GR01 Patent grant
GR01 Patent grant