CN113010898A - 一种应用程序安全测试方法和相关装置 - Google Patents

一种应用程序安全测试方法和相关装置 Download PDF

Info

Publication number
CN113010898A
CN113010898A CN202110322537.XA CN202110322537A CN113010898A CN 113010898 A CN113010898 A CN 113010898A CN 202110322537 A CN202110322537 A CN 202110322537A CN 113010898 A CN113010898 A CN 113010898A
Authority
CN
China
Prior art keywords
request
scanning
application program
parameter information
information used
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
CN202110322537.XA
Other languages
English (en)
Other versions
CN113010898B (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.)
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 CN202110322537.XA priority Critical patent/CN113010898B/zh
Publication of CN113010898A publication Critical patent/CN113010898A/zh
Application granted granted Critical
Publication of CN113010898B publication Critical patent/CN113010898B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

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

Abstract

本申请实施例公开了一种应用程序安全测试方法和相关装置,获取应用程序的外部请求,利用预设扫描策略生成携带扫描标记的扫描请求。在利用扫描请求对应用程序进行扫描过程中,检测应用程序所调用的敏感函数使用的参数信息是否包括扫描标记,若是,上报敏感函数使用的参数信息。利用根据敏感函数所对应的预设漏洞分析策略,对上报的敏感函数使用的参数信息进行分析。无需等待应用程序对扫描请求的请求响应,在扫描过程中检测到应用程序所调用的敏感函数使用的参数信息包括扫描标记,表示该敏感函数为可能存在漏洞的敏感函数,进一步对该敏感函数使用的参数信息进行漏洞分析,从而判断应用程序是否存在漏洞,实现应用程序安全测试。

Description

一种应用程序安全测试方法和相关装置
技术领域
本申请涉及安全测试领域,特别是涉及一种应用程序安全测试方法和相关装置。
背景技术
随着应用程序的快速发展,在开发应用程序之后,由于开发过程中一时疏忽、所采用编程语言的局限性或编译的缺陷等等,任何一款应用程序都不可避免地存在一定漏洞,影响应用程序的安全性;因此,对应用程序进行安全测试,确定应用程序的漏洞,对于后续漏洞修复提高应用程序的安全性而言十分必要。
目前,应用程序安全测试方式是采集应用程序的外部请求,提交至动态应用程序安全测试(Dynamic Application Security Testing,DAST)扫描器,DAST扫描器生成扫描请求发送至应用程序,应用程序响应扫描请求得到请求响应返回至DAST扫描器,DAST扫描器根据请求响应才能判断应用程序是否存在漏洞,以实现应用程序安全测试。
然而,上述应用程序安全测试方式,严重依赖应用程序对扫描请求的请求响应,在网络延迟、算法缺陷等的情况下,导致判断应用程序是否存在漏洞容易出现错误等;即,上述应用程序安全测试方式不够准确。
发明内容
为了解决上述技术问题,本申请提供了一种应用程序安全测试方法和相关装置,即使在网络延迟、算法缺陷等的情况下,也能够准确判断应用程序是否存在漏洞,从而提高应用程序安全测试的准确性。
本申请实施例公开了如下技术方案:
一方面,本申请提供一种应用程序安全测试方法,所述方法包括:
根据应用程序的外部请求和预设扫描策略生成扫描请求,所述扫描请求携带扫描标记;
在根据所述扫描请求扫描所述应用程序时,若检测到所述应用程序所调用的敏感函数使用的参数信息包括所述扫描标记,将所述敏感函数使用的参数信息上报;
根据预设漏洞分析策略分析上报的所述敏感函数使用的参数信息,所述预设漏洞分析策略对不同敏感函数使用的参数信息的漏洞分析策略不同。
另一方面,本申请提供一种应用程序安全测试装置,所述装置包括:生成单元、上报单元和分析单元;
所述生成单元,用于根据应用程序的外部请求和预设扫描策略生成扫描请求,所述扫描请求携带扫描标记;
所述上报单元,用于在根据所述扫描请求扫描所述应用程序时,若检测到所述应用程序所调用的敏感函数使用的参数信息包括所述扫描标记,将所述敏感函数使用的参数信息上报;
所述分析单元,用于根据预设漏洞分析策略分析上报的所述敏感函数使用的参数信息,所述预设漏洞分析策略对不同敏感函数使用的参数信息的漏洞分析策略不同。
另一方面,本申请提供一种用于应用程序安全测试的设备,所述设备包括处理器以及存储器:
所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;
所述处理器用于根据所述程序代码中的指令执行上述方面所述的方法。
另一方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质用于存储计算机程序,所述计算机程序用于执行上述方面所述的方法。
另一方面,本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。用于应用程序安全测试的设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该用于应用程序安全测试的设备执行上述方面所述的方法。
由上述技术方案可以看出,获取应用程序的外部请求,利用预设扫描策略生成携带扫描标记的扫描请求。在利用扫描请求对应用程序进行扫描过程中,检测应用程序所调用的敏感函数使用的参数信息是否包括扫描标记,若是,上报敏感函数使用的参数信息。利用敏感函数所对应的预设漏洞分析策略,对上报的敏感函数使用的参数信息进行分析。基于此,在扫描请求扫描应用程序的过程中,以扫描请求中携带的扫描标记为基础,检测到应用程序所调用的敏感函数使用的参数信息包括扫描标记,表示该敏感函数为可能存在漏洞的敏感函数,进一步对该敏感函数使用的参数信息进行漏洞分析,从而判断应用程序是否存在漏洞,实现应用程序安全测试;该方式无需等待应用程序对扫描请求的请求响应再判断应用程序是否存在漏洞,能够大大减轻应用程序安全测试对扫描请求的请求响应的依赖,即使在网络延迟、算法缺陷等的情况下,也能够准确判断应用程序是否存在漏洞,从而提高应用程序安全测试的准确性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的应用程序安全测试方法的应用场景示意图;
图2为本申请实施例提供的一种应用程序安全测试方法的流程示意图;
图3为本申请实施例提供的一种相关技术中应用程序安全测试系统架构图;
图4为本申请实施例提供的一种应用程序安全测试系统架构图;
图5为本申请实施例提供的一种应用程序安全测试装置的示意图;
图6为本申请实施例提供的服务器的结构示意图;
图7为本申请实施例提供的终端设备的结构示意图。
具体实施方式
下面结合附图,对本申请的实施例进行描述。
相关技术中,应用程序A部署在提供网络服务的服务器下,以构建应用程序A的安全测试环境;采集应用程序A接收的一切外部请求,转发至DAST扫描器,DAST扫描器生成扫描请求,该扫描请求用于扫描应用程序A,应用程序A对该扫描请求进行响应,得到请求响应返回至DAST扫描器,DAST扫描器根据请求响应判断应用程序A是否存在漏洞,实现应用程序A的安全测试。
然而,上述应用程序A安全测试方式,严重依赖应用程序A对扫描请求进行响应所得到请求响应,在网络延迟、算法缺陷等的情况下,导致判断应用程序A是否存在漏洞容易出现错误等;即,上述应用程序A安全测试的准确性较低。
基于此,本申请实施例提供一种应用程序安全测试方法和相关装置,能够大大减轻对扫描请求的请求响应的依赖,即使在网络延迟、算法缺陷等的情况下,也能够准确判断应用程序是否存在漏洞,从而提高应用程序安全测试的准确性。
本申请实施例所提供的应用程序安全测试方法涉及到云技术领域,例如涉及云安全领域,本申请实施例所提供的应用程序安全测试方法可以基于云安全领域中技术实现应用程序安全测试。云安全(Cloud Security)是指基于云计算商业模式应用的安全软件、硬件、用户、机构、安全云平台的总称。云安全融合了并行处理、网格计算、未知病毒行为判断等新兴技术和概念,通过网状的大量客户端对网络中软件行为的异常监测,获取互联网中木马、恶意程序的最新信息,并发送到服务端进行自动分析和处理,再把病毒和木马的解决方案分发到每一个客户端。
云安全主要研究方向包括:1、云计算安全,主要研究如何保障云自身及云上各种应用的安全,包括云计算机系统安全、用户数据的安全存储与隔离、用户接入认证、信息传输安全、网络攻击防护、合规审计等;2、安全基础设施的云化,主要研究如何采用云计算新建与整合安全基础设施资源,优化安全防护机制,包括通过云计算技术构建超大规模安全事件、信息采集与处理平台,实现对海量信息的采集与关联分析,提升全网安全事件把控能力及风险控制能力;3、云安全服务,主要研究各种基于云计算平台为用户提供的安全服务,如防病毒服务等。
本申请提供的应用程序安全测试方法可以应用于具有数据处理能力的应用程序安全测试设备,如服务器、终端设备等。其中,服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
本申请实施例所提供的应用程序安全测试方法还可以涉及区块链,其中,应用程序所调用的敏感函数使用的参数信息等数据可保存于区块链上。
为了便于理解本申请的技术方案,下面结合实际应用场景,对本申请实施例提供的应用程序安全测试方法进行介绍。
参见图1,图1为本申请实施例提供的应用程序安全测试方法的应用场景示意图。在图1所示的应用场景中,该应用场景包括终端设备101和服务器102,其中,服务器102作为前述应用程序安全测试设备,用于对应用程序进行安全测试。
应用程序A部署在提供网络服务的服务器102下,以构建应用程序A的安全测试环境。测试人员通过终端设备101向服务器102下部署的应用程序A发送请求,作为应用程序A的外部请求。其中,服务器102可以是基于nginx的服务器,nginx是异步框架的网页服务器,也可以用作反向代理、负载平衡器和HTTP缓存等。
首先,服务器102根据应用程序A的外部请求和预先存储的预设扫描策略生成扫描请求,该扫描请求携带扫描标记;该扫描请求用于对应用程序A进行扫描。其中,预设扫描策略例如可以预先存储在交互式应用程序安全测试(Interactive Application SecurityTesting,IAST)扫描器中,而IAST扫描器可以部署在服务器102下;扫描标记是基于预设扫描策略预先设定的特征字符串,将扫描标记添加至生成的扫描请求中,使得扫描请求携带扫描标记。
其次,服务器102在根据该扫描请求扫描应用程序A过程中,应用程序A调用某个或某些函数处理该扫描请求以实现扫描,此时,若应用程序A所调用的某个或某些敏感函数使用的参数信息包括扫描标记,表示应用程序A所调用的某个或某些敏感函数为可能存在漏洞的敏感函数,需要将敏感函数使用的参数信息上报,以便后续进一步对其进行漏洞分析,判断应用程序是否存在漏洞。即,服务器102在根据该扫描请求扫描应用程序A时,若检测到应用程序A所调用的敏感函数使用的参数信息包括该扫描标记,将敏感函数使用的参数信息上报。其中,在检测时例如可以采用IAST客户端(agent),而IAST agent可以部署在服务器102下。
应用程序A所采用的编程语言不同,应用程序A所调用的敏感函数不同。常见的应用程序A所调用的敏感函数按照不同功能类别可以分为结构化查询语言(StructuredQuery Language,SQL)查询函数、命令执行函数、代码执行函数、文件操作函数和网络请求函数等。其中,在分析时例如可以采用分析模块,而分析模块可以部署在服务器102下。
然后,在上述说明的基础上,服务器102根据预设漏洞分析策略分析上报的敏感函数使用的参数信息,预设漏洞分析策略对不同敏感函数使用的参数信息的漏洞分析策略不同,以判断应用程序是否存在漏洞,实现应用程序安全测试。
基于此,在扫描请求扫描应用程序A时,以扫描请求中携带的扫描标记为基础,检测到应用程序A所调用的敏感函数使用的参数信息包括扫描标记,表示该敏感函数为可能存在漏洞的敏感函数,进一步对该敏感函数使用的参数信息进行漏洞分析,从而判断应用程序是否存在漏洞,实现应用程序安全测试;该方式无需等待应用程序A对扫描请求的请求响应再判断应用程序是否存在漏洞,能够大大减轻应用程序安全测试对扫描请求的请求响应的依赖,即使在网络延迟、算法缺陷等的情况下,也能够准确判断应用程序A是否存在漏洞,从而提高应用程序A安全测试准确性。
下面结合附图,以服务器作为应用程序安全测试设备,对本申请实施例提供的一种应用程序安全测试方法进行介绍。
参见图2,图2为本申请实施例提供的一种应用程序安全测试方法的流程示意图。如图2所示,该应用程序安全测试方法包括以下步骤:
S201、根据应用程序的外部请求和预设扫描策略生成扫描请求,扫描请求携带扫描标记。
在本申请实施例中,实现应用程序安全测试的前提是构建应用程序安全测试环境,具体可以是将应用程序可以部署在服务器下,该服务器提供网络服务,以构建应用程序安全测试环境。例如,该服务器可以是基于nginx的服务器。
测试人员通过终端设备向部署在服务器下的应用程序发送请求,该请求是应用程序的外部请求,服务器可以通过应用程序的外部请求和预先存储的预设扫描策略,生成用于扫描应用程序的扫描请求,该扫描请求需要携带扫描标记。其中,预设扫描策略例如可以预先存储在服务器下部署的IAST扫描器中;扫描标记是基于预设扫描策略预先设定的特征字符串,将扫描标记添加至生成的扫描请求中,使得扫描请求携带扫描标记。
由于相关技术中应用程序安全测试方式,严重依赖应用程序对扫描请求进行响应所得到请求响应,导致DAST扫描器需要生成大量的用于扫描应用程序的扫描请求,才能得到大量的请求响应以判断应用程序是否存在漏洞。大量的扫描请求造成DAST扫描器与应用程序之间的传输带宽较大,且对应用程序的扫描时间较长,带给应用程序的扫描压力较大,严重影响应用程序安全测试的效率和效果。
因此,在本申请实施例中,需要减少执行S201所生成的扫描请求的数量,在扫描请求的数量与预设扫描策略的数量成正相关的情况下,可以通过预先减少预设扫描策略的数量的方式,以减少后续执行S201所生成的扫描请求的数量。即,本申请提供了一种可能的实现方式,在S201之前方法还包括:减少预设扫描策略的数量。
作为一种S201的示例,在预先减少IAST扫描器中预设扫描策略的数量后,通过基于nginx的服务器得到的应用程序的外部请求,以及IAST扫描器中预设扫描策略,生成少量的扫描请求。
该方式使得执行S201所生成的扫描请求,相较于相关技术中应用程序安全测试方式中所生成的扫描请求而言,数量大大减少。执行S201所生成的少量的扫描请求,可以节省IAST扫描器与应用程序之间的传输带宽,以减少对应用程序的扫描时间,减轻带给应用程序的扫描压力,从而可以提高应用程序安全测试的效率和效果。
此外,相关技术中应用程序安全测试方式中,在采集应用程序的外部请求时,需要另行部署虚拟专用网络(Virtual Private Network,VPN)或者代理服务器,通过VPN或者代理服务器抓取应用程序的外部请求方式,以采集应用程序的外部请求。该方式需要额外增加VPN或者代理服务器,增加了应用程序安全测试的系统架构设计复杂度。参见如图3所示的一种相关技术中应用程序安全测试系统架构图,该应用程序安全测试系统包括终端设备301、代理服务器302、nginx 303、DAST扫描器304和通知模块305;代理服务器302部署在终端设备301和nginx 303之间。
因此,在本申请实施例中,服务器可以是基于nginx的服务器等,使得该服务器配置有镜像模块,该镜像模块可以镜像应用程序的外部请求,获得外部请求的镜像请求,实现对应用程序的外部请求的复制;基于此,可以根据外部请求的镜像请求和预设扫描策略生成扫描请求。即,本申请提供了一种可能的实现方式,S201例如可以包括以下步骤中S2011-S2012:
S2011、镜像应用程序的外部请求,获得外部请求的镜像请求。
S2012、根据镜像请求和预设扫描策略生成扫描请求。
该方式中服务器配置有镜像模块,使得服务器具有对应用程序的外部请求的复制功能,无需额外增加VPN或者代理服务器抓取应用程序的外部请求,从而可以减轻应用程序安全测试的系统架构设计复杂度。
在S2012根据镜像请求和预设扫描策略生成扫描请求过程中,镜像请求是镜像应用程序的外部请求得到的,应用程序的外部请求不止包括测试人员通过设备终端发送的请求,还包括应用程序接收的扫描请求,且请求可能会重复;则镜像请求中可能包括扫描请求、重复请求等。为了避免镜像请求中包括的扫描请求、重复请求,执行后续步骤出现循环扫描、重复扫描的问题;首先,需要结合扫描请求过滤算法和重复请求过滤算法设置预设过滤策略,利用该预设过滤策略过滤镜像请求可能包括的扫描请求、重复请求等;然后,利用过滤后的镜像请求和预设扫描策略生成扫描请求。因此,本申请提供了一种可能的实现方式,S2012例如可以包括以下步骤中步骤A-步骤B:
步骤A、根据预设过滤策略过滤镜像请求,获得过滤后的镜像请求,预设过滤策略包括扫描请求过滤算法和重复请求过滤算法。
其中,根据扫描请求过滤算法过滤镜像请求中扫描请求,例如可以是根据扫描请求携带的扫描标记,过滤镜像请求中扫描请求。根据重复请求过滤算法过滤镜像请求中重复请求,例如可以是根据包括对get参数、post参数(包含json/xml/form-data格式数据)以及cookie参数中一种或多种参数的去重算法,过滤镜像请求中重复请求。
步骤B、根据过滤后的镜像请求和预设扫描策略生成扫描请求。
其中,在执行B过程中,需要先通过对预设扫描策略的调用,将过滤后的镜像请求转换为扫描任务,在该扫描任务中可以设置待扫描的目标统一资源定位符(UniformResource Locator,URL)、待扫描的参数、待扫描的登录态信息、待使用的漏洞检测插件、待使用的漏洞检测速度等扫描任务配置数据,例如,可以通过转换模块将过滤后的镜像请求转换为扫描任务;再根据该扫描任务和预设扫描策略生成扫描请求。
S202、在根据扫描请求扫描应用程序时,若检测到应用程序所调用的敏感函数使用的参数信息包括扫描标记,将敏感函数使用的参数信息上报。
由于相关技术中应用程序安全测试方式,严重依赖应用程序对扫描请求进行响应所得到请求响应,在网络延迟、算法缺陷等的情况下,导致判断应用程序是否存在漏洞容易出现错误等;即,应用程序安全测试准确性较低。
因此,在本申请实施例中,由S201生成用于扫描应用程序的扫描请求之后,在根据该扫描请求扫描应用程序的过程中,可以通过该扫描请求携带的扫描标记,检测应用程序所调用的敏感函数使用的参数信息包括是否包括扫描标记,以检测应用程序所调用的敏感函数是否为可能存在漏洞的敏感函数,若是,将该敏感函数使用的参数信息上报,以便后续进一步对该敏感函数使用的参数信息进行漏洞分析。
其中,敏感函数是指在应用程序调用操作函数运行过程中容易出现漏洞的操作函数。常见的敏感函数按照不同功能类别可以分为SQL查询函数、命令执行函数、代码执行函数、文件操作函数和网络请求函数等。
即,检测应用程序所调用的敏感函数使用的参数信息是否包括扫描标记,若是,敏感函数使用的参数信息上报。该方式不需要等待应用程序对扫描请求的请求响应,即可检测到可能存在漏洞的敏感函数使用的参数信息,为后续检测应用程序可能存在的漏洞风险奠定基础。
应用程序的编程语言例如可以是PHP、Golang、Nodejs、Ruby、Python或者Java等。其中,PHP是一种创建动态交互性站点的强有力的服务器端脚本语言;Golang是一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言;Nodejs是运行在服务端的JavaScript;Ruby是一种简单快捷的面向对象(面向对象程序设计)脚本语言;Python是一种解释型、面向对象、动态数据类型的高级程序设计语言;Java是一种面向对象编程语言。
应用程序的编程语言不同,应用程序所调用的敏感函数不同;则采用不同编程语言的应用程序,需要检测的应用程序所调用的敏感函数不同。因此,S202具体实现过程中,在检测应用程序所调用的敏感函数使用的参数信息是否包括扫描标记之前,需要通过应用程序的编程语言,确定需要检测的应用程序所调用的敏感函数。即,本申请提供了一种可能的实现方式,S202例如可以包括以下步骤中S2021-S2022:
S2021、根据应用程序的编程语言,确定应用程序所调用的敏感函数。
S2022、若检测到敏感函数使用的参数信息包括扫描标记,将敏感函数使用的参数信息上报。
作为一种示例,应用程序的编程语言为PHP时,应用程序所调用的敏感函数包括用于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等网络请求函数。
其中,mysql_query执行一条MySQL查询,mysqli_query执行某个针对数据库的查询(过程化风格),mysqli::query对数据库执行一次查询(面向对象风格),mysqli_real_query执行一个mysql查询(过程化风格),mysqli::real_query执行一个mysql查询(面向对象风格),mysqli_prepare准备执行一个SQL语句(过程化风格),mysqli::prepare准备执行一个SQL语句(面向对象风格),PDO::query执行SQL语句,返回PDOStatement对象,PDO::exec执行一条SQL语句,并返回受影响的行数,PDO::prepare—准备要执行的语句,并返回语句对象,pg_query执行查询,pg_send_query发送异步查询,pg_prepare准备好的语句,SQLite3::query执行SQL查询,SQLite3::exec对给定数据库执行无结果查询(执行sql语句),SQLite3::querySingle执行查询并返回单个结果。passthru执行外部程序并且显示原始输出,system执行外部程序,并且显示输出,exec执行一个外部程序,shell_exec通过shell环境执行命令,并且将完整的输出以字符串的方式返回,proc_open执行一个命令,并且打开用来输入/输出的文件指针,popen打开进程文件指针,pcntl_exec在当前进程空间执行指定程序。eval把字符串作为PHP代码执行,assert检查一个断言是否为错误。file把整个文件读入一个数组中,readfile输出文件,file_get_contents将整个文件读入一个字符串,fopen打开文件或者URL,SplFileObject::_construct构造一个新的文件对象,copy拷贝文件,rename重命名一个文件或目录,move_uploaded_file将上传的文件移动到新位置,include语句包含并运行指定文件。curl_exec执行cURL会话。
作为另一种示例,应用程序的编程语言为Java时,应用程序所调用的敏感函数包括用于SQL查询的com.mysql.jdbc.PreparedStatement、com.mysql.cj.jdbc.PreparedStatement、com.mysql.cj.jdbc.ClientPreparedStatement、com.mysql.cj.jdbc.ClientPreparedStatement、org.sqlite.PrepStmt、org.sqlite.jdbc3.JDBC3PreparedStatement、oracle.jdbc.driver.OraclePreparedStatement、com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement、org.postgresql.jdbc.PgPreparedStatement、org.postgresql.jdbc1.AbstractJdbc1Statement、org.postgresql.jdbc2.AbstractJdbc2Statement、org.postgresql.jdbc3.AbstractJdbc3Statement、org.postgresql.jdbc3g.AbstractJdbc3gStatement、org.postgresql.jdbc4.AbstractJdbc4Statement、org.hsqldb.jdbc.JDBCPreparedStatement、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.SQLServerStatement、org.postgresql.jdbc.PgStatement、org.postgresql.jdbc1.AbstractJdbc1Statement、org.postgresql.jdbc2.AbstractJdbc2Statement、org.postgresql.jdbc3.AbstractJdbc3Statement、org.postgresql.jdbc3g.AbstractJdbc3gStatement、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.CloseableHttpClient、org.apache.http.impl.client.AutoRetryHttpClient、org.apache.http.impl.client.DecompressingHttpClient、org.apache.http.impl.client.AbstractHttpClient、java.net.URLConnection$1、java.net.HttpURLConnection、java.net.HttpURLConnection、java.net.Socket、com.squareup.okhttp.Call$ApplicationInterceptorChain、okhttp3.RealCall$ApplicationInterceptorChain、okhttp3.internal.http.RealInterceptorChain、sun.net.www.protocol.http.HttpURLConnection、weblogic.net.http.HttpURLConnection、weblogic.uddi.client.service.UDDIService等网络请求函数。
其中,com.mysql.jdbc.PreparedStatement、com.mysql.cj.jdbc.PreparedStatement、com.mysql.cj.jdbc.ClientPreparedStatement、com.mysql.cj.jdbc.ClientPreparedStatement、com.mysql.jdbc.StatementImpl、com.mysql.cj.jdbc.StatementImpl执行mysql类型数据库查询;org.sqlite.PrepStmt、org.sqlite.jdbc3.JDBC3PreparedStatement、org.sqlite.Stmt、org.sqlite.jdbc3.JDBC3Statement执行sqlite类型数据库查询;oracle.jdbc.driver.OraclePreparedStatement、oracle.jdbc.driver.OracleStatement执行oracle类型数据库查询;com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement、com.microsoft.sqlserver.jdbc.SQLServerStatement执行sqlserver类型数据库查询;org.postgresql.jdbc.PgPreparedStatement、org.postgresql.jdbc1.AbstractJdbc1Statement、org.postgresql.jdbc2.AbstractJdbc2Statement、org.postgresql.jdbc3.AbstractJdbc3Statement、org.postgresql.jdbc3g.AbstractJdbc3gStatement、org.postgresql.jdbc4.AbstractJdbc4Statement、org.postgresql.jdbc.PgStatement执行postgresql类型数据库查询;org.hsqldb.jdbc.JDBCPreparedStatement、org.hsqldb.jdbc.JDBCStatement执行HSQLDB类型数据库查询。java.lang.ProcessBuilder、java.lang.ProcessImpl、java.lang.UNIXProcess执行进程创建。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.CloseableHttpClient、org.apache.http.impl.client.AutoRetryHttpClient、org.apache.http.impl.client.DecompressingHttpClient、org.apache.http.impl.client.AbstractHttpClient执行apache网络请求解析;java.net.URLConnection$1、java.net.HttpURLConnection、java.net.HttpURLConnection、java.net.Socket执行java网络请求解析;com.squareup.okhttp.Call$ApplicationInterceptorChain、okhttp3.RealCall$ApplicationInterceptorChain、okhttp3.internal.http.RealInterceptorChain执行okhttp网络请求解析;sun.net.www.protocol.http.HttpURLConnection执行sun网络请求解析;weblogic.net.http.HttpURLConnection、weblogic.uddi.client.service.UDDIService执行weblogic网络请求解析。
对应于S201的示例,在服务器下部署与IAST扫描器相对应的IAST agent,作为一种S202的示例,通过该IAST agent检测应用程序所调用的敏感函数使用的参数信息是否包括扫描标记,若是,将敏感函数使用的参数信息上报。
S203、根据预设漏洞分析策略分析上报的敏感函数使用的参数信息,预设漏洞分析策略对不同敏感函数使用的参数信息的漏洞分析策略不同。
在本申请实施例中,不同敏感函数所对应的预设漏洞分析策略不同,即,对于上报的不同敏感函数使用的参数信息,判断应用程序是否存在漏洞的方式不同。基于常见的应用程序所调用的敏感函数按照不同功能类别可以分为SQL查询函数、命令执行函数、代码执行函数、文件操作函数和网络请求函数在S202上报敏感函数使用的参数信息之后,需要利用该敏感函数所对应的预设漏洞分析策略,分析该敏感函数使用的参数信息,以判断应用程序是否存在漏洞,从而实现应用程序安全测试。该方式无需等待应用程序对扫描请求的请求响应再判断应用程序是否存在漏洞,减轻应用程序安全测试对扫描请求的请求响应的依赖,即使在网络延迟、算法缺陷等的情况下,也能够准确判断应用程序是否存在漏洞,从而提高应用程序安全测试准确性。
作为一种S203的示例,当S202中IAST agent将上报的敏感函数使用的参数信息发送至服务器下部署的分析模块,通过该分析模块可以根据预设漏洞分析策略分析上报的敏感函数使用的参数信息,以判断应用程序是否存在漏洞,实现应用程序安全测试。
基于此,当敏感函数分别为SQL查询函数、命令执行函数、代码执行函数、文件操作函数或网络请求函数时,S203的具体实现方式如下所示:
第一,当敏感函数为SQL查询函数时,其所对应的预设漏洞分析策略为SQL注入漏洞分析策略。根据SQL查询函数的执行特性,首先,检测由扫描标记解析得到的SQL注入标记是否存在上报的SQL查询函数使用的参数信息中,若是,通过语法分析技术将上报的SQL查询函数使用的参数信息拆分为多个参数子信息;然后,判断SQL注入标记是否被拆分在相邻的参数子信息中,若是,确定应用程序存在漏洞。因此,本申请提供了一种可能的实现方式,S203例如可以包括以下步骤中S2031-S2032:
S2031、若检测到上报的SQL查询函数使用的参数信息包括SQL注入标记,将参数信息拆分为多个参数子信息,SQL注入标记是解析扫描标记得到的。
S2032、若SQL注入标记被拆分在相邻的参数子信息中,确定应用程序存在漏洞。
作为一种示例,将SQL查询函数mysql_query使用的参数信息上报后,若检测到上报的SQL查询函数mysql_query使用的参数信息“a123b”包括SQL注入标记“123”,通过SQL语法分析将参数信息“a123b”拆分为多个参数子信息“a12”和“3b”;判断得到SQL注入标记“123”被拆分在相邻的参数子信息“a12”和“3b”中,即,SQL注入标记“123”跨越参数子信息“a12”和“3b”,则确定应用程序存在漏洞。
第二,当敏感函数为命令执行函数时,其所对应的预设漏洞分析策略为命令注入漏洞分析策略。根据命令执行函数的执行特性,首先,检测由扫描标记解析得到的命令注入标记是否存在上报的命令执行函数使用的参数信息中,若是,通过语法分析技术将上报的命令执行函数使用的参数信息拆分为多个参数子信息;然后,判断命令注入标记是否被拆分在相邻的参数子信息中,若是,确定应用程序存在漏洞。因此,本申请提供了一种可能的实现方式,S203例如可以包括以下步骤中S2033-S2034:
S2033、若检测到上报的命令执行函数使用的参数信息包括命令注入标记,将参数信息拆分为多个参数子信息,命令注入标记是解析扫描标记得到的。
S2034、若命令注入标记被拆分在相邻的参数子信息中,确定应用程序存在漏洞。
作为一种示例,将命令执行函数exec使用的参数信息上报后,若检测到上报的命令执行函数exec使用的参数信息“c456d”包括命令注入标记“456”,通过基本语法分析将参数信息“c456d”拆分为多个参数子信息“c4”和“56d”;判断得到命令注入标记“456”被拆分在相邻的参数子信息“c4”和“56d”中,即,命令注入标记“456”跨越参数子信息“c4”和“56d”,则确定应用程序存在漏洞。
第三,当敏感函数为代码执行函数时,其所对应的预设漏洞分析策略为代码注入漏洞分析策略。根据代码执行函数的执行特性,可以检测由扫描标记解析得到的代码注入标记是否存在上报的代码执行函数使用的参数信息中,若是,即可直接确定应用程序存在漏洞。因此,本申请提供了一种可能的实现方式,S203例如可以包括:若检测到上报的代码执行函数使用的参数信息包括代码注入标记,确定应用程序存在漏洞,代码注入标记是解析扫描标记得到的。
作为一种示例,将代码执行函数eval使用的参数信息上报后,若检测到上报的代码执行函数eval使用的参数信息“e7f”包括命令注入标记“7”,则确定应用程序存在漏洞。
第四,当敏感函数为文件操作函数时,其所对应的预设漏洞分析策略为文件操作漏洞分析策略。根据文件操作函数的执行特性,首先,检测由扫描标记解析得到的文件操作标记是否存在上报的文件操作函数使用的参数信息中,若是,将参数信息中的路径相关信息正常化得到路径信息;然后,判断该路径信息与解析扫描请求得到的目标路径信息是否相同,若是,确定应用程序存在漏洞。因此,本申请提供了一种可能的实现方式,S203例如可以包括以下步骤中S2035-S2036:
S2035、若检测到上报的文件操作函数使用的参数信息包括文件操作标记,获得参数信息中的路径信息,文件操作标记是解析扫描标记得到的。
S2036、若路径信息和目标路径信息相同,确定应用程序存在漏洞,目标路径信息是解析扫描请求得到的。
作为一种示例,将文件操作函数readfile使用的参数信息上报后,若检测到上报的文件操作函数readfile使用的参数信息“g8h…”包括命令注入标记“8”,将参数信息“g8h…”中路径相关信息正常化,得到路径信息“x1”;判断得到路径信息“x1”与解析扫描请求得到的目标路径信息“x2”相同,则确定应用程序存在漏洞。
第五,当敏感函数为网络请求函数时,其所对应的预设漏洞分析策略为服务端请求伪造漏洞分析策略。根据网络请求函数的执行特性,首先,检测由扫描标记解析得到的服务端请求伪造标记是否存在上报的网络请求函数使用的参数信息中,若是,判断参数信息与服务端请求伪造标记是否为同一来源,若是,确定应用程序存在漏洞。因此,本申请提供了一种可能的实现方式,S203例如可以包括:若检测到上报的网络请求函数使用的参数信息包括服务端请求伪造标记,且参数信息与服务端请求伪造标记同源,确定应用程序存在漏洞,服务端请求伪造标记是解析扫描标记得到的。
作为一种示例,将网络请求函数curl_exec使用的参数信息上报后,若检测到上报的网络请求函数curl_exec使用的参数信息“i9j…”包括服务端请求伪造标记“9”,且参数信息“i9j…”与服务端请求伪造标记“9”同源,则确定应用程序存在漏洞。
此外,在执行S203以判断应用程序是否存在漏洞,实现应用程序安全测试之后,还可以将应用程序安全测试结果通过服务器下部署的通知模块通知测试人员,即,将应用程序存在的漏洞通知测试人员,以便测试人员基于此进行后续漏洞修复提高应用程序的安全性。
基于上述说明,参见如图4所示的一种应用程序安全测试系统架构图,该应用程序安全测试系统包括终端设备401、nginx 402、镜像模块403、IAST扫描器404、IASTagent405、分析模块406和通知模块407。其中,nginx 402、镜像模块403、IAST扫描器404、IAST agent405、分析模块406和通知模块407可以部署在服务器下,应用程序部署在nginx402下,以构建应用程序安全测试环境。
终端设备401用于接收测试人员向nginx 402下部署的应用程序所发送的请求,该请求是应用程序的外部请求;nginx 402配置的镜像模块403用于镜像应用程序的外部请求,获得外部请求的镜像请求;IAST扫描器404用于根据镜像请求和预设扫描策略生成扫描请求,扫描请求携带扫描标记;IAST agent405用于在根据扫描请求扫描应用程序时,检测到应用程序所调用的敏感函数使用的参数信息是否包括扫描标记,若是,将敏感函数使用的参数信息上报至分析模块406;分析模块406用于根据预设漏洞分析策略分析上报的敏感函数使用的参数信息,预设漏洞分析策略对不同敏感函数使用的参数信息的漏洞分析策略不同,得到应用程序安全测试结果;通知模块407用于将应用程序安全测试结果通知给测试人员。
上述实施例提供的应用程序安全测试方法,获取应用程序的外部请求,利用预设扫描策略生成携带扫描标记的扫描请求。在利用扫描请求对应用程序进行扫描过程中,检测应用程序所调用的敏感函数使用的参数信息是否包括扫描标记,若是,上报敏感函数使用的参数信息。利用敏感函数所对应的预设漏洞分析策略,对上报的敏感函数使用的参数信息进行分析。基于此,在扫描请求扫描应用程序的过程中,以扫描请求中携带的扫描标记为基础,检测到应用程序所调用的敏感函数使用的参数信息包括扫描标记,表示该敏感函数为可能存在漏洞的敏感函数,进一步对该敏感函数使用的参数信息进行漏洞分析,从而判断应用程序是否存在漏洞,实现应用程序安全测试;该方式无需等待应用程序对扫描请求的请求响应再判断应用程序是否存在漏洞,能够大大减轻应用程序安全测试对扫描请求的请求响应的依赖,即使在网络延迟、算法缺陷等的情况下,也能够准确判断应用程序是否存在漏洞,从而提高应用程序安全测试的准确性。
针对上述实施例提供的应用程序安全测试方法,本申请实施例还提供了一种应用程序安全测试装置。
参见图5,该图为本申请实施例提供的一种应用程序安全测试装置的示意图。如图5所示,该应用程序安全测试装置500包括:生成单元501、上报单元502和分析单元503;
生成单元501,用于根据应用程序的外部请求和预设扫描策略生成扫描请求,扫描请求携带扫描标记;
上报单元502,用于在根据扫描请求扫描应用程序时,若检测到应用程序所调用的敏感函数使用的参数信息包括扫描标记,将敏感函数使用的参数信息上报;
分析单元503,用于根据预设漏洞分析策略分析上报的敏感函数使用的参数信息,预设漏洞分析策略对不同敏感函数使用的参数信息的漏洞分析策略不同。
作为一种可能的实现方式,上报单元502,用于:
根据应用程序的编程语言,确定应用程序所调用的敏感函数;
若检测到敏感函数使用的参数信息包括扫描标记,将敏感函数使用的参数信息上报。
作为一种可能的实现方式,敏感函数为结构化查询语言SQL查询函数时,预设漏洞分析策略为SQL注入漏洞分析策略,分析单元503,用于:
若检测到上报的SQL查询函数使用的参数信息包括SQL注入标记,将参数信息拆分为多个参数子信息,SQL注入标记是解析扫描标记得到的;
若SQL注入标记被拆分在相邻的参数子信息中,确定应用程序存在漏洞。
作为一种可能的实现方式,敏感函数为命令执行函数时,预设漏洞分析策略为命令注入漏洞分析策略,分析单元503,用于:
若检测到上报的命令执行函数使用的参数信息包括命令注入标记,将参数信息拆分为多个参数子信息,命令注入标记是解析扫描标记得到的;
若命令注入标记被拆分在相邻的参数子信息中,确定应用程序存在漏洞。
作为一种可能的实现方式,敏感函数为代码执行函数时,预设漏洞分析策略为代码注入漏洞分析策略,分析单元503,用于:
若检测到上报的代码执行函数使用的参数信息包括代码注入标记,确定应用程序存在漏洞,代码注入标记是解析扫描标记得到的。
作为一种可能的实现方式,敏感函数为文件操作函数时,预设漏洞分析策略为文件操作漏洞分析策略,分析单元503,用于:
若检测到上报的文件操作函数使用的参数信息包括文件操作标记,获得参数信息中的路径信息,文件操作标记是解析扫描标记得到的;
若路径信息和目标路径信息相同,确定应用程序存在漏洞,目标路径信息是解析扫描请求得到的。
作为一种可能的实现方式,敏感函数为网络请求函数时,预设漏洞分析策略为服务端请求伪造漏洞分析策略,分析单元503,用于:
若检测到上报的网络请求函数使用的参数信息包括服务端请求伪造标记,且参数信息与服务端请求伪造标记同源,确定应用程序存在漏洞,服务端请求伪造标记是解析扫描标记得到的。
作为一种可能的实现方式,装置还包括:减少单元;
减少单元,用于减少预设扫描策略的数量。
作为一种可能的实现方式,生成单元501,用于:
镜像应用程序的外部请求,获得外部请求的镜像请求;
根据镜像请求和预设扫描策略生成扫描请求。
作为一种可能的实现方式,生成单元501,用于:
根据预设过滤策略过滤镜像请求,获得过滤后的镜像请求,预设过滤策略包括扫描请求过滤算法和重复请求过滤算法;
根据过滤后的镜像请求和预设扫描策略生成扫描请求。
上述实施例提供的应用程序安全测试装置,获取应用程序的外部请求,利用预设扫描策略生成携带扫描标记的扫描请求。在利用扫描请求对应用程序进行扫描过程中,检测应用程序所调用的敏感函数使用的参数信息是否包括扫描标记,若是,上报敏感函数使用的参数信息。利用敏感函数对应的预设漏洞分析策略,对上报的敏感函数使用的参数信息进行分析。基于此,在扫描请求扫描应用程序的过程中,以扫描请求中携带的扫描标记为基础,检测到应用程序所调用的敏感函数使用的参数信息包括扫描标记,表示该敏感函数为可能存在漏洞的敏感函数,进一步对该敏感函数使用的参数信息进行漏洞分析,从而判断应用程序是否存在漏洞,实现应用程序安全测试;该方式无需等待应用程序对扫描请求的请求响应再判断应用程序是否存在漏洞,能够大大减轻应用程序安全测试对扫描请求的请求响应的依赖,即使在网络延迟、算法缺陷等的情况下,也能够准确判断应用程序是否存在漏洞,从而提高应用程序安全测试的准确性。
本申请实施例还提供了一种用于应用程序安全测试的设备,下面将从硬件实体化的角度对本申请实施例提供的用于应用程序安全测试的设备进行介绍。
参见图6,图6是本申请实施例提供的一种服务器结构示意图,该服务器600可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(centralprocessing units,CPU)622(例如,一个或一个以上处理器)和存储器632,一个或一个以上存储应用程序642或数据644的存储介质630(例如一个或一个以上海量存储设备)。其中,存储器632和存储介质630可以是短暂存储或持久存储。存储在存储介质630的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器622可以设置为与存储介质630通信,在服务器600上执行存储介质630中的一系列指令操作。
服务器600还可以包括一个或一个以上电源626,一个或一个以上有线或无线网络接口650,一个或一个以上输入输出接口658,和/或,一个或一个以上操作系统641,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
上述实施例中由服务器所执行的步骤可以基于该图6所示的服务器结构。
其中,CPU 622用于执行如下步骤:
根据应用程序的外部请求和预设扫描策略生成扫描请求,扫描请求携带扫描标记;
在根据扫描请求扫描应用程序时,若检测到应用程序所调用的敏感函数使用的参数信息包括扫描标记,将敏感函数使用的参数信息上报;
根据预设漏洞分析策略分析上报的敏感函数使用的参数信息,预设漏洞分析策略对不同敏感函数使用的参数信息的漏洞分析策略不同。
针对上文描述的应用程序安全测试方法,本申请实施例还提供了一种用于应用程序安全测试的终端设备,以使上述应用程序安全测试方法在实际中实现以及应用。
参见图7,图7为本申请实施例提供的一种终端设备的结构示意图。为了便于说明,仅示出了与本申请实施例相关的部分,具体技术细节未揭示的,请参照本申请实施例方法部分。该终端设备可以为包括手机、平板电脑、个人数字助理(Personal DigitalAssistant,简称PDA)等任意终端设备,以终端设备为手机为例:
图7示出的是与本申请实施例提供的终端设备相关的手机的部分结构的框图。参考图7,该手机包括:射频(Radio Frequency,简称RF)电路710、存储器720、输入单元730、显示单元740、传感器750、音频电路760、无线保真(wireless fidelity,简称WiFi)模块770、处理器780、以及电源790等部件。本领域技术人员可以理解,图7中示出的手机结构并不构建对手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图7对手机的各个构建部件进行具体的介绍:
RF电路710可用于收发信息或通话过程中,信号的接收和发送,特别地,将基站的下行信息接收后,给处理器780处理;另外,将设计上行的数据发送给基站。通常,RF电路710包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(Low NoiseAmplifier,简称LNA)、双工器等。此外,RF电路710还可以通过无线通信与网络和其他设备通信。上述无线通信可以使用任一通信标准或协议,包括但不限于全球移动通讯系统(Global System of Mobile communication,简称GSM)、通用分组无线服务(GeneralPacket Radio Service,简称GPRS)、码分多址(Code Division Multiple Access,简称CDMA)、宽带码分多址(Wideband Code Division Multiple Access,简称WCDMA)、长期演进(Long Term Evolution,简称LTE)、电子邮件、短消息服务(Short Messaging Service,简称SMS)等。
存储器720可用于存储软件程序以及模块,处理器780通过运行存储在存储器720的软件程序以及模块,从而实现手机的各种功能应用以及数据处理。存储器720可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器720可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
输入单元730可用于接收输入的数字或字符信息,以及产生与手机的用户设置以及功能控制有关的键信号输入。具体地,输入单元730可包括触控面板731以及其他输入设备732。触控面板731,也称为触摸屏,可收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板731上或在触控面板731附近的操作),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板731可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器780,并能接收处理器780发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板731。除了触控面板731,输入单元730还可以包括其他输入设备732。具体地,其他输入设备732可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元740可用于显示由用户输入的信息或提供给用户的信息以及手机的各种菜单。显示单元740可包括显示面板741,可选的,可以采用液晶显示器(Liquid CrystalDisplay,简称LCD)、有机发光二极管(Organic Light-Emitting Diode,简称OLED)等形式来配置显示面板741。进一步的,触控面板731可覆盖显示面板741,当触控面板731检测到在其上或附近的触摸操作后,传送给处理器780以确定触摸事件的类型,随后处理器780根据触摸事件的类型在显示面板741上提供相应的视觉输出。虽然在图7中,触控面板731与显示面板741是作为两个独立的部件来实现手机的输入和输入功能,但是在某些实施例中,可以将触控面板731与显示面板741集成而实现手机的输入和输出功能。
手机还可包括至少一种传感器750,比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示面板741的亮度,接近传感器可在手机移动到耳边时,关闭显示面板741和/或背光。作为运动传感器的一种,加速计传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别手机姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;至于手机还可配置的陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
音频电路760、扬声器761,传声器762可提供用户与手机之间的音频接口。音频电路760可将接收到的音频数据转换后的电信号,传输到扬声器761,由扬声器761转换为声音信号输出;另一方面,传声器762将收集的声音信号转换为电信号,由音频电路760接收后转换为音频数据,再将音频数据输出处理器780处理后,经RF电路710以发送给比如另一手机,或者将音频数据输出至存储器720以便进一步处理。
WiFi属于短距离无线传输技术,手机通过WiFi模块770可以帮助用户收发电子邮件、浏览网页和访问流式媒体等,它为用户提供了无线的宽带互联网访问。虽然图7示出了WiFi模块770,但是可以理解的是,其并不属于手机的必须构建,完全可以根据需要在不改变发明的本质的范围内而省略。
处理器780是手机的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器720内的软件程序和/或模块,以及调用存储在存储器720内的数据,执行手机的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器780可包括一个或多个处理单元;优选的,处理器780可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器780中。
手机还包括给各个部件供电的电源790(比如电池),优选的,电源可以通过电源管理系统与处理器780逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
尽管未示出,手机还可以包括摄像头、蓝牙模块等,在此不再赘述。
在本申请实施例中,该手机所包括的存储器720可以存储程序代码,并将所述程序代码传输给所述处理器。
该手机所包括的处理器780可以根据所述程序代码中的指令执行上述实施例提供的应用程序安全测试方法。
本申请实施例还提供一种计算机可读存储介质,用于存储计算机程序,该计算机程序用于执行上述实施例提供的应用程序安全测试方法。
本申请实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。用于应用程序安全测试的设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该用于应用程序安全测试的设备执行上述方面的各种可选实现方式中提供的应用程序安全测试方法。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质可以是下述介质中的至少一种:只读存储器(英文:read-only memory,缩写:ROM)、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备及系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的设备及系统实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述,仅为本申请的一种具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应该以权利要求的保护范围为准。

Claims (15)

1.一种应用程序安全测试方法,其特征在于,所述方法包括:
根据应用程序的外部请求和预设扫描策略生成扫描请求,所述扫描请求携带扫描标记;
在根据所述扫描请求扫描所述应用程序时,若检测到所述应用程序所调用的敏感函数使用的参数信息包括所述扫描标记,将所述敏感函数使用的参数信息上报;
根据预设漏洞分析策略分析上报的所述敏感函数使用的参数信息,所述预设漏洞分析策略对不同敏感函数使用的参数信息的漏洞分析策略不同。
2.根据权利要求1所述的方法,其特征在于,所述若检测到所述应用程序所调用的敏感函数使用的参数信息包括所述扫描标记,将所述敏感函数使用的参数信息上报,包括:
根据所述应用程序的编程语言,确定所述应用程序所调用的敏感函数;
若检测到所述敏感函数使用的参数信息包括所述扫描标记,将所述敏感函数使用的参数信息上报敏感函数。
3.根据权利要求1所述的方法,其特征在于,所述敏感函数为结构化查询语言SQL查询函数时,所述预设漏洞分析策略为SQL注入漏洞分析策略,所述根据预设漏洞分析策略分析上报的所述敏感函数使用的参数信息,包括:
若检测到上报的所述SQL查询函数使用的参数信息包括SQL注入标记,将所述参数信息拆分为多个参数子信息,所述SQL注入标记是解析所述扫描标记得到的;
若所述SQL注入标记被拆分在相邻的所述参数子信息中,确定所述应用程序存在漏洞。
4.根据权利要求1所述的方法,其特征在于,所述敏感函数为命令执行函数时,所述预设漏洞分析策略为命令注入漏洞分析策略,所述根据预设漏洞分析策略分析上报的所述敏感函数使用的参数信息,包括:
若检测到上报的所述命令执行函数使用的参数信息包括命令注入标记,将所述参数信息拆分为多个参数子信息,所述命令注入标记是解析所述扫描标记得到的;
若所述命令注入标记被拆分在相邻的所述参数子信息中,确定所述应用程序存在漏洞。
5.根据权利要求1所述的方法,其特征在于,所述敏感函数为代码执行函数时,所述预设漏洞分析策略为代码注入漏洞分析策略,所述根据预设漏洞分析策略分析上报的所述敏感函数使用的参数信息,包括:
若检测到上报的所述代码执行函数使用的参数信息包括代码注入标记,确定所述应用程序存在漏洞,所述代码注入标记是解析所述扫描标记得到的。
6.根据权利要求1所述的方法,其特征在于,所述敏感函数为文件操作函数时,所述预设漏洞分析策略为文件操作漏洞分析策略,所述根据预设漏洞分析策略分析上报的所述敏感函数使用的参数信息,包括:
若检测到上报的所述文件操作函数使用的参数信息包括文件操作标记,获得所述参数信息中的路径信息,所述文件操作标记是解析所述扫描标记得到的;
若所述路径信息和目标路径信息相同,确定所述应用程序存在漏洞,所述目标路径信息是解析所述扫描请求得到的。
7.根据权利要求1所述的方法,其特征在于,所述敏感函数为网络请求函数时,所述预设漏洞分析策略为服务端请求伪造漏洞分析策略,所述根据预设漏洞分析策略分析上报的所述敏感函数使用的参数信息,包括:
若检测到上报的所述网络请求函数使用的参数信息包括服务端请求伪造标记,且所述参数信息与所述服务端请求伪造标记同源,确定所述应用程序存在漏洞,所述服务端请求伪造标记是解析所述扫描标记得到的。
8.根据权利要求1-7任意一项所述的方法,其特征在于,在所述根据应用程序的外部请求和预设扫描策略生成扫描请求之前,所述方法还包括:
减少所述预设扫描策略的数量。
9.根据权利要求1-7任意一项所述的方法,其特征在于,所述根据应用程序的外部请求和预设扫描策略生成扫描请求,包括:
镜像所述应用程序的外部请求,获得所述外部请求的镜像请求;
根据所述镜像请求和所述预设扫描策略生成所述扫描请求。
10.根据权利要求9所述的方法,其特征在于,所述根据所述镜像请求和所述预设扫描策略生成所述扫描请求,包括:
根据预设过滤策略过滤所述镜像请求,获得过滤后的镜像请求,所述预设过滤策略包括扫描请求过滤算法和重复请求过滤算法;
根据所述过滤后的镜像请求和所述预设扫描策略生成所述扫描请求。
11.一种应用程序安全测试装置,其特征在于,所述装置包括:生成单元、上报单元和分析单元;
所述生成单元,用于根据应用程序的外部请求和预设扫描策略生成扫描请求,所述扫描请求携带扫描标记;
所述上报单元,用于在根据所述扫描请求扫描所述应用程序时,若检测到所述应用程序所调用的敏感函数使用的参数信息包括所述扫描标记,将所述敏感函数使用的参数信息上报;
所述分析单元,用于根据预设漏洞分析策略分析上报的所述敏感函数使用的参数信息,所述预设漏洞分析策略对不同敏感函数使用的参数信息的漏洞分析策略不同。
12.根据权利要求11所述的装置,其特征在于,所述装置还包括:减少单元;
所述减少单元,用于减少所述预设扫描策略的数量。
13.根据权利要求11所述的装置,其特征在于,所述生成单元,用于:
镜像所述应用程序的外部请求,获得所述外部请求的镜像请求;
根据所述镜像请求和所述预设扫描策略生成所述扫描请求。
14.一种用于应用程序安全测试的设备,其特征在于,所述设备包括处理器以及存储器:
所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;
所述处理器用于根据所述程序代码中的指令执行权利要求1-10任意一项所述的方法。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质用于存储计算机程序,所述计算机程序用于执行权利要求1-10任意一项所述的方法。
CN202110322537.XA 2021-03-25 2021-03-25 一种应用程序安全测试方法和相关装置 Active CN113010898B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110322537.XA CN113010898B (zh) 2021-03-25 2021-03-25 一种应用程序安全测试方法和相关装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110322537.XA CN113010898B (zh) 2021-03-25 2021-03-25 一种应用程序安全测试方法和相关装置

Publications (2)

Publication Number Publication Date
CN113010898A true CN113010898A (zh) 2021-06-22
CN113010898B CN113010898B (zh) 2024-04-26

Family

ID=76407396

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110322537.XA Active CN113010898B (zh) 2021-03-25 2021-03-25 一种应用程序安全测试方法和相关装置

Country Status (1)

Country Link
CN (1) CN113010898B (zh)

Cited By (4)

* 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安全测试方法和系统
CN115203060A (zh) * 2022-09-14 2022-10-18 深圳开源互联网安全技术有限公司 一种基于iast的安全测试方法及装置
CN116644425A (zh) * 2022-04-02 2023-08-25 港珠澳大桥管理局 基于Javaagent的Web漏洞即时阻断方法、装置、设备和存储介质
CN117112435A (zh) * 2023-09-08 2023-11-24 清科万道(北京)信息技术有限公司 一种漏洞联动检测结果的融合方法、存储介质及电子设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1820262A (zh) * 2003-06-09 2006-08-16 范拉诺公司 事件监控及管理
US20180330102A1 (en) * 2017-05-10 2018-11-15 Checkmarx Ltd. Using the Same Query Language for Static and Dynamic Application Security Testing Tools
CN111611590A (zh) * 2020-05-22 2020-09-01 支付宝(杭州)信息技术有限公司 涉及应用程序的数据安全的方法及装置
CN112182587A (zh) * 2020-09-30 2021-01-05 中南大学 Web漏洞扫描方法、系统、装置、存储介质和计算机设备

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1820262A (zh) * 2003-06-09 2006-08-16 范拉诺公司 事件监控及管理
US20180330102A1 (en) * 2017-05-10 2018-11-15 Checkmarx Ltd. Using the Same Query Language for Static and Dynamic Application Security Testing Tools
CN111611590A (zh) * 2020-05-22 2020-09-01 支付宝(杭州)信息技术有限公司 涉及应用程序的数据安全的方法及装置
CN112182587A (zh) * 2020-09-30 2021-01-05 中南大学 Web漏洞扫描方法、系统、装置、存储介质和计算机设备

Cited By (7)

* 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安全测试方法和系统
CN116644425A (zh) * 2022-04-02 2023-08-25 港珠澳大桥管理局 基于Javaagent的Web漏洞即时阻断方法、装置、设备和存储介质
CN116644425B (zh) * 2022-04-02 2024-02-20 港珠澳大桥管理局 基于Javaagent的Web漏洞即时阻断方法、装置、设备和存储介质
CN115203060A (zh) * 2022-09-14 2022-10-18 深圳开源互联网安全技术有限公司 一种基于iast的安全测试方法及装置
CN115203060B (zh) * 2022-09-14 2022-12-13 深圳开源互联网安全技术有限公司 一种基于iast的安全测试方法及装置
CN117112435A (zh) * 2023-09-08 2023-11-24 清科万道(北京)信息技术有限公司 一种漏洞联动检测结果的融合方法、存储介质及电子设备
CN117112435B (zh) * 2023-09-08 2024-01-26 清科万道(北京)信息技术有限公司 一种漏洞联动检测结果的融合方法、存储介质及电子设备

Also Published As

Publication number Publication date
CN113010898B (zh) 2024-04-26

Similar Documents

Publication Publication Date Title
CN113010898B (zh) 一种应用程序安全测试方法和相关装置
CN106970790B (zh) 一种应用程序创建的方法、相关设备及系统
US20160241589A1 (en) Method and apparatus for identifying malicious website
US9965565B2 (en) Methods and terminals for generating and reading 2D barcode and servers
CN111368290B (zh) 一种数据异常检测方法、装置及终端设备
CN111666222B (zh) 一种测试方法和相关装置
US9754113B2 (en) Method, apparatus, terminal and media for detecting document object model-based cross-site scripting attack vulnerability
CN106709346B (zh) 文件处理方法及装置
CN103258163B (zh) 一种脚本病毒识别方法、装置及系统
CN107766358B (zh) 一种页面分享的方法及相关装置
CN107171894A (zh) 终端设备、分布式云端检测系统以及样本检测的方法
CN110716850A (zh) 页面测试方法、装置、系统及存储介质
CN103177217B (zh) 一种文件扫描方法、系统及客户端和服务器
CN109002547B (zh) 日志文件存储方法、移动终端及计算机可读存储介质
CN111177612B (zh) 一种页面登录鉴权的方法及相关装置
CN116881143A (zh) 一种数据对象复制异常排查方法、装置、设备及存储介质
CN109450853B (zh) 恶意网站判定方法、装置、终端及服务器
CN116861198A (zh) 数据处理方法、装置及存储介质
CN115061939B (zh) 数据集安全测试方法、装置及存储介质
CN114422274B (zh) 一种基于云原生的多场景漏洞检测方法、装置及存储介质
CN114490307B (zh) 一种单元测试方法、装置及存储介质
CN110399721A (zh) 一种软件识别方法和服务器以及客户端
CN103532988A (zh) 页面访问控制方法和相关装置及系统
CN114722970B (zh) 一种多媒体检测方法、装置及存储介质
CN114218006A (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