CN113111005A - 应用程序测试方法和装置 - Google Patents

应用程序测试方法和装置 Download PDF

Info

Publication number
CN113111005A
CN113111005A CN202110490817.1A CN202110490817A CN113111005A CN 113111005 A CN113111005 A CN 113111005A CN 202110490817 A CN202110490817 A CN 202110490817A CN 113111005 A CN113111005 A CN 113111005A
Authority
CN
China
Prior art keywords
result
vulnerability
processing
application program
test
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
Application number
CN202110490817.1A
Other languages
English (en)
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.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen 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 Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202110490817.1A priority Critical patent/CN113111005A/zh
Publication of CN113111005A publication Critical patent/CN113111005A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3692Test management for test results 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/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请提供了一种应用程序测试方法和装置。该方法包括:获取应用程序运行请求,运行请求中包含有向应用程序中的目标函数传入的目标参数;对目标参数进行镜像处理,得到与目标参数对应的镜像参数,将镜像参数与对应目标函数的漏洞测试规则进行组合,得到组合结果;基于应用程序对目标参数在传入目标函数之前的处理方式,对组合结果进行处理,得到处理结果;基于处理结果,确定应用程序的测试结果,以实现高效测试应用程序,有效保护用户的隐私,保障用户的用网安全。

Description

应用程序测试方法和装置
技术领域
本申请涉及计算机及通信技术领域,特别涉及一种应用程序测试方法和装置。
背景技术
随着互联网的日益发展,互联网安全受到了越来越多的重视。在现有技术中,可以对应用程序进行测试,将测试结果为没有漏洞的应用程序供用户使用,能够大大提高互联网的安全性。
现有的测试方法通常是重现应用程序处理数据的过程,以监控应用程序在重现否有漏洞。但是,应用程序处理数据的过程可能十分繁杂,重现需要花费大量时间和资源。
发明内容
本申请旨在提供一种应用程序测试方法和装置,能够在一定程度上节约测试应用程序花费的时间和资源。
根据本申请实施例的一个方面,提供了一种应用程序测试方法,包括:获取应用程序运行请求,所述运行请求中包含有向所述应用程序中的目标函数传入的目标参数;对所述目标参数进行镜像处理,得到与所述目标参数对应的镜像参数,将所述镜像参数与对应所述目标函数的漏洞测试规则进行组合,得到组合结果;基于所述应用程序对所述目标参数在传入所述目标函数之前的处理方式,对所述组合结果进行处理,得到处理结果;基于所述处理结果,确定所述应用程序的测试结果。
根据本申请实施例的一个方面,提供了一种应用程序测试装置,包括:获取模块,配置为获取应用程序运行请求,所述运行请求中包含有向所述应用程序中的目标函数传入的目标参数;镜像模块,配置为对所述目标参数进行镜像处理,得到与所述目标参数对应的镜像参数,将所述镜像参数与对应所述目标函数的漏洞测试规则进行组合,得到组合结果;处理模块,配置为基于所述应用程序对所述目标参数在传入所述目标函数之前的处理方式,对所述组合结果进行处理,得到处理结果;测试模块,配置为基于所述处理结果,确定所述应用程序的测试结果。
在本申请的一个实施例中,基于前述方案,所述测试模块配置为:获取所述处理结果中的漏洞测试规则,作为结果漏洞测试规则;若所述漏洞测试规则与所述处理结果中的结果漏洞测试规则相同,则确定所述应用程序的测试结果为有漏洞;若所述漏洞测试规则与所述处理结果中的结果漏洞测试规则不同,则确定所述应用程序的测试结果为没有漏洞。
在本申请的一个实施例中,基于前述方案,所述测试模块配置为:获取所述处理结果中的漏洞测试规则,作为结果漏洞测试规则;若对应所述目标函数的漏洞测试规则是命令注入漏洞测试规则或查询注入漏洞测试规则,则将所述处理结果进行拆分得到拆分结果;若所述拆分结果中,所述结果漏洞测试规则与所述处理结果中除了所述结果漏洞测试规则之外的其他内容位于一个语法单元中,则确定所述应用程序的测试结果为有漏洞;若所述拆分结果中,所述结果漏洞测试规则独立于所述处理结果中除了所述结果漏洞测试规则之外的其他内容,则确定所述应用程序的测试结果为没有漏洞。
在本申请的一个实施例中,基于前述方案,所述测试模块配置为:若对应所述目标函数的漏洞测试规则是文件读取漏洞测试规则,则基于所述处理结果,获取所述文件读取漏洞测试对应的路径信息;若所述路径信息中的作用域不统一,则将所述路径信息中的作用域统一,得到统一后的路径信息;若所述统一后的路径信息是目标路径,则确定所述应用程序有漏洞;若所述统一后的路径信息不是所述目标路径,则确定所述应用程序没有漏洞。
在本申请的一个实施例中,基于前述方案,所述处理方式包括检测处理、修正处理、及传递处理,所述处理模块配置为:对所述组合结果进行检测处理,得到检测结果;若所述检测结果为所述组合结果不符合所述检测处理对应的检测规则,则基于所述处理方式中对应所述检测处理的修正处理,对所述组合结果进行修正,得到符合所述检测处理对应的检测规则的组合结果;对符合所述检测处理对应的检测规则的组合结果进行传递处理;基于传递后的符合所述检测处理对应的检测规则的组合结果,得到所述处理结果。
在本申请的一个实施例中,基于前述方案,所述测试模块还配置为:获取所述漏洞测试规则对应的漏洞测试标记;在所述组合结果中加入所述漏洞测试标记;基于所述应用程序对所述目标参数在传入所述目标函数之前的处理方式,对加入漏洞测试标记的组合结果进行处理,得到标记处理结果;基于所述标记处理结果,确定所述应用程序的测试结果。
在本申请的一个实施例中,基于前述方案,所述测试模块配置为:若所述标记处理结果中存在所述漏洞测试标记,则基于所述标记处理结果,确定所述应用程序的测试结果;若所述标记处理结果中不存在所述漏洞测试标记,则确定所述应用程序的测试结果为没有漏洞。
在本申请的一个实施例中,基于前述方案,所述测试模块配置为:若所述标记处理结果中存在所述漏洞测试标记,且所述漏洞测试标记对应的漏洞测试规则为除了预设漏洞测试规则之外的漏洞测试规则,则确定所述应用程序的测试结果为存在漏洞。
在本申请的一个实施例中,基于前述方案,所述镜像模块还配置为:获取所述目标参数对应的漏洞测试规则的数量;对所述目标参数进行镜像处理,得到与所述漏洞测试规则的数量相同的镜像参数;将所述镜像参数与所述漏洞测试规则一一对应进行组合,得到与所述漏洞测试规则的数量相同的组合结果。
根据本申请实施例的一个方面,提供了一种计算机可读程序介质,其存储有计算机程序指令,当所述计算机程序指令被计算机执行时,使计算机执行上任一项所述的方法。
根据本申请实施例的一个方面,提供了一种电子设备,包括:处理器;存储器,所述存储器上存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,实现如上任一项所述的方法。
根据本申请实施例的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各种可选实施例中提供的方法。
本申请的实施例提供的技术方案可以包括以下有益效果:
在本申请的一些实施例所提供的技术方案中,通过获取应用程序运行请求,运行请求中包含有向应用程序中的目标函数传入的目标参数;对目标参数进行镜像处理,得到与目标参数对应的镜像参数,将镜像参数与对应目标函数的漏洞测试规则进行组合,得到组合结果,在使得组合结果能够携带漏洞测试特征的同时,又能避免污染应用程序;基于应用程序对目标参数在传入目标函数之前的处理方式,对组合结果进行处理,得到处理结果;基于处理结果,确定应用程序的测试结果,在应用程序运行过程中即可测试应用程序的漏洞,不必重现应用程序处理数据的过程,节约了大量的时间和资源。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并于说明书一起用于解释本申请的原理。
图1A示出了可以应用本申请实施例的技术方案的示例性系统架构的示意图;
图1B示出了可以应用本申请实施例的技术方案的示例性系统架构的示意图;
图2A示出了可以应用本申请一个实施例的技术方案的数据共享系统的示意图;
图2B示出了可以应用本申请一个实施例的区块链示意图;
图2C示出了可以应用本申请一个实施例的区块链中新区块生成的示意图;
图3示意性示出了根据本申请的一个实施例的应用程序测试方法的流程图;
图4示意性示出了根据本申请的一个实施例的应用程序测试装置的框图;
图5是根据一示例性实施例示出的一种电子设备的硬件图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本申请将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
此外,所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施例中。在下面的描述中,提供许多具体细节从而给出对本申请的实施例的充分理解。然而,本领域技术人员将意识到,可以实践本申请的技术方案而没有特定细节中的一个或更多,或者可以采用其它的方法、组元、装置、步骤等。在其它情况下,不详细示出或描述公知方法、装置、实现或者操作以避免模糊本申请的各方面。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解,而有的操作/步骤可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
云技术(Cloud technology)是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。
云技术(Cloud technology)基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,只能通过云计算来实现。
云安全(Cloud Security)是指基于云计算商业模式应用的安全软件、硬件、用户、机构、安全云平台的总称。云安全融合了并行处理、网格计算、未知病毒行为判断等新兴技术和概念,通过网状的大量客户端对网络中软件行为的异常监测,获取互联网中木马、恶意程序的最新信息,并发送到服务端进行自动分析和处理,再把病毒和木马的解决方案分发到每一个客户端。
云安全主要研究方向包括:1.云计算安全,主要研究如何保障云自身及云上各种应用的安全,包括云计算机系统安全、用户数据的安全存储与隔离、用户接入认证、信息传输安全、网络攻击防护、合规审计等;2.安全基础设施的云化,主要研究如何采用云计算新建与整合安全基础设施资源,优化安全防护机制,包括通过云计算技术构建超大规模安全事件、信息采集与处理平台,实现对海量信息的采集与关联分析,提升全网安全事件把控能力及风险控制能力;3.云安全服务,主要研究各种基于云计算平台为用户提供的安全服务,如防病毒服务等。
本申请实施例提供的方案涉及云技术领域中的云安全技术,通过使用本申请的应用程序测试方法实现云安全服务,能够高效、准确的识别出应用程序漏洞,具体通过如下实施例进行说明:
图1A示出了可以应用本申请实施例的技术方案的示例性系统架构100A的示意图。
如图1A所示,系统架构100A可以包括客户端101A、网络102A和服务器103A。网络102A用以在客户端101A和服务器103A之间提供通信链路的介质。网络102A可以包括各种连接类型,例如有线通信链路、无线通信链路等等,本申请在此不做限制。
应该理解,图1A中的客户端101A、网络102A和服务器103A的数目仅仅是示意性的。根据实现需要,可以具有任意数目的客户端101A、网络102A和服务器103A。比如服务器103A可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。客户端101A可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。
在本申请的一个实施例中,服务器103A通过获取客户端101A发送的应用程序运行请求,运行请求中包含有向应用程序中的目标函数传入的目标参数;对目标参数进行镜像处理,得到与目标参数对应的镜像参数,将镜像参数与对应目标函数的漏洞测试规则进行组合,得到组合结果,在使得组合结果能够携带漏洞测试对应的特征的同时,又能避免污染应用程序;基于应用程序对目标参数在传入目标函数之前的处理方式,对组合结果进行处理,得到处理结果;基于处理结果,确定应用程序的测试结果,在应用程序运行过程中即可测试应用程序的漏洞,不必重现应用程序处理数据的过程,节约了大量的时间和资源。
需要说明的是,本申请实施例所提供的应用程序测试方法一般由服务器103A执行,相应地,应用程序测试装置一般设置于服务器103A中。但是,在本申请的其它实施例中,客户端101A也可以与服务器103A具有相似的功能,从而执行本申请实施例所提供的应用程序测试方法。
图1B示出了可以应用本申请实施例的技术方案的示例性系统架构100B的示意图。
如图1B所示,系统架构100B可以包括请求客户端101B、Web服务器102B、解析器103B、交互式扫描代理(Interactive Application Security Testing agent,IASTagent)104B和分析终端105B。应该理解,图1B中的请求客户端101B、Web服务器102B、解析器103B、交互式扫描代理104B和分析终端105B的数目仅仅是示意性的。根据实现需要,可以具有任意数目的请求客户端101B、Web服务器102B、解析器103B、交互式扫描代理104B和分析终端105B。
在本申请的一个实施例中,Web服务器102B通过获取请求客户端101B发送的应用程序运行请求,运行请求中包含有向应用程序中的目标函数传入的目标参数;Web服务器102B将运行请求发送至解析器103B中,解析器103B对运行请求进行解析,得到应用程序运行调用的函数中向目标函数中传入的目标参数;解析器103B将目标参数和发送至交互式扫描代理104B中,交互式扫描代理104B中预存有对应于目标函数的漏洞测试规则,交互式扫描代理104B对目标参数进行镜像处理,得到与目标参数对应的镜像参数;交互式扫描代理104B将镜像参数与对应目标函数的漏洞测试规则进行组合,得到组合结果,在使得组合结果能够携带漏洞测试对应的特征的同时,又能避免污染应用程序;交互式扫描代理104B基于应用程序对目标参数在传入目标函数之前的处理方式,对组合结果进行处理,得到处理结果;交互式扫描代理104B将处理结果发送至分析终端105B,分析终端105B基于处理结果,确定应用程序的测试结果,分析终端105B将测试结果形成工单返回至请求客户端101B,在应用程序运行过程中即可测试应用程序的漏洞,不必重现应用程序处理运行请求的过程,节约了大量的时间和资源。同时,解析器103B对运行请求进行解析处理,将运行结果通过Web服务器102B返回给请求客户端101B,测试过程不干扰应用程序的运行过程。
在本申请的一个实施例中,Web服务器102B用于提供Web服务,接收通过请求客户端101B发送的一切外部超文本传输协议(HyperText Transfer Protocol,HTTP)请求,业务可以把自己的Web应用程序部署在Web服务器下,构成业务Web应用程序测试环境,Web服务器把属于动态脚本的请求,转发给后端解析器103B处理,再把解析器处理结果反馈给请求客户端101B。
在本申请的一个实施例中,解析器103B是动态语言的脚本解析引擎,动态语言可以是英文超级文本预处理语言(Hypertext Preprocessor,PHP)、Java、Go语言(The GoProgramming Language,golang)、运行于服务端的JavaScript解释器(node.js)、面向对象程序设计脚本语言(ruby)、python等,解析器103B处理由Web服务器102B转发过来的动态脚本请求,解析器103B会解析动态脚本请求内容,并把处理结果返回给Web服务器102B。
在本申请的一个实施例中,交互式扫描代理104B作为解析器103B的扩展模块,随解析器103B一起启动。
图2A示出了可以应用本发明实施例的技术方案的示例性数据共享系统200的示意图。
参见图2A所示的数据共享系统200,数据共享系统200是指用于进行节点与节点之间数据共享的系统。每个节点201在进行正常工作可以接收到输入信息,并基于接收到的输入信息维护该数据共享系统200内的共享数据。为了保证数据共享系统200内的信息互通,数据共享系统200中的每个节点201之间可以存在信息连接,节点201之间可以通过上述信息连接进行信息传输。例如,当数据共享系统200中的任意节点201接收到输入信息时,数据共享系统200中的其他节点201便根据共识算法获取该输入信息,将该输入信息作为共享数据中的数据进行存储,使得数据共享系统200中全部节点201上存储的数据均一致。
对于数据共享系统200中的每个节点201,均具有与其对应的节点标识,而且数据共享系统200中的每个节点201均可以存储有数据共享系统200中其他节点201的节点标识,以便后续根据其他节点201的节点标识,将生成的区块广播至数据共享系统200中的其他节点201。每个节点201中可维护一个如下表所示的节点标识列表,将节点名称和节点标识对应存储至该节点标识列表中。其中,节点标识可为IP(Internet Protocol,网络之间互联的协议)地址以及其他任一种能够用于标识该节点的信息,表1中仅以IP地址为例进行说明。
节点名称 节点标识
节点1 117.114.151.174
节点2 117.116.189.145
节点N 119.123.789.258
表1
图2B示出了可以应用本申请一个实施例的区块链的示意图。
数据共享系统200中的每个节点均存储一条相同的区块链。区块链由多个区块组成,参见图2B,区块链由多个区块组成,创始块中包括区块头和区块主体,区块头中存储有输入信息特征值、版本号、时间戳和难度值,区块主体中存储有输入信息;创始块的下一区块以创始块为父区块,下一区块中同样包括区块头和区块主体,区块头中存储有当前区块的输入信息特征值、父区块的区块头特征值、版本号、时间戳和难度值,并以此类推,使得区块链中每个区块中存储的区块数据均与父区块中存储的区块数据存在关联,保证了区块中输入信息的安全性。
图2C示出了可以应用本申请一个实施例的区块链中新区块生成的示意图。
在生成区块链中的各个区块时,参见图2C,区块链所在的节点在接收到输入信息时,对输入信息进行校验,完成校验后,将输入信息存储至内存池中,并更新其用于记录输入信息的哈希树;之后,将更新时间戳更新为接收到输入信息的时间,并尝试不同的随机数,多次进行特征值计算,使得计算得到的特征值可以满足下述公式:
SHA256(SHA256(version+prev_hash+merkle_root+ntime+nbits+x))<TARGET
其中,SH256为计算特征值所用的特征值算法;version(版本号)为区块链中相关区块协议的版本信息;prev_hsh为当前区块的父区块的区块头特征值;merkle_root为输入信息的特征值;ntime为更新时间戳的更新时间;nbits为当前难度,在一段时间内为定值,并在超出固定时间段后再次进行确定;x为随机数;TRGET为特征值阈值,该特征值阈值可以根据nbits确定得到。
这样,当计算得到满足上述公式的随机数时,便可将信息对应存储,生成区块头和区块主体,得到当前区块。随后,区块链所在节点根据数据共享系统200中其他节点201的节点标识,将新生成的区块分别发送给其所在的数据共享系统200中的其他节点201,由其他节点201对新生成的区块进行校验,并在完成校验后将新生成的区块添加至其存储的区块链中。
在本申请的一个实施例中,数据共享系统200中存储的输入信息可以是漏洞测试规则、目标参数、组合结果或处理结果。使用区块链基础处理本申请的应用程序测试方法,能够提高获取到数据的准确性,从而提高应用程序测试的准确性。
以下对本申请实施例的技术方案的实现细节进行详细阐述:
图3示意性示出了根据本申请的一个实施例的应用程序测试方法的流程图,该应用程序测试方法的执行主体可以是服务器,比如可以是图1A中所示的服务器103A。
参照图3所示,该应用程序测试方法至少包括步骤S310至步骤S340,详细介绍如下:
在步骤S310中,获取应用程序运行请求,运行请求中包含有向应用程序中的目标函数传入的目标参数。
在本申请的一个实施例中,应用程序可以是Web应用程序,应用程序运行请求中可以是为了测试应用程序功能时,向应用程序发送的功能测试请求。
在本申请的一个实施例中,目标函数可以在应用程序执行运行请求时调用的函数中选择,可以选择决定应用程序执行运行请求进程的继续或结束的函数作为目标函数,可以是执行运行请求时应用程序调用的函数中的敏感函数。例如,目标函数可以是exec函数、system函数、popen函数、mysql_query函数、mysqli_query函数、eval函数、assert函数、readfile函数、file_get_contents函数、curl_exec函数或file_get_contents函数等。
在本申请的一个实施例中,目标参数可以是应用程序响应运行请求而向目标函数中传入的参数,即是在应用程序响应运行请求而使目标函数被调用时,目标函数执行的参数。
在本申请的一个实施例中,可以向应用程序中发送运行请求,在应用程序执行运行请求的过程中,监测运行请求中包含的全部参数的传递路径,将全部参数中传递至目标函数中的参数作为目标参数。
在本申请的其他实施例中,可以基于应用程序和运行请求预测运行请求中包含的全部参数的传递路径,将预测到的全部参数中传递至目标函数中的参数作为目标参数。
在步骤S320中,对目标参数进行镜像处理,得到与目标参数对应的镜像参数,将镜像参数与对应目标函数的漏洞测试规则进行组合,得到组合结果。
在本申请的一个实施例中,镜像参数可以是与目标参数相同的参数。
在本申请的一个实施例中,目标函数与漏洞测试规则的对应关系可以基于经验确定,例如,若目标函数可以是exec函数、system函数或popen函数,则漏洞测试规则是命令注入漏洞测试规则;若目标函数是mysql_query函数或mysqli_query函数,则漏洞测试规则可以是SQL注入漏洞测试规则;若目标函数是eval函数或assert函数,则漏洞测试规则可以是代码注入漏洞测试规则;若目标函数是readfile函数或file_get_contents函数,则漏洞测试规则可以是文件读取漏洞测试规则;若目标函数是curl_exec函数或file_get_contents函数,则漏洞测试规则可以是服务端跨站请求伪造漏洞测试规则。
在本申请的一个实施例中,可以获取目标参数对应的漏洞测试规则的数量;对目标参数进行镜像处理,得到与漏洞测试规则的数量相同的镜像参数;将镜像参数与漏洞测试规则一一对应进行组合,得到与漏洞测试规则的数量相同的组合结果,从而基于每个组合结果确定与组合结果中包含的漏洞测试规则对应的运行请求的测试结果,在应用程序响应不同的运行请求时,得到的组合结果是不同的,以避免应用程序执行多个运行请求时发生混淆,便于各个运行请求的执行。
在本申请的一个实施例中,可以将漏洞测试规则与镜像参数进行拼接或进行其他组合处理,以实现漏洞测试规则与镜像参数进行组合。拼接方式可以是将漏洞测试规则连接在镜像参数后,拼接方式也可以是将漏洞测试规则连接在镜像参数前。漏洞测试规则与镜像参数格式相同,均可以是字符格式,以使得到的组合结果能够顺利进行原本对参数执行的处理。对镜像参数进行组合而不是直接对目标参数进行组合,能够避免污染应用程序的运行进程,能够使请求客户端101B准确的得到测试结果。此外,由于组合结果中携带了漏洞测试规则这一对应于漏洞测试的特征,基于组合结果确定的测试结果能够准确的体现出运行请求的测试结果。
在步骤S330中,基于应用程序对目标参数在传入目标函数之前的处理方式,对组合结果进行处理,得到处理结果。
在本申请的一个实施例中,应用程序对目标参数在传入目标函数之前的处理方式可以包括检测处理、对应于检测处理的修正处理、对应于检测处理的传递处理以及运算处理等。运算处理可以包括算术运算、连接运算、关系运算、赋值运算和逻辑运算等。
在本申请的一个实施例中,检测处理、对应于检测处理的修正处理、对应于检测处理的传递处理之间的关系可以是:若组合结果经过检测处理得到的处理结果为组合结果符合检测处理对应的检测规则,则对组合结果进行检测处理的传递处理;若组合结果经过检测处理得到的处理结果为组合结果不符合检测处理对应的检测规则,则对组合结果进行检测处理的修正处理,得到符合检测处理对应的检测规则的组合结果,再对组合结果进行检测处理的传递处理。
在本申请的一个实施例中,可以对组合结果进行检测处理,得到检测结果;若检测结果为组合结果不符合检测处理对应的检测规则,则基于处理方式中对应检测处理的修正处理,对组合结果进行修正,得到符合检测处理对应的检测规则的组合结果;对符合检测处理对应的检测规则的组合结果进行传递处理;基于传递后的符合检测处理对应的检测规则的组合结果,得到处理结果。
在本申请的一个实施例中,可以按照应用程序对目标参数在传入目标函数之前的处理方式出现的顺序,基于处理方式中首先出现的检测处理,对组合结果进行检测,得到检测结果;若检测结果为组合结果不符合首先出现的检测处理对应的检测规则,则基于处理方式中对应首先出现的检测处理的修正处理,对组合结果进行修正,得到符合首先出现的检测处理对应的检测规则的组合结果;基于处理方式中对应首次出现的检测处理的传递处理,将不必进行修正处理和修正处理后符合首次出现的检测处理对应的检测规则的组合结果,传递至处理方式中与首次出现的检测处理相邻的下一处检测处理进行检测,对不符合下一处检测处理的检测规则的组合结果,进行处理方式中对应下一处检测处理的下一处修正处理,得到符合下一处检测处理对应的检测规则的组合结果,对不必进行修正处理和修正处理后符合下一处检测处理对应的检测规则的组合结果,进行处理方式中对应下一处检测处理的下一次传递处理,直至基于处理方式中的最后一处传递处理,对组合结果进行传递,得到处理结果。
在本申请的一个实施例中,可以是一处检测处理检测某种漏洞,若检测结果为组合结果不符合用于检测该种漏洞的检测规则,则将检测结果发送至修复该种漏洞的修正处理,即可以将能检测和修复同种漏洞的检测处理和修正处理确定有对应关系。可以是若检测结果为组合结果符合用于检测该种漏洞的检测规则,则将检测结果发送至符合该种检测规则的传递处理,可以将用于传递符合该种检测规则的传递处理,作为与检测该种漏洞对应的传递处理。在本申请的其他实施例中,还可以将检测结果发送至用于传递不具有该种漏洞的组合结果的传递处理,将用于传递不具有该种漏洞的组合结果的传递处理,作为与检测该种漏洞对应的传递处理。
在本申请的一个实施例中,组合结果为字符格式时,检测处理可以是检测组合结果的字符是否符合检测处理的检测规则,例如,检测规则可以是检测组合结果中是否包含某个特定字符,若组合结果中包含该特定字符,则确定组合结果不符合检测处理的检测规则;检测处理对应的修正处理可以是删除或替换组合结果中的该特定字符。
在本申请的一个实施例中,基于应用程序对目标参数在传入目标函数之前的处理方式,对组合结果进行处理,得到处理结果的过程,可以通过将组合结果传入应用程序执行,但是在应用程序将组合结果传入至目标函数时,目标函数可以检测到传入的是组合结果,这时目标函数就停止执行组合结果,以防止产生脏数据,并将组合结果上报给交互式扫描代理104B,交互式扫描代理104B监控解析器103B中的目标函数,上报目标函数执行时包含镜像参数的参数信息。
在本申请的一个实施例中,交互式扫描代理104B针对不同的编程语言需要做分别开发适配,例如PHP/Java/Golang/node.js/ruby/python等,当编程语言为PHP时,交互式扫描代理104B监控的函数可以包括:用于SQL查询的mysql_query、mysqli_query、mysqli::query、mysqli_real_query、mysqli::real_query、mysqli_prepare、mysqli::prepare、PDO::query、PDO::exec、PDO::prepare、pg_query、pg_send_query、pg_prepare、SQLite3::query、SQLite3::exec、SQLite3::querySingle等SQL查询函数;用于命令执行的passthru、system、exec、shell_exec、proc_open、popen、pcntl_exec等命令执行函数;用于代码执行的eval、assert等代码执行函数;用于文件操作的file、readfile、file_get_contents、fopen、SplFileObject::_construct、copy、rename、move_uploaded_file、include等文件操作函数,以及用于网络请求的curl_exec等网络请求函数。
在本申请的一个实施例中,当编程语言为Java时,交互式扫描代理104B监控的函数可以包括:用于SQL查询的com.mysql.jdbc.PreparedStatement、com.mysql.cj.jdbc.Prepared Statement、com.mysql.cj.jdbc.Client PreparedStatement、com.mysql.cj.jdbc.ClientPreparedStatement、org.sqlite.PrepStmt、org.sqlite.jdbc3.JDBC3 Prepared Statement、oracle.jdbc.driver.Oracle PreparedStatement、com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement、org.postgresql.jdbc.Pg Prepared Statement、org.postgresql.jdbc1.AbstractJdbc1Statement、org.postgresql.jdbc2.AbstractJdbc2 Statement、org.postgresql.jdbc3.AbstractJdbc3 Statement、org.postgresql.jdbc3g.AbstractJdbc3g Statement、org.postgresql.jdbc4.AbstractJdbc4 Statement、org.hsqldb.jdbc.JDBC PreparedStatement、org.postgresql.jdbc.PgPreparedStatement、com.mysql.jdbc.StatementImpl、com.mysql.cj.jdbc.StatementImpl、org.sqlite.Stmt、org.sqlite.jdbc3.JDBC3Statement、oracle.jdbc.driver.OracleStatement、com.microsoft.sqlserver.jdbc.SQLServer Statement、org.postgresql.jdbc.PgStatement、org.postgresql.jdbc1.AbstractJdbc1Statement、org.postgresql.jdbc2.AbstractJdbc2Statement、org.postgresql.jdbc3.AbstractJdbc3 Statement、org.postgresql.jdbc3g.AbstractJdbc3g Statement、org.postgresql.jdbc4.AbstractJdbc4Statement、org.hsqldb.jdbc.JDBCStatement等SQL查询函数;用于命令执行的java.lang.ProcessBuilder、java.lang.ProcessImpl、java.lang.UNIXProcess、java.lang.ProcessImpl等命令执行函数;用于代码执行的ognl.OgnlParser.topLevelExpression等代码执行函数;用于文件操作的org.apache.commons.fileupload.disk.DiskFileItem.setHeaders、org.apache.commons.fileupload.FileUploadBase.parseRequest、java.io.FileInputStream、java.io.FileOutputStream、java.io.File.renameTo、java.io.File.list等文件操作函数;以及用于网络请求的org.apache.commons.httpclient.URI、org.apache.http.impl.client.Closeable Http Client、org.apache.http.impl.client.Auto Retry HttpClient、org.apache.http.impl.client.Decompressing Http Client、org.apache.http.impl.client.AbstractHttpClient、java.net.URLConnection$1、java.net.HttpURLConnection、java.net.HttpURLConnection、java.net.Socket、com.squareup.okhttp.Call$ApplicationInterceptor Chain、okhttp3.Real Call$ApplicationInterceptor Chain、okhttp3.internal.http.RealInterceptor Chain、sun.net.www.protocol.http.Http URL Connection、weblogic.net.http.HttpURLConnection、weblogic.uddi.client.service.UDDIService等网络请求函数。
继续参照图3,在步骤S340中,基于处理结果,确定应用程序的测试结果。
在本申请的一个实施例中,可以获取处理结果中的漏洞测试规则,作为结果漏洞测试规则;若漏洞测试规则与结果漏洞测试规则相同,则确定应用程序的测试结果为有漏洞;若漏洞测试规则与结果漏洞测试规则不同,则确定应用程序的测试结果为没有漏洞。
在本申请的一个实施例中,可以对处理结果进行语法分析,确定应用程序的测试结果,可使用Bash语法分析方法(GNU Bourne-Again Shell)进行语法分析。
在本申请的一个实施例中,若对应目标函数的漏洞测试规则是命令注入漏洞测试规则,则可以获取处理结果中的漏洞测试规则,作为结果漏洞测试规则,可以将处理结果进行拆分得到拆分结果;若拆分结果中,结果漏洞测试规则与处理结果中除了结果漏洞测试规则之外的其他内容位于一个语法单元(token)中,则可以确定应用程序的测试结果为有漏洞;若拆分结果中,结果漏洞测试规则独立于处理结果中除了结果漏洞测试规则之外的其他内容,则可以确定应用程序的测试结果为没有漏洞。例如,处理结果为123B’T_S_T,其中结果漏洞测试规则为T_S_T,若拆分结果为123及B’T_S_T,则可以确定应用程序的测试结果为有漏洞;若拆分结果为123B’及T_S_T,则可以确定应用程序的测试结果为没有漏洞。
在该实施例中,若结果漏洞测试规则与处理结果中除了结果漏洞测试规则之外的其他内容位于一个语法单元中,则可以确定结果漏洞测试规则被当作镜像参数进行拆分,则后续对组合结果处理时,也会对结果漏洞测试规则执行本应只对镜像参数执行的处理,换言之,确定处理结果的步骤中没有识别出组合结果中加入了命令注入漏洞测试规则,因此,应用程序存在命令注入漏洞。
在该实施例中,可以通过识别处理结果的语义,以对处理结果进行拆分,以将应处于同一语法单元的内容拆分至一个语法单元中。
在本申请的一个实施例中,若对应目标函数的漏洞测试规则是查询注入漏洞测试规则,则可以获取处理结果中的漏洞测试规则,作为结果漏洞测试规则,可以将处理结果进行拆分得到拆分结果;若拆分结果中,结果漏洞测试规则与处理结果中除了结果漏洞测试规则之外的其他内容位于一个语法单元中,则确定应用程序的测试结果为有漏洞;若拆分结果中,结果漏洞测试规则独立于处理结果中除了测试标识之外的其他内容,则确定应用程序的测试结果为没有漏洞。在该实施例中,若结果漏洞测试规则与处理结果中除了结果漏洞测试规则之外的其他内容位于一个语法单元中,则可以确定结果漏洞测试规则被当作镜像参数进行拆分,则后续对组合结果处理时,也会对结果漏洞测试规则执行本应只对镜像参数执行的处理,换言之,确定处理结果的步骤中没有识别出组合结果中加入了查询注入漏洞测试规则,因此,应用程序存在查询注入漏洞。
在本申请的一个实施例中,若对应目标函数的漏洞测试规则是文件读取漏洞测试规则,则可以基于处理结果,获取文件读取漏洞测试对应的路径信息;若路径信息中的作用域不统一,即路径信息指向的不是同一个作用域中的内容,则将路径信息中的作用域统一,得到统一后的路径信息;若统一后的路径信息是目标路径,则可以确定应用程序有漏洞;若统一后的路径信息不是目标路径,则可以确定应用程序没有漏洞,其中,目标路径是文件读取漏洞测试规则针对的文件所在的路径,在测试之前可以获得。
在本申请的一个实施例中,可以通过确定路径信息中分隔符的位置确定路径信息中的作用域是否统一,例如,可以是若路径信息中出现多个连续分隔符,则确定路径信息中的作用域不统一,可以是将多个连续分隔符中除了位于第一个和最后一个分隔符之间的中间分隔符删除,以将路径信息中的作用域统一。在本申请的一个实施例中,可以获取漏洞测试规则对应的漏洞测试标记,在组合结果中加入漏洞测试标记;基于应用程序对目标参数在传入目标函数之前的处理方式,对加入漏洞测试标记的组合结果进行处理,得到标记处理结果;基于标记处理结果,确定应用程序的测试结果。应用程序对目标参数在传入目标函数之前的处理方式的执行过程中,为了确保顺利执行,会引入其他参数,漏洞测试标记可以用于区分标记处理结果与其他参数,从而便于根据标记处理结果确定应用程序的测试结果。
在本申请的一个实施例中,可以获取运行请求对应的漏洞测试标记,在运行请求对应的组合结果中加入运行请求对应的漏洞测试标记,以方便的识别出运行请求对应的标记处理结果。
在本申请的一个实施例中,若标记处理结果中存在漏洞测试标记,则可以基于标记处理结果,确定应用程序的测试结果;若标记处理结果中不存在漏洞测试标记,则可以确定应用程序的测试结果为没有漏洞。
在本申请的一个实施例中,若标记处理结果中存在漏洞测试标记,且漏洞测试标记对应的漏洞测试规则为除了预设漏洞测试规则之外的漏洞测试规则,则确定应用程序的测试结果为存在漏洞。
在该实施例中,预设漏洞测试规则可以是命令注入漏洞测试规则、查询注入漏洞测试规则以及文件读取漏洞测试规则。
在本申请的一个实施例中,若标记处理结果中存在漏洞测试标记,且漏洞测试标记对应的漏洞测试请求为命令注入漏洞运行请求或查询注入漏洞运行请求,则可以对标记处理结果进行拆分,若拆分后的标记处理结果中漏洞测试标记与处理结果中除了漏洞测试标记之外的其他内容位于一个语法单元中,则确定应用程序的测试结果为有漏洞;若拆分结果中,漏洞测试标记独立于处理结果中除了漏洞测试标记之外的其他内容,则确定应用程序的测试结果为没有漏洞。
在本申请的一个实施例中,若标记处理结果中存在漏洞测试标记,且漏洞测试标记对应的漏洞测试请求为文件读取漏洞运行请求,则可以基于标记处理结果获取文件读取漏洞测试对应的路径信息;若路径信息中的作用域不统一,则将路径信息中的作用域统一,得到统一后的路径信息;若统一后的路径信息是目标路径,则确定应用程序有漏洞;若统一后的路径信息不是目标路径,则确定应用程序没有漏洞。
在本申请的一个实施例中,若标记处理结果中存在漏洞测试标记,且漏洞测试标记对应的漏洞测试规则为除了预设漏洞测试请求之外的测试规则,则可以确定应用程序的测试结果为存在漏洞。若标记处理结果中存在漏洞测试标记,则说明在基于应用程序对目标参数在传入目标函数之前的处理方式,处理加入漏洞测试标记的组合结果的过程中,没有识别出组合结果中加入了漏洞测试标记,即应用程序中存在漏洞。
在该实施例中,预设漏洞测试请求可以是命令注入漏洞测试请求、查询注入漏洞测试请求以及文件读取漏洞测试请求。
在图3的实施例中,通过获取应用程序运行请求,运行请求中包含有向应用程序中的目标函数传入的目标参数;对目标参数进行镜像处理,得到与目标参数对应的镜像参数,将镜像参数与对应目标函数的漏洞测试规则进行组合,得到组合结果,在使得组合结果能够携带漏洞测试特征的同时,又能避免污染应用程序;基于应用程序对目标参数在传入目标函数之前的处理方式,对组合结果进行处理,得到处理结果;基于处理结果,确定应用程序的测试结果,在应用程序运行过程中即可测试应用程序的漏洞,不必重现应用程序处理数据的过程,节约了大量的时间和资源。
在图3的实施例中,只获取传入目标函数中的目标参数,能够在获得尽可能少的参数的情况的测试应用程序,从而高效、精确的发现Web应用程序中的漏洞。
以下介绍本申请的装置实施例,可以用于执行本申请上述实施例中的应用程序测试方法。对于本申请装置实施例中未披露的细节,请参照本申请上述的应用程序测试方法的实施例。
图4示意性示出了根据本申请的一个实施例的应用程序测试装置的框图。
参照图4所示,根据本申请的一个实施例的应用程序测试装置400,包括获取模块401、镜像模块402、处理模块403和测试模块404。
根据本申请实施例的一个方面,基于前述方案,获取模块401配置为获取应用程序运行请求,运行请求中包含有向应用程序中的目标函数传入的目标参数;镜像模块402配置为对目标参数进行镜像处理,得到与目标参数对应的镜像参数,将所述镜像参数与对应所述目标函数的漏洞测试规则进行组合,得到组合结果;处理模块403配置为基于应用程序对目标参数在传入目标函数之前的处理方式,对组合结果进行处理,得到处理结果;测试模块404配置为基于处理结果,确定应用程序的测试结果。
在本申请的一个实施例中,基于前述方案,测试模块404配置为:获取处理结果中的漏洞测试规则,作为结果漏洞测试规则;若漏洞测试规则与结果漏洞测试规则相同,则确定应用程序的测试结果为有漏洞;若漏洞测试规则与结果漏洞测试规则不同,则确定应用程序的测试结果为没有漏洞。
在本申请的一个实施例中,基于前述方案,测试模块404配置为:若对应目标函数的漏洞测试规则是命令注入漏洞测试规则或查询注入漏洞测试规则,则获取处理结果中的漏洞测试规则,作为结果漏洞测试规则;将处理结果进行拆分得到拆分结果;若拆分结果中,结果漏洞测试规则与处理结果中除了结果漏洞测试规则之外的其他内容位于一个语法单元中,则确定应用程序的测试结果为有漏洞;若拆分结果中,结果漏洞测试规则独立于处理结果中除了结果漏洞测试规则之外的其他内容,则确定应用程序的测试结果为没有漏洞。
在本申请的一个实施例中,基于前述方案,测试模块404配置为:若对应目标函数的漏洞测试规则是文件读取漏洞测试规则,则基于处理结果,获取文件读取漏洞测试对应的路径信息;若路径信息中的作用域不统一,则将路径信息中的作用域统一,得到统一后的路径信息;若统一后的路径信息是目标路径,则确定应用程序有漏洞;若统一后的路径信息不是目标路径,则确定应用程序没有漏洞。
在本申请的一个实施例中,基于前述方案,处理方式包括检测处理、修正处理、及传递处理,处理模块403配置为:对组合结果进行检测处理,得到检测结果;若检测结果为组合结果不符合检测处理对应的检测规则,则基于处理方式中对应检测处理的修正处理,对组合结果进行修正,得到符合检测处理对应的检测规则的组合结果;对符合检测处理对应的检测规则的组合结果进行传递处理;基于传递后的符合检测处理对应的检测规则的组合结果,得到所述处理结果。
在本申请的一个实施例中,基于前述方案,测试模块404还配置为:获取漏洞测试规则对应的漏洞测试标记;在组合结果中加入漏洞测试标记;基于应用程序对目标参数在传入目标函数之前的处理方式,对加入漏洞测试标记的组合结果进行处理,得到标记处理结果;基于标记处理结果,确定应用程序的测试结果。
在本申请的一个实施例中,基于前述方案,测试模块404配置为:若标记处理结果中存在漏洞测试标记,则基于标记处理结果,确定应用程序的测试结果;若标记处理结果中不存在漏洞测试标记,则确定应用程序的测试结果为没有漏洞。
在本申请的一个实施例中,基于前述方案,测试模块404配置为:若标记处理结果中存在漏洞测试标记,且漏洞测试标记对应的漏洞测试规则为除了预设漏洞测试规则之外的漏洞测试规则,则确定应用程序的测试结果为存在漏洞。
在本申请的一个实施例中,基于前述方案,镜像模块402还配置为:获取目标参数对应的漏洞测试规则的数量;对目标参数进行镜像处理,得到与漏洞测试规则的数量相同的镜像参数;将镜像参数与漏洞测试规则一一对应进行组合,得到与漏洞测试规则的数量相同的组合结果。
所属技术领域的技术人员能够理解,本申请的各个方面可以实现为系统、方法或程序产品。因此,本申请的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“系统”。
下面参照图5来描述根据本申请的这种实施方式的电子设备50。图5显示的电子设备50仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图5所示,电子设备50以通用计算设备的形式表现。电子设备50的组件可以包括但不限于:上述至少一个处理单元51、上述至少一个存储单元52、连接不同系统组件(包括存储单元52和处理单元51)的总线53、显示单元54。
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元51执行,使得所述处理单元51执行本说明书上述“实施例方法”部分中描述的根据本申请各种示例性实施方式的步骤。
存储单元52可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)521和/或高速缓存存储单元522,还可以进一步包括只读存储单元(ROM)523。
存储单元52还可以包括具有一组(至少一个)程序模块525的程序/实用工具524,这样的程序模块525包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线53可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备50也可以与一个或多个外部设备(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备50交互的设备通信,和/或与使得该电子设备50能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口55进行。并且,电子设备50还可以通过网络适配器56与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器56通过总线53与电子设备50的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备50使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本申请实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本申请实施方式的方法。
根据本申请一个实施例,还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施方式中,本申请的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述“示例性方法”部分中描述的根据本申请各种示例性实施方式的步骤。
根据本申请一个实施例,用于实现上述方法的程序产品可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本申请的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本申请操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
此外,上述附图仅是根据本申请示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围执行各种修改和改变。本申请的范围仅由所附的权利要求来限制。

Claims (10)

1.一种应用程序测试方法,其特征在于,包括:
获取应用程序的运行请求,所述运行请求中包含有向所述应用程序中的目标函数传入的目标参数;
对所述目标参数进行镜像处理,得到与所述目标参数对应的镜像参数,将所述镜像参数与对应所述目标函数的漏洞测试规则进行组合,得到组合结果;
基于所述应用程序对所述目标参数在传入所述目标函数之前的处理方式,对所述组合结果进行处理,得到处理结果;
基于所述处理结果,确定所述应用程序的测试结果。
2.根据权利要求1所述的应用程序测试方法,其特征在于,所述基于所述处理结果,确定所述应用程序的测试结果,包括:
获取所述处理结果中的漏洞测试规则,作为结果漏洞测试规则;
若所述漏洞测试规则与所述结果漏洞测试规则相同,则确定所述应用程序的测试结果为有漏洞;
若所述漏洞测试规则与所述结果漏洞测试规则不同,则确定所述应用程序的测试结果为没有漏洞。
3.根据权利要求1所述的应用程序测试方法,其特征在于,若对应所述目标函数的漏洞测试规则是命令注入漏洞测试规则或查询注入漏洞测试规则,则所述基于所述处理结果,确定所述应用程序的测试结果,包括:
获取所述处理结果中的漏洞测试规则,作为结果漏洞测试规则;将所述处理结果进行拆分得到拆分结果;
若所述拆分结果中,所述结果漏洞测试规则与所述处理结果中除了所述结果漏洞测试规则之外的其他内容位于一个语法单元中,则确定所述应用程序的测试结果为有漏洞;
若所述拆分结果中,所述结果漏洞测试规则独立于所述处理结果中除了所述结果漏洞测试规则之外的其他内容,则确定所述应用程序的测试结果为没有漏洞。
4.根据权利要求1所述的应用程序测试方法,其特征在于,若对应所述目标函数的漏洞测试规则是文件读取漏洞测试规则,则所述基于所述处理结果,确定所述应用程序的测试结果,包括:
基于所述处理结果,获取所述文件读取漏洞测试对应的路径信息;
若所述路径信息中的作用域不统一,则将所述路径信息中的作用域统一,得到统一后的路径信息;
若所述统一后的路径信息是目标路径,则确定所述应用程序有漏洞;
若所述统一后的路径信息不是所述目标路径,则确定所述应用程序没有漏洞。
5.根据权利要求1所述的应用程序测试方法,其特征在于,所述处理方式包括检测处理、修正处理、及传递处理,所述基于所述应用程序对所述目标参数在传入所述目标函数之前的处理方式,对所述组合结果进行处理,得到处理结果,包括:对所述组合结果进行检测处理,得到检测结果;若所述检测结果为所述组合结果不符合所述检测处理对应的检测规则,则基于所述处理方式中对应所述检测处理的修正处理,对所述组合结果进行修正,得到符合所述检测处理对应的检测规则的组合结果;
对符合所述检测处理对应的检测规则的组合结果进行传递处理;
基于传递后的符合所述检测处理对应的检测规则的组合结果,得到所述处理结果。
6.根据权利要求1所述的应用程序测试方法,其特征在于,在得到组合结果之后,所述方法还包括:
获取所述漏洞测试规则对应的漏洞测试标记;
在所述组合结果中加入所述漏洞测试标记;
基于所述应用程序对所述目标参数在传入所述目标函数之前的处理方式,对加入漏洞测试标记的组合结果进行处理,得到标记处理结果;
基于所述标记处理结果,确定所述应用程序的测试结果。
7.根据权利要求6所述的应用程序测试方法,其特征在于,所述基于所述标记处理结果,确定所述应用程序的测试结果包括:
若所述标记处理结果中存在所述漏洞测试标记,则基于所述标记处理结果,确定所述应用程序的测试结果;
若所述标记处理结果中不存在所述漏洞测试标记,则确定所述应用程序的测试结果为没有漏洞。
8.根据权利要求7所述的应用程序测试方法,其特征在于,所述若所述标记处理结果中存在所述漏洞测试标记,则基于所述标记处理结果,确定所述应用程序的测试结果,包括:
若所述标记处理结果中存在所述漏洞测试标记,且所述漏洞测试标记对应的漏洞测试规则为除了预设漏洞测试规则之外的漏洞测试规则,则确定所述应用程序的测试结果为存在漏洞。
9.根据权利要求1所述的应用程序测试方法,其特征在于,所述对所述目标参数进行镜像处理,得到与所述目标参数对应的镜像参数,将所述镜像参数与对应所述目标函数的漏洞测试规则进行组合,得到组合结果,包括:
获取所述目标参数对应的漏洞测试规则的数量;
对所述目标参数进行镜像处理,得到与所述漏洞测试规则的数量相同的镜像参数;
将所述镜像参数与所述漏洞测试规则一一对应进行组合,得到与所述漏洞测试规则的数量相同的组合结果。
10.一种应用程序测试装置,其特征在于,包括
获取模块,配置为获取应用程序运行请求,所述运行请求中包含有向所述应用程序中的目标函数传入的目标参数;
镜像模块,配置为对所述目标参数进行镜像处理,得到与所述目标参数对应的镜像参数,将所述镜像参数与对应所述目标函数的漏洞测试规则进行组合,得到组合结果;
处理模块,配置为基于所述应用程序对所述目标参数在传入所述目标函数之前的处理方式,对所述组合结果进行处理,得到处理结果;
测试模块,配置为基于所述处理结果,确定所述应用程序的测试结果。
CN202110490817.1A 2021-05-06 2021-05-06 应用程序测试方法和装置 Pending CN113111005A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110490817.1A CN113111005A (zh) 2021-05-06 2021-05-06 应用程序测试方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110490817.1A CN113111005A (zh) 2021-05-06 2021-05-06 应用程序测试方法和装置

Publications (1)

Publication Number Publication Date
CN113111005A true CN113111005A (zh) 2021-07-13

Family

ID=76720948

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110490817.1A Pending CN113111005A (zh) 2021-05-06 2021-05-06 应用程序测试方法和装置

Country Status (1)

Country Link
CN (1) CN113111005A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113590489A (zh) * 2021-08-03 2021-11-02 杭州默安科技有限公司 一种基于Golang语言的IAST安全测试方法和系统
CN115037794A (zh) * 2022-06-07 2022-09-09 抖音视界(北京)有限公司 一种数据采集方法、装置、计算机设备及可读存储介质
TWI822301B (zh) * 2021-11-24 2023-11-11 大陸商中國銀聯股份有限公司 一種應用app測試方法、裝置、電子設備及存儲介質

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130205399A1 (en) * 2012-02-07 2013-08-08 International Business Machines Corporation Automatic synthesis of unit tests for security testing
CN104715204A (zh) * 2013-12-11 2015-06-17 国际商业机器公司 利用元请求对web应用程序进行安全漏洞测试
US20180330102A1 (en) * 2017-05-10 2018-11-15 Checkmarx Ltd. Using the Same Query Language for Static and Dynamic Application Security Testing Tools
CN110362495A (zh) * 2019-07-19 2019-10-22 浙江诺诺网络科技有限公司 一种接口入参功能测试方法、装置、设备及存储介质
CN111177729A (zh) * 2019-12-17 2020-05-19 腾讯云计算(北京)有限责任公司 一种程序漏洞的测试方法以及相关装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130205399A1 (en) * 2012-02-07 2013-08-08 International Business Machines Corporation Automatic synthesis of unit tests for security testing
CN104715204A (zh) * 2013-12-11 2015-06-17 国际商业机器公司 利用元请求对web应用程序进行安全漏洞测试
US20180330102A1 (en) * 2017-05-10 2018-11-15 Checkmarx Ltd. Using the Same Query Language for Static and Dynamic Application Security Testing Tools
CN110362495A (zh) * 2019-07-19 2019-10-22 浙江诺诺网络科技有限公司 一种接口入参功能测试方法、装置、设备及存储介质
CN111177729A (zh) * 2019-12-17 2020-05-19 腾讯云计算(北京)有限责任公司 一种程序漏洞的测试方法以及相关装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113590489A (zh) * 2021-08-03 2021-11-02 杭州默安科技有限公司 一种基于Golang语言的IAST安全测试方法和系统
TWI822301B (zh) * 2021-11-24 2023-11-11 大陸商中國銀聯股份有限公司 一種應用app測試方法、裝置、電子設備及存儲介質
CN115037794A (zh) * 2022-06-07 2022-09-09 抖音视界(北京)有限公司 一种数据采集方法、装置、计算机设备及可读存储介质

Similar Documents

Publication Publication Date Title
CN113111005A (zh) 应用程序测试方法和装置
CN104536890B (zh) 测试系统、方法和装置
US10725751B2 (en) Generating a predictive data structure
CN109948334B (zh) 一种漏洞检测方法、系统及电子设备和存储介质
CN109995523B (zh) 激活码管理方法及装置、激活码生成方法及装置
CN112988599B (zh) 一种页面调试方法、装置、电子设备和存储介质
CN114844792B (zh) 基于lua语言的动态监控方法、装置、设备及存储介质
CN112231711A (zh) 一种漏洞检测方法、装置、计算机设备及存储介质
CN111158654A (zh) 算法调用方法、装置、服务器及存储介质
CN113158195B (zh) 一种基于poc脚本的分布式漏洞扫描方法及系统
CN112350939B (zh) 旁路阻断方法、系统、装置、计算机设备及存储介质
US12015502B2 (en) Artificial intelligence integration of third-party software into large-scale digital platforms
US20140283080A1 (en) Identifying stored vulnerabilities in a web service
CN110177096B (zh) 客户端认证方法、装置、介质和计算设备
CN117201601A (zh) 物联网设备接入方法、装置、设备及存储介质
CN111274461A (zh) 数据审计方法、数据审计装置及存储介质
CN116112384A (zh) 应用流量综合管理方法、装置和电子设备
CN113778709B (zh) 接口调用方法、装置、服务器及存储介质
CN116028917A (zh) 权限检测方法及装置、存储介质及电子设备
CN117171800B (zh) 一种基于零信任防护体系的敏感数据识别方法及装置
CN117034210B (zh) 一种事件画像的生成方法、装置、存储介质及电子设备
CN113132447A (zh) 反向代理的方法和系统
CN115102748B (zh) 漏洞检测方法及装置、存储介质及电子设备
CN118227189B (zh) 数据处理方法及异常提示方法
CN114791821A (zh) 一种客户端更新方法、装置、电子设备及计算机存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40048350

Country of ref document: HK

SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination