CN111813696B - 应用测试方法、装置、系统及电子设备 - Google Patents
应用测试方法、装置、系统及电子设备 Download PDFInfo
- Publication number
- CN111813696B CN111813696B CN202010861626.7A CN202010861626A CN111813696B CN 111813696 B CN111813696 B CN 111813696B CN 202010861626 A CN202010861626 A CN 202010861626A CN 111813696 B CN111813696 B CN 111813696B
- Authority
- CN
- China
- Prior art keywords
- test
- request
- code execution
- client
- execution information
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3692—Test management for test results analysis
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/53—Decompilation; Disassembly
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
本公开提供了一种应用测试方法、装置、系统及电子设备,可用于信息安全技术领域,该方法包括:获取来自测试客户端的第一测试请求标识,其中,第一测试请求标识是由测试客户端针对来自应用客户端的第一业务请求生成的,并且设置在第一业务请求中形成第一测试请求,以便测试客户端将第一测试请求发送给应用服务器端;基于第一测试请求标识,确定应用服务器端响应于第一测试请求产生的第一代码执行信息;以及将第一代码执行信息发送给测试客户端,以便测试客户端展示第一代码执行信息。
Description
技术领域
本公开涉及信息安全技术领域,具体涉及一种应用测试方法、装置、系统及电子设备。
背景技术
应用软件在开发的过程中不可避免地会引入各种安全缺陷,从而使得应用软件容易受到各种恶意攻击,从而为应用软件的使用带来各种安全隐患。
在实现本公开构思的过程中,发明人发现现有技术中至少存在如下问题:相关技术中,黑盒测试过程中无法获取后台代码详情,测试人员只能盲发大量请求,导致测试效率低,应用软件在漏洞点可能被遗漏。
发明内容
鉴于上述问题,提出了本公开以便提供一种克服上述问题或者至少部分地解决上述问题的应用测试方法、装置、系统及电子设备。
根据本公开的一个方面,提供了一种由测试服务器端执行的应用测试方法,包括:获取来自测试客户端的第一测试请求标识,其中,第一测试请求标识是由测试客户端针对来自应用客户端的第一业务请求生成的,并且设置在第一业务请求中形成第一测试请求,以便测试客户端将第一测试请求发送给应用服务器端;基于第一测试请求标识,确定应用服务器端响应于第一测试请求产生的第一代码执行信息;以及将第一代码执行信息发送给测试客户端,以便测试客户端展示第一代码执行信息。
根据本公开的一个方面,还提供了一种由测试客户端执行的应用测试方法,包括:获取来自应用客户端的第一业务请求;响应于第一业务请求,将第一测试请求发送给应用服务器端,以便测试服务器端获取第一测试请求标识,第一测试请求包括第一业务请求和由测试客户端设置的第一测试请求标识;以及至少接收并且展示来自测试服务器端的第一代码执行信息,第一代码执行信息是测试服务器端基于第一测试请求标识,确定的由应用服务器端响应于第一测试请求而产生的信息。
根据本公开的一个方面,还提供了一种由测试系统执行的应用测试方法,测试系统包括测试客户端和测试服务器端,上述方法包括:测试客户端接收来自应用客户端的第一业务请求;测试客户端响应于第一业务请求,将第一测试请求发送给应用服务器端,以便测试服务器端获取第一测试请求标识,第一测试请求包括第一业务请求和由测试客户端设置的第一测试请求标识;测试服务器端响应于第一测试请求标识,基于第一测试请求标识确定第一代码执行信息,第一代码执行信息是由应用服务器端响应于第一测试请求而产生的信息;测试服务器端将第一代码执行信息发送给测试客户端;以及测试客户端响应于第一代码执行信息,展示第一代码执行信息。
根据本公开的一个方面,还提供了一种测试服务器端中的应用测试装置,包括:请求标识接收模块,用于获取来自测试客户端的第一测试请求标识,其中,第一测试请求标识是由测试客户端针对来自应用客户端的第一业务请求生成的,并且设置在第一业务请求中形成第一测试请求,以便测试客户端将第一测试请求发送给应用服务器端;代码执行信息确定模块,用于基于第一测试请求标识,确定应用服务器端响应于第一测试请求产生的第一代码执行信息;以及代码执行信息发送模块,用于将第一代码执行信息发送给测试客户端,以便测试客户端展示第一代码执行信息。
根据本公开的一个方面,还提供了一种测试客户端中的应用测试装置,包括:业务请求获取模块,用于获取来自应用客户端的第一业务请求;信息发送模块,用于响应于第一业务请求,将第一测试请求发送给应用服务器端,以便测试服务器端获取第一测试请求标识,第一测试请求包括第一业务请求和由测试客户端设置的第一测试请求标识;以及代码执行信息展示模块,用于至少接收并且展示来自测试服务器端的第一代码执行信息,第一代码执行信息是测试服务器端基于第一测试请求标识,确定的由应用服务器端响应于第一测试请求而产生的信息。
根据本公开的一个方面,还提供了一种应用测试系统,包括测试服务器端,用于执行如上的方法;以及测试客户端,用于执行如上的方法。
根据本公开的一个方面,还提供了一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个指令,其中,当所述一个或多个指令被所述一个或多个处理器执行时,使得所述一个或多个处理器实现如上所述的方法。
根据本公开的一个方面,还提供了一种计算机可读存储介质,其上存储有程序,所述程序被处理器执行时实现上述任一所述的应用测试方法。
根据本公开实施例的一个方面,还提供了一种计算机程序,所述计算机程序包括计算机可执行指令,所述指令在被执行时用于实现如上所述的方法。
本公开实施例的应用测试方法、装置、系统及电子设备,可以提供应用服务器端中与业务请求对应的代码执行信息,使测试人员可以基于如代码执行链等代码执行情况,深入分析程序潜在缺陷,便于针对性地构造攻击报文等进行漏洞检测。此外,安全测试人员通过观察代码执行详情,可以在服务器端无明显指示性响应报文的情况下,准确判断漏洞是否存在。
附图说明
为了更完整地理解本公开及其优势,现在将参考结合附图的以下描述,其中:
图1示意性示出了根据本公开实施例的适用于应用测试方法、装置和电子设备的应用场景的示意图;
图2示意性示出了根据本公开实施例的应用应用测试方法、装置和电子设备的示例性系统架构;
图3示意性示出了根据本公开实施例的应用测试方法的流程图;
图4示意性示出了根据本公开实施例的应用测试方法逻辑图;
图5示意性示出了根据本公开实施例的请求或报文的组成部分示意图;
图6示意性示出了根据本公开另一实施例的应用测试方法的流程图;
图7示意性示出了根据本公开另一实施例的应用测试方法的流程图;
图8示意性示出了根据本公开实施例的应用测试装置的结构示意图;
图9示意性示出了根据本公开另一实施例的应用测试装置的结构示意图;
图10示意性示出了根据本公开实施例的应用测试系统的结构示意图;
图11示意性示出了根据本公开实施例的程序分析子系统的结构示意图;
图12示意性示出了根据本公开实施例的黑盒检测客户端的结构示意图;以及
图13示意性示出了根据本公开实施例的电子设备的方框图。
具体实施方式
以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。在使用类似于“A、B或C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B或C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个所述特征。
为了便于更好地理解本公开的实施例,首先对应用测试技术进行示例性说明。计算机软件程序在编码开发过程中无可避免会人为引入各种各样的安全缺陷,随着信息化建设的飞速发展,针对应用程序的恶意攻击也越来越普遍,因此在应用程序正式上线之前,准确高效地发现应用程序的安全漏洞尤为重要。相关技术中,在应用程序上线前,业界广泛采用黑盒测试的方法挖掘应用潜在漏洞。但是,在黑盒测试过程中,安全测试人员只能观察到应用程序的外部结构,对应用程序的内部结构完全不了解,而正是由于不关注应用程序内部的实现细节,将导致测试覆盖率有限,执行时难以涵盖应用程序的全部分支,且不能针对性地设计测试案例,导致测试结果不完善。此外,这种黑盒测试方式效率较低,需重复大量地、盲目地发送测试流量以判断漏洞是否存在,且黑盒测试只能根据响应流量来判断是否存在漏洞,给应用程序的安全运行带来不确定性的隐患。
本公开实施例提供的应用测试方法、装置和电子设备。该方法包括代码执行信息确定过程和代码执行信息输出过程。在代码执行信息确定过程中,首先获取来自测试客户端的第一测试请求标识,其中,第一测试请求标识是由测试客户端针对来自应用客户端的第一业务请求生成的,并且设置在第一业务请求中形成第一测试请求,以便测试客户端将第一测试请求发送给应用服务器端,然后,基于第一测试请求标识,确定应用服务器端响应于第一测试请求产生的第一代码执行信息。在完成代码执行信息确定过程之后,进入代码执行信息输出过程,将第一代码执行信息发送给测试客户端,以便测试客户端展示第一代码执行信息。
本公开实施例提供的应用测试方法、装置和电子设备,在黑盒测试过程中,获取业务请求及测试请求对应的代码执行情况,且针对测试服务器端反馈的代码执行信息(如代码执行链、执行栈等)中的关键函数等信息,能反馈对应的源代码,能够帮助安全测试人员深入分析程序潜在缺陷,针对性地构造攻击向量进行漏洞检测。此外,安全测试人员通过观察攻击请求对应的代码执行信息,可以在应用服务器端无明显指示性响应报文的情况下,准确判断漏洞是否存在。
图1示意性示出了根据本公开实施例的适用于应用测试方法、装置和电子设备的应用场景的示意图。需要说明的是,本公开实施例的应用测试方法、装置和电子设备可用于信息安全技术领域,也可用于除信息安全技术领域之外的多种领域,如金融领域。本公开实施例的应用测试方法、装置和电子设备的应用领域不做限定。
参考图1所示,相关技术中,测试系统可以包括测试终端101和应用服务器102,安全测试人员通过测试终端101向应用服务器102发送大量测试数据,并接收来自应用服务器102的响应数据,根据响应数据分析应用服务器102中是否包括漏洞或潜在漏洞等。但是,黑盒测试过程中无法获取后台代码详情,测试人员只能盲发大量请求,导致测试效率低,应用软件在漏洞点可能被遗漏。
本公开实施例的测试系统进一步包括程序分析子系统103和黑盒检测客户端104共两个部分。其中,程序分析子系统103和黑盒检测客户端104共同组成了黑盒测试辅助系统。
例如,测试终端101为安全测试人员使用的用于访问待测应用服务的软件或设备(包括但不限于手机、平板电脑、浏览器等)。安全测试人员通过测试终端101进行安全测试时,通过配置代理转发地址,使得黑盒检测客户端104实时接收业务请求。安全测试人员通过黑盒检测客户端104抓取的业务测试流量,构造攻击报文。而部署在被测应用服务器102上的程序分析子系统103可以解析出每个攻击报文对应的程序执行链,并根据安全测试人员的需求反馈执行链中与风险信息(如风险函数)对应的源代码,辅助安全测试人员调整并优化测试报文。
本公开实施例的应用测试方法、装置和电子设备能帮助测试人员在进行黑盒测试的同时,获取服务器端代码执行情况及代码的静态实现,有效辅助安全测试人员在测试过程中不断调整测试案例,判断测试案例执行效果,提高测试覆盖率、效率及准确度。
图2示意性示出了根据本公开实施例的应用应用测试方法、装置和电子设备的示例性系统架构。
需要注意的是,图2所示仅为可以应用本公开实施例的系统架构的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。
如图2所示,根据本公开实施例的系统架构200可以包括终端设备201、202、203,网络204、服务器205。终端设备201、202、203,服务器205之间可以通过网络204连接,网络204可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
终端设备201、202、203可以是安装有程序的多种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机、主机和台式计算机等等。根据本公开实施例,终端设备201、202、203可以通过程序实现用户所需的功能,如业务办理、代码执行信息处理、办公、上网、购物、娱乐等。
服务器205可以是提供各种服务的服务器,例如对用户利用终端设备201、202、203所发起的请求提供支持的后台管理服务器(仅为示例)。服务器205中可以安装有程序,以对接收到的用户请求等数据进行分析等处理,并将处理结果(例如根据用户请求获取或生成的网页、代码执行信息、业务执行结果或数据等)反馈给终端设备。该程序可以是应用服务器端程序和/或测试服务器端程序。
需要说明的是,本公开实施例所提供的应用测试方法可以由终端设备201、202、203或服务器205执行。相应地,本公开实施例所提供的应用测试装置一般可以设置于终端设备201、202、203或服务器205中。本公开实施例所提供的应用测试方法也可以由不同于服务器205且能够与终端设备201、202、203和/或服务器205通信的服务器或服务器集群执行。
应该理解,图2中的终端设备和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备和服务器。
图3示意性示出了根据本公开实施例的应用测试方法的流程图。
如图3所示,由测试服务器端执行的应用测试方法可以包括操作S301~操作S305。
在操作S301,获取来自测试客户端的第一测试请求标识。
其中,第一测试请求标识是由测试客户端针对来自应用客户端的第一业务请求生成的,并且设置在第一业务请求中形成第一测试请求,以便测试客户端将第一测试请求发送给应用服务器端。
本领域技术人员可以理解地,可以通过配置代理转发地址,以实现各种信息间的交互。
测试服务器端可以通过如下方式获取第一测试请求标识:测试客户端将第一测试请求(包括第一业务请求和第一测试请求标识)发送给应用服务器,测试客户端监听到第一测试请求之后,从第一测试请求中解析出第一测试请求标识。
例如,第一测试请求标识可以是由测试客户端自定义的唯一的测试请求标识,设置在如第一业务请求的响应头中,以便测试服务器端关联第一测试请求和与其对应的第一程序执行信息。
在操作S303,基于第一测试请求标识,确定应用服务器端响应于第一测试请求产生的第一代码执行信息。
具体地,第一代码执行信息可以包括代码执行栈等信息。可以通过插桩探针加入的数据采集代码,在应用服务器端中采集第一测试请求标识和对应的代码执行情况。例如,第一测试请求中包括查询请求,该查询请求在应用服务器端中涉及对该查询请求进行检查的函数,以及入库函数等,这样通过第一测试请求标识就可以确定该查询请求的执行路径、代码执行栈等信息。
在操作S305,将第一代码执行信息发送给测试客户端,以便测试客户端展示第一代码执行信息。
具体地,可以将第一测试请求从入口函数到最终的执行函数所经过的执行路径放发送给测试客户端,以便测试客户端可以在展示界面供安全测试人员查看,使得测试人员可以根据执行链等展示信息,判断应用系统是否使用了风险函数等风险信息,或是否对用户输入数据进行了有效验证。此外,安全测试人员还可以进一步根据风险信息构造攻击报文等进行验证。如测试人员发现对应请求执行了结构化查询语言(sql)查询,那么可以针对性地构造sql注入攻击报文,或者业务请求执行了文件读命令,那么可以尝试构造读取系统文件的攻击报文以进行检测。
本公开实施例提供的应用测试方法,可以便于安全测试人员更好地分析应用程序漏洞,提高黑盒测试的覆盖率、效率与准确度,同时也为开发人员后期漏洞定位及修复提供参考与便利,更好地保证应用程序漏洞分析和修复的质量。
在一个实施例中,上述方法还可以包括如下操作。
响应于测试服务器端处于运行状态,在测试服务器端的字节码文件中插入采集代码。这样便于通过插桩的方式采集所需的代码执行信息等。
相应地,基于第一测试请求标识,确定应用服务器端响应于第一测试请求产生的第一代码执行信息包括:基于采集代码和第一测试请求标识,确定应用服务器端响应于第一测试请求产生的第一代码执行信息。
例如在钩子(hook)服务器解释器加载程序文件的过程,通过在字节码文件中插入自定义的采集代码,以便后续获取每一个业务请求对应的代码执行链。
在一个实施例中,还可以反编译字节码文件以确定程序源文件,并且将程序源文件存储在数据集合中。例如,测试服务器端在应用服务器上运行后,首先反编译出程序源代码存储在代码库中。需要说明的是,该反编译出程序源代码的过程无需每次测试都执行,可以是在安装测试服务器端、应用服务器上电、测试服务器端被启动或应用服务器端被启动等中任意一种时,执行该反编译操作。代码库可以存储在本地,也可以存储在异地,如存储在云端等。
在一个实施例中,上述方法还可以包括如下操作。
在将第一代码执行信息发送给测试客户端,以便测试客户端展示第一代码执行信息之后,响应于来自测试客户端的测试报文标识,基于测试报文标识确定应用服务器端响应于测试报文产生的第二代码执行信息,测试报文包括攻击报文和测试客户端针对攻击报文生成的测试报文标识。
接着,将第二代码执行信息发送给测试客户端,以便测试客户端展示第二代码执行信息。
例如,当安全测试人员怀疑第一代码执行信息中存在隐患时,则可以针对该隐患构造测试报文,并将测试报文发送至被测应用(应用服务器端),测试服务器端可以再次返回与测试报文对应的代码执行信息,测试人员可以依据测试报文的响应报文以及代码执行信息验证漏洞是否真实存在。
在一个实施例中,还可以由测试服务器端给测试客户端反馈漏洞或疑似漏洞等处的源代码,以便安全测试人员进行确认。
具体地,第一代码执行信息和/或第二代码执行信息包括第一风险信息。
相应地,上述方法还可以包括如下操作。
响应于第一风险信息或者来自测试客户端的第二风险信息,从存储测试服务器端的程序源文件的数据集合中,确定与第一风险信息和/或第二风险信息对应的风险程序源文件。
然后,将风险程序源文件发送给测试客户端,以便测试客户端展示风险程序源文件。
例如,对于跨站脚本攻击(XSS),应用服务器端可以通过过滤脚本关键字来进行攻击防控。在测试过程中,当安全测试人员从代码执行堆栈中,发现潜在过滤函数时,可以有测试服务器端通过匹配等方式从代码库中拉取函数对应的实现代码,并发送给测试客户端,以便基于规则、测试用例或由安全测试人员判断过滤字符是否全面,是否存在被绕过的可能。此外,安全测试人员还可以进一步针对性地构造检测报文以进行检测。
需要说明的是,第一风险信息可以是由测试服务器端和/或测试客户端基于规则等自动确定的风险信息,也可以是由测试人员根据代码执行信息等确定的风险信息。第二风险信息可以被包括在代码执行信息中,还可以是测试人员在看到代码执行信息后,基于自身的经验等确定的相关的风险信息,在此不做限定。
本公开实施例的应用测试方法可以提供应用软件的与风险信息对应的风险程序源文件(如源代码),安全测试人员可以清晰地看到开发人员的防御思路,针对性地寻找绕过控制的可能,发现潜在的安全问题,便于安全测试人员有针对性地构造攻击报文,挖掘深层次的安全漏洞,并确认漏洞的真实性。应用测试方法的测试过程简单,结果准确,且测试的效率高。并且可以根据源代码定位程序的具体缺陷位置,节省测试人员后期定位的时间,便于更便捷、快速地修复漏洞。保证了应用软件的漏洞分析和修复的质量。
在一个实施例中,上述方法还可以包括如下操作。
首先,获取来自测试客户端的第二测试请求标识,第二测试请求标识是针对第二业务请求的,以生成第二测试请求,第二业务请求的业务参数与第一业务请求的业务参数不同。
然后,基于第二测试请求标识确定应用服务器端响应于第二测试请求产生的第三代码执行信息,第三代码执行信息包括第三执行路径,第一代码执行信息包括第一执行路径。
接着,比较第一执行路径和第三执行路径。
然后,如果第一执行路径和第三执行路径不同,则输出提示信息,以便确定引起应用服务器端分支变化的参数。
在本实施例中,安全测试人员可以通过调整业务参数,观察到参数是否能改变程序的执行路径,获取可能引起程序分支变化的关键参数,完善测试案例的设计,提高测试覆盖度。
图4示意性示出了根据本公开实施例的应用测试方法逻辑图。
如图4所示,测试服务器端在应用服务器上运行(如仅在首次运行)后,首先反编译出程序源代码存储在代码库中,然后通过hook服务器解释器在加载程序文件的过程,如以打桩等方式在字节码文件中插入自定义的采集代码,以便后续获取每一个业务请求对应的代码执行信息(如代码执行链等)。当安全测试人员通过测试终端的业务客户端发送业务请求时,测试客户端捕获业务流量,接收并展示测试服务器端实时反馈的与业务请求对应的代码执行链等代码执行信息。此外,对测试人员要求的信息(如可能存在风险的函数),从代码库中拉取反编译后的源代码反馈到测试客户端。安全测试人员根据测试服务器端反馈的源代码,针对性地构造相应的测试报文(如攻击向量),通过检测客户端发送至被测应用(应用服务器端),测试服务器端可以再次返回测试报文对应的程序执行情况,测试人员依据该测试报文的响应报文以及程序执行情况验证漏洞是否真实存在。
本公开实施例的应用测试方法便于测试人员深度分析程序执行链,有效判断测试报文的覆盖情况,帮助挖掘多层函数套用下的安全风险。且测试人员可依据程序实时执行情况,调整源代码查询请求,确保测试覆盖度。此外,安全测试人员可以根据程序执行链,获取有关源代码,从而获取应用软件的安全配置情况,针对性构造攻击报文,有效减少不适用的攻击载荷,避免了发送大量无用攻击报文,提高测试效率。通过获取程序执行链的执行情况,可以详细了解到被攻击函数是否执行,使得检测结果更加准确有效。
图5示意性示出了根据本公开实施例的请求或报文的组成部分示意图。
如图5所示,第一测试请求、第二测试请求、测试报文等的头部中可以包括标识信息,以便于测试服务器端基于该标识信息采集所需的代码执行信息。
以下以命令执行漏洞为例,进行应用测试过程说明。假设待检测的应用服务器端提供:通过浏览器管理部分服务器的功能,此时要求用户只能输入特定的服务器网际互联协议(IP)及特定的几种管理命令,安全测试人员需要测试这种控制能否被绕过,即能否在任意服务器上远程执行任意命令。本公开的实施例中,安全测试人员可以在浏览器配置代理转发地址,令代理模块拦截到业务请求,在其中加入测试请求标识后将测试请求转发给应用服务器端,安装在应用服务器上的测试服务器端返回与测试请求对应的程序执行链,安全测试人员可以通过终端设备(如测试客户端)查看该测试请求对应的后台执行链,然后对疑似控制函数,发起源代码查询请求,从数据集合中调取函数详情,查看控制函数的实现原理,检查是否存在绕过控制的可能。然后针对性地构造攻击报文,再通过代理转发测试请求给应用服务器,再次查看测试请求对应的代码执行栈,如对于业务允许范围之外的执行命令,执行栈仍包含命令执行函数的运行,则可判断漏洞真实存在,且测试人员可输出问题代码,便于开发人员定位与修复漏洞。
本公开的另一方面提供了一种由测试客户端执行的应用测试方法。
图6示意性示出了根据本公开另一实施例的应用测试方法的流程图,如图6所示,该方法可以包括操作S601~操作S605。
在操作S601,获取来自应用客户端的第一业务请求。
在操作S603,响应于第一业务请求,将第一测试请求发送给应用服务器端,以便测试服务器端获取第一测试请求标识,第一测试请求包括第一业务请求和由测试客户端设置的第一测试请求标识。在一些实施例中,获取测试报文的步骤与输出应与测试报文对应的程序执行链的过程中还包括:给测试报文添加标识;将添加标识后的测试请求发送至应用服务器端,以便测试服务器端基于第一测试请求标识确定程序执行链。
其中,在应用服务器端中加入的数据采集代码,该数据采集代码可以用于识别第一测试请求标识,从而根据第一测试请求标识确定代码执行信息。通过添加标识,便于后续追踪程序执行链,通过添加数据采集代码将测试报文与程序执行链关联起来,从而确定程序执行链的追踪情况。
在操作S605,至少接收并且展示来自测试服务器端的第一代码执行信息,第一代码执行信息是测试服务器端基于第一测试请求标识,确定的由应用服务器端响应于第一测试请求而产生的信息。
在一个实施例中,第一代码执行信息包括第一风险信息。
相应地,上述方法还可以包括如下操作,以便安全测试人员基于与风险信息对应的程序源文件等进行漏洞分析。
在至少接收并且展示来自测试服务器端的第一代码执行信息之后,向测试服务器端发送第一风险信息或由用户输入的第二风险信息,以便于测试服务器端从存储测试服务器端的程序源文件的数据集合中,确定与第一风险信息和/或第二风险信息对应的风险程序源文件。
然后,至少接收并且展示风险程序源文件。这些风险程序源文件,如风险程序源代码便于测试人员进行潜在漏洞分析等。
在一个实施例中,上述方法还可以包括如下操作。
首先,响应于第二用户操作,生成第二业务请求。
然后,将第二测试请求发送给应用服务器端,并且将第二测试请求标识发送给测试服务器端,第二测试请求包括第二业务请求和由测试客户端设置的第二测试请求标识,第二业务请求的业务参数与第一业务请求的业务参数不同。
接着,至少接收并且展示来自测试服务器端的提示信息,以便确定引起应用服务器端分支变化的参数。其中,提示信息用于提示第一执行路径和第三执行路径不同,第一执行路径和第三执行路径分别属于第一代码执行信息和第三代码执行信息,第三代码执行信息是应用服务器端响应于第二测试请求产生的信息。
在其他实施例中,还可以在进行测试报文检测后,基于测试报文的响应报文以及应用服务器端在处理测试报文的过程中产生的代码执行信息,对应用服务器端程序进行进一步分析。具体地,上述方法还可以包括如下操作。
在接收并展示来自测试服务器端的第一代码执行信息之后,或者,在至少接收并且展示风险程序源文件之后,响应于第一用户操作,生成攻击报文。
然后,向应用服务器端发送测试报文,并且向测试服务器端发送与攻击报文对应的测试报文标识,测试报文包括攻击报文以及由测试客户端生成的测试报文标识,以便测试服务器端基于测试报文标识,确定应用服务器端响应于测试报文产生的第二代码执行信息。
接着,至少接收并展示第二代码执行信息。
在一个实施例中,可以通过在响应头中插入测试请求标识以生成测试请求,或者通过在响应头中插入报文标识以生成测试报文。以便测试服务器端确定哪些代码执行信息是与测试请求或测试报文对应的代码执行信息。
在一个具体实施例中,测试终端为安全测试人员使用的用于访问应用服务器端的软件或设备(包括但不限于手机、平板电脑、浏览器等)。安全测试人员通过测试终端进行安全测试时,通过配置代理转发地址,使得测试客户端可以实时接收来自应用客户端的业务请求。安全测试人员通过测试客户端抓取的业务测试流量,构造攻击报文。而部署在被测应用服务器上的测试服务器端可以解析出每个攻击报文对应的程序执行链等信息,并根据用户需求反馈执行链中的函数的源代码,辅助安全测试人员调整并优化测试报文。
需要说明的是,测试客户端执行的应用测试方法可以参考测试服务器端执行的应用测试方法相关内容,部分相关内容没有进行详述。
本公开的另一方面还提供了一种由测试系统执行的应用测试方法,测试系统包括测试客户端和测试服务器端。
图7示意性示出了根据本公开另一实施例的应用测试方法的流程图。如图7所示,该方法包括操作S701~操作S709。
在操作S701,测试客户端获取来自应用客户端的第一业务请求。
在操作S703,测试客户端响应于第一业务请求,将第一测试请求发送给应用服务器端,以便测试服务器端获取第一测试请求标识,第一测试请求包括第一业务请求和由测试客户端设置的第一测试请求标识。
在操作S705,测试服务器端响应于第一测试请求标识,基于第一测试请求标识确定第一代码执行信息,第一代码执行信息是由应用服务器端响应于第一测试请求而产生的信息。
在操作S707,测试服务器端将第一代码执行信息发送给测试客户端。
在操作S709,测试客户端响应于第一代码执行信息,展示第一代码执行信息。
在一个具体实施例中,测试系统执行的应用测试可以包括如下操作。
首先,在被测应用服务器上部署测试服务器端,反编译应用服务器端程序源代码,并且入库保存。
然后,在应用服务器端启动(如应用程序启动)时加载插桩工具,对应用代码插桩,为应用源代码添加数据采集代码。
接着,在部署完测试服务器端后,将测试终端设备配置代理转发地址,指向测试客户端,以便测试客户端可以接收测试报文。
然后,设置好的代理截取并转发测试客户端与应用服务器端之间的交互流量,代理对流量进行标记,添加唯一标识供后续识别分析。
接着,部署在应用服务器上的测试服务器端通过插桩探针加入的数据采集代码,在程序中标识和报文对应的代码执行情况。
然后,测试服务器端将采集到的代码执行信息发送给测试客户端以便测试客户端进行展示。此时,安全测试人员可以根据测试请求/测试报文对应的代码执行栈,判断代码执行栈中是否包含高风险函数调用,是否存在控制用户输入的过滤和验证代码。
接着,测试客户端可以用于获安全测试人员所关心函数的源代码,如通过匹配的方式从包括反编译的代码的数据集合中得到。
然后,将针对所关心函数的源代码构造的攻击报文发送给应用服务器端,这样就可以进一步得到应用服务器端的响应信息和新的代码执行情况,以便进一步分析漏洞是否真实存在。
需要说明的是,测试系统执行的应用测试方法可以参考测试服务器端和测试客户端执行的应用测试方法相关内容,在此不再详述。
本公开的另一方面还提供了一种测试服务器端中的应用测试装置。
图8示意性示出了根据本公开实施例的应用测试装置的结构示意图。
如图8所示,该应用测试装置800可以包括:请求标识接收模块810、代码执行信息确定模块820和代码执行信息发送模块830。
其中,请求标识接收模块810用于获取来自测试客户端的第一测试请求标识,其中,第一测试请求标识是由测试客户端针对来自应用客户端的第一业务请求生成的,并且设置在第一业务请求中形成第一测试请求,以便测试客户端将第一测试请求发送给应用服务器端。
代码执行信息确定模块820用于基于第一测试请求标识,确定应用服务器端响应于第一测试请求产生的第一代码执行信息。
代码执行信息发送模块830用于将第一代码执行信息发送给测试客户端,以便测试客户端展示第一代码执行信息。
需要说明的是,测试服务器端中的应用测试装置执行的应用测试方法可以参考测试服务器端执行的应用测试方法相关内容,在此不再详述。
本公开的另一方面还提供了一种测试客户端中的应用测试装置。
图9示意性示出了根据本公开另一实施例的应用测试装置的结构示意图。
如图9所示,该测试客户端中的应用测试装置900可以包括:业务请求获取模块910、信息发送模块920和代码执行信息展示模块930。
业务请求获取模块910用于获取来自应用客户端的第一业务请求。
信息发送模块920用于响应于第一业务请求,将第一测试请求发送给应用服务器端,以便测试服务器端获取第一测试请求标识,第一测试请求包括第一业务请求和由测试客户端设置的第一测试请求标识。
代码执行信息展示模块930用于至少接收并且展示来自测试服务器端的第一代码执行信息,第一代码执行信息是测试服务器端基于第一测试请求标识,确定的由应用服务器端响应于第一测试请求而产生的信息。
需要说明的是,测试客户端中的应用测试装置执行的应用测试方法可以参考测试客户端执行的应用测试方法相关内容,在此不再详述。
本公开的另一方面还提供了一种应用测试系。
图10示意性示出了根据本公开实施例的应用测试系统的结构示意图。
如图10所示,该应用测试系1000可以包括程序分析子系统1010和黑盒检测客户端1020。
其中,程序分析子系统1010用于执行如上测试服务器端执行的应用测试方法。
黑盒检测客户端1020用于执行如上测试客户端执行的应用测试方法。
图11示意性示出了根据本公开实施例的程序分析子系统的结构示意图。
如图11所示,程序分析子系统由程序反编译模块、程序执行监测模块两部分构成。程序反编译模块在部署完成后,对应用服务器上的应用服务器端程序进行反编译入库,并在测试过程中,接收黑盒检测客户端传入的代码获取请求,反馈源代码信息。程序执行检测模块主要负责对应用代码插桩,关联业务请求与代码执行栈,并实时反馈到黑盒检测客户端。
具体地,程序反编译模块的主要作用为将应用服务器中部署应用程序做反编译,获取程序源文件并入库保存,当黑盒检测客户端请求查看某函数的对应源代码时,本模块能从代码库中实时查询对应代码并反馈。例如XSS攻击,服务器端可以通过过滤脚本关键字来防控。测试过程中,当安全测试人员从代码执行堆栈中,发现潜在过滤函数时,可以通过该模块拉取函数对应的实现代码,判断过滤字符是否全面,是否存在被绕过的可能,然后针对性构造检测报文。
程序执行监测模块针对黑盒检测客户端发送的原始测试报文,通过在源代码中打桩的方式跟踪原始测试请求对应的代码执行堆栈,并将堆栈信息反馈黑盒检测客户端供安全测试人员分析。当测试人员再次发起攻击请求时,仍可通过本模块拿到对应请求的代码执行信息。通过该信息,可以辅助判断攻击效果,确认漏洞是否存在(如系统成功执行了系统命令,那么攻击请求对应的代码执行链相较于原始请求对应的代码执行链,可能会增加命令执行函数的调用)。此外,安全测试人员通过调整业务参数,可以观察到参数是否能改变程序的执行路径,获取可能引起程序分支变化的关键参数,完善测试案例的设计,提高测试覆盖度。
图12示意性示出了根据本公开实施例的黑盒检测客户端的结构示意图。
如图12所示,黑盒检测客户端由代理模块、执行链展示模块、代码获取模块三部分构成。
关于代理模块
代理模块可以包括代理转发单元和代理标记单元。具体地,代理转发单元作为测试客户端和被测服务器间的代理工具,能够接收并转发业务请求,并能将安全测试人员构造的测试报文发送到应用服务器端。代理标记单元将给往来流量逐一添加报文头,以便后续跟踪报文对应的代码执行链。执行链展示模块接收程序执行监测模块发送的代码执行堆栈信息,实时反馈测试请求对应的代码执行信息。代码获取模块根据测试用户发送的代码获取信息,请求程序反编译模块拉取相应程序代码详情,并展示在客户端。
例如,代理模块包括代理转发单元和代理标记单元两部分,主要作用为转发请求,并添加请求唯一标识符。
其中,代理转发单元作为测试终端与应用服务器之间的网络交互中转站,截取测试终端发送的业务请求并转发给应用服务端。此外,安全测试人员通过查看应用服务器端详细的代码执行情况和关键源代码信息后,可针对性地构造攻击报文并通过本单元转发到服务器端,观察攻击报文的执行情况,挖掘潜在漏洞。
代理标记单元对代理转发单元接收的流量进行处理,在响应头中插入自定义的唯一的测试请求标识或测试报文标识,以便安装在被测应用服务器端的程序分析子系统关联测试请求与程序执行堆栈。
关于执行链展示模块
执行链展示模块的主要作用为接收程序执行监测模块监测到的相关请求对应的执行链,将业务请求从入口函数到最终的执行函数所经过的执行路径放在展示界面供测试人员查看,测试人员根据执行链展示结果,判断应用系统是否使用了风险函数,或是否对用户输入数据进行了有效验证。如测试人员发现对应请求执行了sql查询,那么可以针对性地构造sql注入攻击报文,或者业务请求执行了文件读命令,那么可以尝试构造读取系统文件的攻击报文。
此外,当测试人员发送攻击报文时,通过该执行链展示模块,也可以清晰地看到对应的攻击请求是否成功执行。如上传文件测试,当无明显的回显时,通过传统的黑盒测试手段无法准确判断恶意文件是否成功上传,但是通过执行链,可以看出文件上传函数是否真正被执行,从而准确判断漏洞是否真实存在。
关于代码获取模块
代码获取模块的主要作用为:当发现执行链展示模块展示的调用链经过了某些关键函数(如过滤函数、验证函数)而无法准确判断这些控制函数是否有效,则可以由代码获取模块向程序反编译模块发送查看相关函数源代码的请求,并接收程序反编译模块反馈的结果。此时,通过查看源代码,可以清晰的看到开发人员的防御思路,针对性地寻找绕过控制的可能,发现潜在的安全问题。
其中,各模块执行的操作可以参考如上所示的方法部分相关内容,在此不再一一详述。
根据本公开的实施例的模块、子模块、单元、子单元中的任意多个、或其中任意多个的至少部分功能可以在一个模块中实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以被拆分成多个模块来实现。根据本公开实施例的模块、子模块、单元、子单元中的任意一个或多个可以至少被部分地实现为硬件电路,或可以通过对电路进行集成或封装的任何其他的合理方式的硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,根据本公开实施例的模块、子模块、单元、子单元中的一个或多个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
图13示意性示出了根据本公开实施例的电子设备的方框图。图13示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图13所示,根据本公开实施例的电子设备1300包括处理器1301,其可以根据存储在只读存储器(ROM)1302中的程序或者从存储部分1308加载到随机访问存储器(RAM)1303中的程序而执行各种适当的动作和处理。处理器1301例如可以包括通用微处理器(例如CPU)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC)),等等。处理器1301还可以包括用于缓存用途的板载存储器。处理器1301可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
在RAM 1303中,存储有电子设备1300操作所需的各种程序和数据。处理器1301、ROM 1302以及RAM 1303通过总线1304彼此相连。处理器1301通过执行ROM 1302和/或RAM1303中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,程序也可以存储在除ROM 1302和RAM 1303以外的一个或多个存储器中。处理器1301也可以通过执行存储在一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。
根据本公开的实施例,电子设备1300还可以包括输入/输出(I/O)接口1305,输入/输出(I/O)接口1305也连接至总线1304。电子设备1300还可以包括连接至I/O接口1305的以下部件中的一项或多项:包括键盘、鼠标等的输入部分1306;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分1307;包括硬盘等的存储部分1308;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分1309。通信部分1309经由诸如因特网的网络执行通信处理。驱动器1310也根据需要连接至I/O接口1305。可拆卸介质1311,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1310上,以便于从其上读出的计算机程序根据需要被安装入存储部分1308。
根据本公开的实施例,根据本公开实施例的方法流程可以被实现为计算机程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读存储介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1309从网络上被下载和安装,和/或从可拆卸介质1311被安装。在该计算机程序被处理器1301执行时,执行本公开实施例的电子设备中限定的上述功能。
本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。
根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以包括上文描述的ROM 1302和/或RAM 1303和/或ROM 1302和RAM 1303以外的一个或多个存储器。
本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合或/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。
Claims (12)
1.一种由测试服务器端执行的应用测试方法,包括:
获取来自测试客户端的第一测试请求标识,其中,所述第一测试请求标识是由所述测试客户端针对来自应用客户端的第一业务请求生成的,并且设置在所述第一业务请求中形成第一测试请求,以便所述测试客户端将所述第一测试请求发送给应用服务器端;
基于所述第一测试请求标识,确定所述应用服务器端响应于所述第一测试请求产生的第一代码执行信息;
将所述第一代码执行信息发送给所述测试客户端,以便所述测试客户端展示所述第一代码执行信息;
响应于来自所述测试客户端的测试报文标识,基于所述测试报文标识确定所述应用服务器端响应于测试报文产生的第二代码执行信息,所述测试报文包括攻击报文和所述测试客户端针对所述攻击报文生成的所述测试报文标识;
将所述第二代码执行信息发送给所述测试客户端,以便所述测试客户端展示所述第二代码执行信息;
其中,所述第一代码执行信息和/或所述第二代码执行信息包括第一风险信息;
所述方法还包括:响应于所述第一风险信息或者来自所述测试客户端的第二风险信息,
从存储所述测试服务器端的程序源文件的数据集合中,确定与所述第一风险信息和/或所述第二风险信息对应的风险程序源文件;以及
将所述风险程序源文件发送给所述测试客户端,以便所述测试客户端展示所述风险程序源文件。
2.根据权利要求1所述的方法,还包括:响应于所述测试服务器端处于运行状态,在所述测试服务器端的字节码文件中插入采集代码;以及
所述基于所述第一测试请求标识,确定所述应用服务器端响应于所述第一测试请求产生的第一代码执行信息包括:基于所述采集代码和所述第一测试请求标识,确定所述应用服务器端响应于所述第一测试请求产生的第一代码执行信息。
3.根据权利要求2所述的方法,还包括:反编译所述字节码文件以确定程序源文件,并且将所述程序源文件存储在数据集合中。
4.根据权利要求1-3任一项所述的方法,还包括:
获取来自测试客户端的第二测试请求标识,所述第二测试请求标识是针对第二业务请求的,以生成第二测试请求,所述第二业务请求的业务参数与所述第一业务请求的业务参数不同;
基于所述第二测试请求标识确定所述应用服务器端响应于所述第二测试请求产生的第三代码执行信息,所述第三代码执行信息包括第三执行路径,所述第一代码执行信息包括第一执行路径;
比较所述第一执行路径和所述第三执行路径;以及
如果所述第一执行路径和所述第三执行路径不同,则输出提示信息,以便确定引起所述应用服务器端分支变化的参数。
5.一种由测试客户端执行的应用测试方法,包括:
获取来自应用客户端的第一业务请求;
响应于所述第一业务请求,将第一测试请求发送给应用服务器端,以便测试服务器端获取第一测试请求标识,所述第一测试请求包括所述第一业务请求和由所述测试客户端设置的第一测试请求标识;以及
至少接收并且展示来自所述测试服务器端的第一代码执行信息,所述第一代码执行信息是所述测试服务器端基于所述第一测试请求标识,确定的由所述应用服务器端响应于所述第一测试请求而产生的信息;
其中,所述第一代码执行信息包括第一风险信息;
所述方法还包括:在所述至少接收并且展示来自所述测试服务器端的第一代码执行信息之后,
向所述测试服务器端发送所述第一风险信息或由用户输入的第二风险信息,以便于所述测试服务器端从存储所述测试服务器端的程序源文件的数据集合中,确定与所述第一风险信息和/或所述第二风险信息对应的风险程序源文件;以及
至少接收并且展示所述风险程序源文件;
其中,在所述接收并且展示来自所述测试服务器端的第一代码执行信息之后,或者,在所述至少接收并且展示所述风险程序源文件之后,所述方法还包括:
响应于第一用户操作,生成攻击报文;
向所述应用服务器端发送测试报文,并且向所述测试服务器端发送与所述攻击报文对应的测试报文标识,所述测试报文包括所述攻击报文以及由所述测试客户端生成的所述测试报文标识,以便所述测试服务器端基于所述测试报文标识,确定所述应用服务器端响应于所述测试报文产生的第二代码执行信息;以及
至少接收并展示所述第二代码执行信息。
6.根据权利要求5所述的方法,还包括:
响应于第二用户操作,生成第二业务请求;
将第二测试请求发送给所述应用服务器端,并且将第二测试请求标识发送给所述测试服务器端,所述第二测试请求包括所述第二业务请求和由所述测试客户端设置的所述第二测试请求标识,所述第二业务请求的业务参数与所述第一业务请求的业务参数不同;
至少接收并且展示来自所述测试服务器端的提示信息,以便确定引起所述应用服务器端分支变化的参数;其中,所述提示信息用于提示第一执行路径和第三执行路径不同,所述第一执行路径和所述第三执行路径分别属于所述第一代码执行信息和第三代码执行信息,所述第三代码执行信息是所述应用服务器端响应于所述第二测试请求产生的信息。
7.根据权利要求5所述的方法,其中,通过在响应头中插入测试请求标识以生成测试请求,或者通过在响应头中插入报文标识以生成测试报文。
8.一种由测试系统执行的应用测试方法,所述测试系统包括测试客户端和测试服务器端,所述方法包括:
所述测试客户端获取来自应用客户端的第一业务请求;
所述测试客户端响应于所述第一业务请求,将第一测试请求发送给应用服务器端,以便测试服务器端获取第一测试请求标识,所述第一测试请求包括所述第一业务请求和由所述测试客户端设置的所述第一测试请求标识;
所述测试服务器端响应于所述第一测试请求标识,基于所述第一测试请求标识确定第一代码执行信息,所述第一代码执行信息是由所述应用服务器端响应于所述第一测试请求而产生的信息;
所述测试服务器端将所述第一代码执行信息发送给所述测试客户端;
所述测试客户端响应于所述第一代码执行信息,展示所述第一代码执行信息;
其中,所述方法还包括:
所述测试服务器端响应于来自所述测试客户端的测试报文标识,基于所述测试报文标识确定所述应用服务器端响应于测试报文产生的第二代码执行信息,所述测试报文包括攻击报文和所述测试客户端针对所述攻击报文生成的所述测试报文标识;
所述测试服务器端将所述第二代码执行信息发送给所述测试客户端,以便所述测试客户端展示所述第二代码执行信息;其中,所述第一代码执行信息和/或所述第二代码执行信息包括第一风险信息;
所述测试服务器端响应于所述第一风险信息或者来自所述测试客户端的第二风险信息,
所述测试服务器端从存储所述测试服务器端的程序源文件的数据集合中,确定与所述第一风险信息和/或所述第二风险信息对应的风险程序源文件;以及
所述测试服务器端将所述风险程序源文件发送给所述测试客户端,以便所述测试客户端展示所述风险程序源文件。
9.一种测试服务器端中的应用测试装置,包括:
请求标识接收模块,用于获取来自测试客户端的第一测试请求标识,其中,所述第一测试请求标识是由所述测试客户端针对来自应用客户端的第一业务请求生成的,并且设置在所述第一业务请求中形成第一测试请求,以便将所述第一测试请求发送给应用服务器端;
代码执行信息确定模块,用于基于所述第一测试请求标识,确定所述应用服务器端响应于所述第一测试请求产生的第一代码执行信息;以及
代码执行信息发送模块,用于将所述第一代码执行信息发送给所述测试客户端,以便所述测试客户端展示所述第一代码执行信息;
所述代码执行信息确定模块,还用于响应于来自所述测试客户端的测试报文标识,基于所述测试报文标识确定所述应用服务器端响应于测试报文产生的第二代码执行信息,所述测试报文包括攻击报文和所述测试客户端针对所述攻击报文生成的所述测试报文标识;
所述代码执行信息发送模块,还用于将所述第二代码执行信息发送给所述测试客户端,以便所述测试客户端展示所述第二代码执行信息;
其中,所述第一代码执行信息和/或所述第二代码执行信息包括第一风险信息;
所述代码执行信息确定模块,还用于响应于所述第一风险信息或者来自所述测试客户端的第二风险信息,从存储所述测试服务器端的程序源文件的数据集合中,确定与所述第一风险信息和/或所述第二风险信息对应的风险程序源文件;以及
所述代码执行信息发送模块,还用于将所述风险程序源文件发送给所述测试客户端,以便所述测试客户端展示所述风险程序源文件。
10.一种测试客户端中的应用测试装置,包括:
业务请求获取模块,用于获取来自应用客户端的第一业务请求;
信息发送模块,用于响应于所述第一业务请求,将第一测试请求发送给应用服务器端,
以便测试服务器端获取第一测试请求标识,所述第一测试请求包括所述第一业务请求和由所述测试客户端设置的第一测试请求标识;以及
代码执行信息展示模块,用于至少接收并且展示来自所述测试服务器端的第一代码执行信息,所述第一代码执行信息是所述测试服务器端基于所述第一测试请求标识,确定的由所述应用服务器端响应于所述第一测试请求而产生的信息;
其中,所述第一代码执行信息包括第一风险信息;
所述信息发送模块,还用于向所述测试服务器端发送所述第一风险信息或由用户输入的第二风险信息,以便于所述测试服务器端从存储所述测试服务器端的程序源文件的数据集合中,确定与所述第一风险信息和/或所述第二风险信息对应的风险程序源文件;
所述代码执行信息展示模块,还用于至少接收并且展示所述风险程序源文件;
所述代码执行信息展示模块,还用于响应于第一用户操作,生成攻击报文;
所述信息发送模块,还用于向所述应用服务器端发送测试报文,并且向所述测试服务器端发送与所述攻击报文对应的测试报文标识,所述测试报文包括所述攻击报文以及由所述测试客户端生成的所述测试报文标识,以便所述测试服务器端基于所述测试报文标识,确定所述应用服务器端响应于所述测试报文产生的第二代码执行信息;以及
所述代码执行信息展示模块,还用于至少接收并展示所述第二代码执行信息。
11.一种测试系统,包括:
程序分析子系统,用于执行如权利要求1-4任一项所述的方法;以及
黑盒检测客户端,用于执行如权利要求5-7任一项所述的方法。
12.一种电子设备,包括:
一个或多个处理器;存储器,用于存储一个或多个指令,其中,当所述一个或多个指令被所述一个或多个处理器执行时,使得所述一个或多个处理器实现权利要求1至7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010861626.7A CN111813696B (zh) | 2020-08-25 | 2020-08-25 | 应用测试方法、装置、系统及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010861626.7A CN111813696B (zh) | 2020-08-25 | 2020-08-25 | 应用测试方法、装置、系统及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111813696A CN111813696A (zh) | 2020-10-23 |
CN111813696B true CN111813696B (zh) | 2023-09-15 |
Family
ID=72860594
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010861626.7A Active CN111813696B (zh) | 2020-08-25 | 2020-08-25 | 应用测试方法、装置、系统及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111813696B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112817849A (zh) * | 2021-01-28 | 2021-05-18 | 北京达佳互联信息技术有限公司 | 测试数据处理方法、装置、设备及存储介质 |
CN113051177B (zh) * | 2021-04-20 | 2022-10-04 | 支付宝(杭州)信息技术有限公司 | 测试方法和装置 |
CN113592305A (zh) * | 2021-07-29 | 2021-11-02 | 北京百度网讯科技有限公司 | 测试方法、装置、电子设备以及存储介质 |
CN113992532B (zh) * | 2021-12-27 | 2022-03-25 | 广州敏行区块链科技有限公司 | 一种区块链底层系统的测试方法及其系统 |
CN114598524B (zh) * | 2022-03-07 | 2023-11-17 | 北京百度网讯科技有限公司 | 检测代理工具的方法、装置、设备以及存储介质 |
CN115935341B (zh) * | 2022-11-10 | 2023-09-19 | 杭州孝道科技有限公司 | 一种漏洞防御方法、系统、服务器及存储介质 |
CN115794639B (zh) * | 2022-12-05 | 2023-09-26 | 北京领雁科技股份有限公司 | 基于流程的可视化测试及可视化仿真模拟测试系统和方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8510716B1 (en) * | 2006-11-14 | 2013-08-13 | Parasoft Corporation | System and method for simultaneously validating a client/server application from the client side and from the server side |
CN106851695A (zh) * | 2017-03-29 | 2017-06-13 | 北京小米移动软件有限公司 | 一种测试网速的方法、装置和系统 |
CN109241343A (zh) * | 2018-07-27 | 2019-01-18 | 北京奇艺世纪科技有限公司 | 一种刷量用户识别系统、方法及装置 |
CN110266762A (zh) * | 2019-05-20 | 2019-09-20 | 广州视琨电子科技有限公司 | 一种数据上传方法、系统、装置及存储介质 |
CN110427323A (zh) * | 2019-07-29 | 2019-11-08 | 天津车之家数据信息技术有限公司 | 一种应用测试方法、装置、代理服务器和系统 |
-
2020
- 2020-08-25 CN CN202010861626.7A patent/CN111813696B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8510716B1 (en) * | 2006-11-14 | 2013-08-13 | Parasoft Corporation | System and method for simultaneously validating a client/server application from the client side and from the server side |
CN106851695A (zh) * | 2017-03-29 | 2017-06-13 | 北京小米移动软件有限公司 | 一种测试网速的方法、装置和系统 |
CN109241343A (zh) * | 2018-07-27 | 2019-01-18 | 北京奇艺世纪科技有限公司 | 一种刷量用户识别系统、方法及装置 |
CN110266762A (zh) * | 2019-05-20 | 2019-09-20 | 广州视琨电子科技有限公司 | 一种数据上传方法、系统、装置及存储介质 |
CN110427323A (zh) * | 2019-07-29 | 2019-11-08 | 天津车之家数据信息技术有限公司 | 一种应用测试方法、装置、代理服务器和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN111813696A (zh) | 2020-10-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111813696B (zh) | 应用测试方法、装置、系统及电子设备 | |
US10182068B2 (en) | Determine vulnerability using runtime agent and network sniffer | |
US8949996B2 (en) | Transforming unit tests for security testing | |
CN106294102B (zh) | 应用程序的测试方法、客户端、服务器及系统 | |
US9479526B1 (en) | Dynamic comparative analysis method and apparatus for detecting and preventing code injection and other network attacks | |
US9268945B2 (en) | Detection of vulnerabilities in computer systems | |
CN110390202B (zh) | 用于检测业务逻辑漏洞的方法、装置、系统、设备及介质 | |
US10505966B2 (en) | Cross-site request forgery (CSRF) vulnerability detection | |
US8458798B2 (en) | Detection of vulnerabilities in computer systems | |
US20180349602A1 (en) | Security testing framework including virtualized server-side platform | |
US20160154962A1 (en) | Automated security assessment of business-critical systems and applications | |
CN112906011B (zh) | 漏洞发现方法、测试方法、安全测试方法及相关装置、平台 | |
CN110929264B (zh) | 漏洞检测方法、装置、电子设备及可读存储介质 | |
CN112906010B (zh) | 一种自动化攻击测试方法及基于此的自动化安全测试方法 | |
CN111783096B (zh) | 检测安全漏洞的方法和装置 | |
CN113114680B (zh) | 用于文件上传漏洞的检测方法和检测装置 | |
CN113162945B (zh) | 漏洞检测分析方法、装置及基于此的漏洞验证方法、系统 | |
CN113158197B (zh) | 一种基于主动iast的sql注入漏洞检测方法、系统 | |
US20170230405A1 (en) | System and Method for Managed Security Assessment and Mitigation | |
US20220198025A1 (en) | Web Attack Simulator | |
CN113158191B (zh) | 基于智能探针的漏洞验证方法及相关iast方法、系统 | |
CN114003794A (zh) | 资产收集方法、装置、电子设备和介质 | |
CN107301346A (zh) | 一种利用白名单机制实现安卓设备app快速安全检测方法 | |
KR102165037B1 (ko) | 코드 커버리지 측정 장치, 코드 커버리지 측정 장치의 코드 커버리지 측정 방법, 및 코드 커버리지 측정 시스템 | |
WO2022155685A1 (en) | Web attack simulator |
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 |