CN114386045B - 一种Web应用程序漏洞检测方法、装置及存储介质 - Google Patents

一种Web应用程序漏洞检测方法、装置及存储介质 Download PDF

Info

Publication number
CN114386045B
CN114386045B CN202111602913.7A CN202111602913A CN114386045B CN 114386045 B CN114386045 B CN 114386045B CN 202111602913 A CN202111602913 A CN 202111602913A CN 114386045 B CN114386045 B CN 114386045B
Authority
CN
China
Prior art keywords
web application
request data
php
vulnerability
character string
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
Application number
CN202111602913.7A
Other languages
English (en)
Other versions
CN114386045A (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.)
Shenzhen Mainway Technology Co ltd
Seczone Technology Co Ltd
Original Assignee
Shenzhen Mainway Technology Co ltd
Seczone Technology 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 Shenzhen Mainway Technology Co ltd, Seczone Technology Co Ltd filed Critical Shenzhen Mainway Technology Co ltd
Priority to CN202111602913.7A priority Critical patent/CN114386045B/zh
Publication of CN114386045A publication Critical patent/CN114386045A/zh
Application granted granted Critical
Publication of CN114386045B publication Critical patent/CN114386045B/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

Landscapes

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

Abstract

根据本申请方案所提供的Web应用程序漏洞检测方法、装置及存储介质,根据PHP扩展创建框架核心类库;其中,PHP扩展为PHP程序漏洞检测的探针;根据Web应用请求的请求数据所处数据处理阶段,调用框架核心类库中相应实现类对请求数据进行处理;根据处理结果检测请求数据中是否存在Web应用程序漏洞。通过本申请方案的实施,在Web应用请求的请求数据在处理阶段时,通过调用PHP扩展创建的框架核心类库中相应的实现类对请求数据进行处理,判断请求数据中是否存在Web应用程序漏洞,只需要PHP语言就可以灵活添加新的漏洞类型和开发各种漏洞检测方法,使Web应用程序漏洞的检测更加灵活,更加准确。

Description

一种Web应用程序漏洞检测方法、装置及存储介质
技术领域
本申请涉及网络安全技术领域,尤其涉及一种Web应用程序漏洞检测方法、装置及存储介质。
背景技术
自PHP诞生以来,凭借着快速开发,使用门槛低,逐渐发展为主流的Web应用程序开发语言之一,常年占据着很高的市场份额,期间诞生了很多知名的开源项目和框架,同时也面临着日趋严重的网络安全挑战。目前来看市面上已经有一些针对PHP项目的安全检测方法,从PHP语言扩展入手,对应用程序的数据流进行捕获分析,但目前还没有一个高效易用的框架来弹性扩展我们对Web应用程序探测的需要,即我们可以通过PHP语言去编写我们的漏洞检测方法,而不再是通过扩展去编写实现。这样我们探测的灵活度和易用性更高,相对于更多的PHP开发者来说,门槛也更低。通过对市面上已经有的PHP漏洞检测方法分析,我们发现存在以下问题:
通过PHP扩展实现漏洞的检测逻辑较为复杂,能支持的漏洞数量有限,修改起来麻烦;
需要技术人员懂得PHP扩展的编写(了解C语言或C++语言),增加了漏洞检测方法实现的难度;
扩展本身对PHP的很多函数和类支持并不全面,没法动态的添加和修改;
扩展没有灵活的参数配置,可以通过开关对实际业务中的一些漏洞类型检测进行控制;
发明内容
本申请实施例提供了一种Web应用程序漏洞检测方法、装置及存储介质,至少能够解决相关技术中检测人员需要了解PHP扩展的开发,通过扩展新增的漏洞检测方法复杂不易实现以及扩展实现的检测方法不能灵活修改漏洞检测逻辑,扩展的修改都需要重新编译安装,没有通过PHP语言实现来得简单便捷的问题。
本申请实施例第一方面提供了一种Web应用程序漏洞检测方法,包括:
根据PHP扩展创建框架核心类库;其中,所述PHP扩展为PHP程序漏洞检测的探针;所述框架核心类库包括对所述Web应用请求的请求数据中字符串变量进行污点标记的第一实现类,和,对处理所述字符串变量的PHP函数、类以及opcode进行Hook的第二实现类;
根据所述Web应用请求的所述请求数据所处数据处理阶段,调用所述框架核心类库中相应所述实现类对所述请求数据进行处理;其中,数据处理阶段包括输入阶段、传输阶段;
根据处理结果检测所述请求数据中是否存在Web应用程序漏洞。
本申请实施例第二方面提供了一种Web应用程序漏洞检测装置,包括:
创建模块,用于根据PHP扩展创建框架核心类库;
处理模块,用于根据所述Web应用请求的所述请求数据所处数据处理阶段,调用所述框架核心类库中相应所述实现类对所述请求数据进行处理;其中,数据处理阶段包括输入阶段、传输阶段;
检测模块,用于根据处理结果检测所述请求数据中是否存在Web应用程序漏洞。
本申请实施例第三方面提供了一种电子装置,包括:存储器、处理器及总线,所述总线用于实现所述存储器、处理器之间的连接通讯;所述处理器用于执行存储在所述存储器上的计算机程序,所述处理器执行所述计算机程序时上述本申请实施例第一方面提供的Web应用程序漏洞检测方法中的各步骤。
本申请实施例第四方面提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时,实现上述本申请实施例第一方面提供的Web应用程序漏洞检测方法中的各步骤。
由上可见,根据本申请方案所提供的Web应用程序漏洞检测方法、装置及存储介质,根据PHP扩展创建框架核心类库;其中,所述PHP扩展为PHP程序漏洞检测的探针;所述框架核心类库包括对所述Web应用请求的请求数据中字符串变量进行污点标记的第一实现类,和,对处理所述字符串变量的PHP函数、类以及opcode进行Hook的第二实现类;根据所述Web应用请求的所述请求数据所处数据处理阶段,调用所述框架核心类库中相应所述实现类对所述请求数据进行处理;根据处理结果检测所述请求数据中是否存在Web应用程序漏洞。通过本申请方案的实施,在Web应用请求的请求数据在处理阶段时,通过调用PHP扩展创建的框架核心类库中相应的实现类对请求数据进行处理,判断请求数据中是否存在Web应用程序漏洞,只需要PHP语言就可以灵活添加新的漏洞类型和开发各种漏洞检测方法,使Web应用程序漏洞的检测更加灵活,更加准确。
附图说明
图1为本申请第一实施例提供的Web应用程序漏洞检测方法的基本流程示意图;
图2为本申请第二实施例提供的Web应用程序漏洞检测方法的细化流程示意图;
图3为本申请第三实施例提供的Web应用程序漏洞检测装置的程序模块示意图;
图4为本申请第四实施例提供的电子装置的结构示意图。
具体实施内容
为使得本申请的发明目的、特征、优点能够更加的明显和易懂,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而非全部实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
为了解决相关技术中检测人员需要了解PHP扩展的开发,通过扩展新增的漏洞检测方法复杂不易实现以及扩展实现的检测方法不能灵活修改漏洞检测逻辑,扩展的修改都需要重新编译安装,没有通过PHP语言实现来得简单便捷的问题,本申请第一实施例提供了Web应用程序漏洞检测方法。
如图1为本实施例提供的Web应用程序漏洞检测方法的基本流程图,该Web应用程序漏洞检测方法包括以下的步骤:
步骤101、根据PHP扩展创建框架核心类库。
具体的,本实施例中PHP扩展为PHP程序漏洞检测的探针,可以实现PHP程序运行时的漏洞检测;框架核心类库包括对Web应用请求的请求数据中字符串变量进行污点标记的第一实现类,和,对处理传入的字符串变量的PHP函数、类以及opcode进行Hook的第二实现类。在实际应用中,目前市面上已经有一些针对PHP项目的安全检测方法,从PHP语言扩展入手,对应用程序的数据流进行捕获分析,但目前还没有一个高效易用的框架来弹性扩展对Web应用程序探测的需要,在本实施例中,通过PHP语言去编写PHP扩展,根据PHP扩展创建框架核心类库,使用户可以根据PHP语言对框架核心类库进行修改,拥有更高的灵活度和易用性。
在本实施例一种可选的实施方式中,根据PHP扩展创建框架核心类库的步骤之后,还包括:获取针对漏洞探测框架修改的漏洞检测逻辑代码;根据漏洞检测逻辑代码,控制漏洞探测框架对漏洞检测逻辑进行相应修改。
具体的,在实际应用中,扩展本身对PHP的很多函数和类支持并不全面,无法动态的添加和修改,在本实施例中,用户可以根据在框架的基础上编写想要检测漏洞的逻辑代码,或者对适合被测程序的检测逻辑进行相应修改,而完全不需要关注底层扩展实现,应当说明的是,在编写完逻辑代码之后,只需要重启PHP服务就能更新为修改后的逻辑代码,提高了PHP扩展的灵活度与扩展性。
步骤102、根据Web应用请求的请求数据所处数据处理阶段,调用框架核心类库中相应实现类对请求数据进行处理。
具体的,在本实施例中,根据Web应用请求的请求数据在不同的数据处理阶段,对请求数据的内容进行不同的处理,其中,数据处理阶段包括输入阶段和传输阶段,当请求数据处在输入阶段或传输阶段时,调用框架核心类库中相应的实现类对请求数据进行处理。
在本实施例一种可选的实施方式中,根据Web应用请求的请求数据所处数据处理阶段,调用框架核心类库中相应实现类对请求数据进行处理的步骤,包括:当Web应用请求的请求数据处于输入阶段时,调用框架核心类库中第一实现类,对请求数据中字符串变量进行污点标记;当Web应用请求的请求数据处于传输阶段时,调用框架核心类库中第二实现类,对请求数据中处理传入的字符串变量的PHP函数、类以及opcode在漏洞探测框架中进行Hook。
具体的,在本实施例中,当Web应用请求的请求数据处于输入阶段时,根据框架核心类库的第一实现类,对请求数据中所有的字符串变量进行污点标记,并在数据处理的过程中持续对污点标记进行跟踪,应当说明的是,在本实施例中,默认一切输入都是不安全的。当Web应用请求的请求数据处于传输阶段时,根据框架核心类库的第二实现类,将处理传入的字符串变量的PHP函数、类以及opcode存储到漏洞探测框架中,并对处理传入的字符串变量的PHP函数、类以及opcode进行Hook。
步骤103、根据处理结果检测请求数据中是否存在Web应用程序漏洞。
具体的,在本实施例中,检测请求数据中是否存在Web应用程序漏洞分为两个阶段,当请求数据处于传输阶段时,根据传输阶段对请求数据的处理结果检测请求数据中是否存在Web应用程序漏洞;当请求数据处于输出阶段时,根据请求数据中字符串变量的污点标记检测请求数据中是否存在Web应用程序漏洞。
在本实施例一种可选的实施方式中,根据处理结果检测请求数据中是否存在Web应用程序漏洞步骤,包括:根据漏洞探测框架检测PHP函数、类以及opcode在处理传入的字符串变量时是否存在Web应用程序漏洞。
具体的,在本实施例中,当数据处理阶段为传输阶段时,将Hook的PHP函数、类以及opcode存储到漏洞探测框架中,根据漏洞探测框架的漏洞检测逻辑检测PHP函数、类以及opcode在处理传入的字符串变量时是否存在Web应用程序漏洞,漏洞探测框架可以对该PHP函数、类以及opcode进行备份,存储到预先创建的存储库中,当漏洞探测框架再次进行检测时,可以查找存储库的备份信息并进行比对,能够快速有效的识别Web应用程序漏洞。
应当说明的是,根据处理结果检测请求数据中是否存在Web应用程序漏洞的步骤之后,还包括:若检测到PHP函数、类以及opcode存在Web应用程序漏洞,则保留字符串变量的污点标记;若未检测到PHP函数、类以及opcode存在Web应用程序漏洞,则去除字符串变量的污点标记。
具体的,在本实施例中,漏洞探测框架会将所有处理带有污点标记的字符串变量的PHP函数、类以及opcode进行Hook,当检测到存在Web应用程序漏洞时,保留字符串变量的污点标记并放回到原请求数据中,当未检测到存在Web应用程序漏洞时,去除字符串变量的污点标记并放回到原请求数据中,应当理解的是,漏洞探测框架在传输阶段对请求数据的处理并不会影响请求数据在程序中的运行。漏洞探测框架根据对PHP函数、类以及opcode的检测结果去除或保留字符串变量的污点标记,可以有效的识别漏洞探测框架在传输阶段对请求数据的处理结果。
在本实施例一种可选的实施方式中,保留字符串变量的污点标记的步骤之前,还包括:获取请求数据在程序运行过程中的堆栈信息;根据具体处理字符串变量的PHP函数、类以及opcode和堆栈信息提供的Web应用程序漏洞的漏洞类型进行漏洞处理。
具体的,在本实施例中漏洞处理包括漏洞记录、漏洞上报、漏洞拦截,在漏洞探测框架检测到PHP函数、类以及opcode在处理字符串变量时存在Web应用程序漏洞之后,漏洞探测框架会获取请求数据在程序运行过程中的堆栈信息,该堆栈信息不仅能定位可能存在问题的代码位置,还能提供相应的漏洞类型,根据具体处理字符串变量的PHP函数、类以及opcode和堆栈信息确定Web应用程序漏洞中具体的漏洞类型,并根据所提供的漏洞类型对该漏洞进行记录、上报以及拦截处理,提高Web应用程序漏洞检测的准确性。
应当说明的是,在Web应用请求的请求数据进入输出阶段之前,漏洞探测框架会对带有污点标记的字符串变量进行检测,对经过漏洞处理的字符串变量去除污点标记。
还应当说明的是,在获取请求数据在程序运行过程中的堆栈信息之后,漏洞探测框架会根据检测出的漏洞以及获取到的堆栈信息生成探测报告,并将探测报告上传至探测平台供用户查看,用户可以根据探测报告定位程序中出现问题的代码位置,并根据提供的漏洞类型进行代码修复。
在本实施例一种可选的实施方式中,根据堆栈信息提供的Web应用程序漏洞的漏洞类型进行漏洞处理的步骤之前,还包括:获取漏洞探测框架的配置信息;根据配置信息确定需要处理的漏洞类型。
具体的,在实际应用中,现有技术中针对Web应用程序漏洞的检测方法只能根据预先设定的漏洞类型检测相应的漏洞,在本实施例中,用户可以根据被测程序的安全等级需求,修改漏洞探测框架的配置信息,并可以根据市场变化在配置信息中添加新的漏洞类型,漏洞探测框架会根据修改后的配置信息确定哪些漏洞需要处理,哪些漏洞可以直接放行,减少漏洞误报、漏报的情况,使漏洞检测更加灵活。
在本实施例一种可选的实施方式中,根据处理结果检测请求数据中是否存在Web应用程序漏洞的步骤之后,还包括:当Web应用请求的请求数据处于输出阶段时,检测字符串变量是否存在污点标记;当字符串变量存在污点标记时,确定请求数据中存在Web应用程序漏洞。
具体的,在本实施例中,当Web应用请求的请求数据在传输阶段处理结束进入输出阶段时,漏洞探测框架会检测请求数据的字符串变量是否还存在污点标记,当字符串变量不存在污点标记时,确定字符串变量已经在传输阶段被Web应用程序的安全函数进行处理;当字符串变量存在污点标记时,确定请求数据中存在漏洞探测框架的配置信息中不需要拦截的漏洞以及漏洞探测框架的配置信息中不存在的漏洞,应当说明的是,当字符串变量存在污点标记时,漏洞探测框架会先获取不需要拦截的漏洞类型,当PHP函数、类以及opcode识别到字符串变量可能存在的漏洞类型,但不在拦截范围内,则不对其进行上报。在输出阶段进行的二次检测有效的提高了Web应用程序漏洞检测的准确性。
基于上述申请的实施例方案,根据PHP扩展创建框架核心类库;其中,PHP扩展为PHP程序漏洞检测的探针;根据Web应用请求的请求数据所处数据处理阶段,调用框架核心类库中相应实现类对请求数据进行处理;根据处理结果检测请求数据中是否存在Web应用程序漏洞。通过本申请方案的实施,在Web应用请求的请求数据在处理阶段时,通过调用PHP扩展创建的框架核心类库中相应的实现类对请求数据进行处理,判断请求数据中是否存在Web应用程序漏洞,只需要PHP语言就可以灵活添加新的漏洞类型和开发各种漏洞检测方法,使Web应用程序漏洞的检测更加灵活,更加准确。
图2中的方法为本申请第二实施例提供的一种细化的Web应用程序漏洞检测方法,该Web应用程序漏洞检测方法包括:
步骤201、根据PHP扩展创建框架核心类库。
步骤202、当Web应用请求的请求数据处于输入阶段时,调用框架核心类库中第一实现类,对请求数据中字符串变量进行污点标记。
步骤203、当Web应用请求的请求数据处于传输阶段时,调用框架核心类库中第二实现类,对请求数据中处理传入的字符串变量的PHP函数、类以及opcode进行Hook。
步骤204、根据漏洞探测框架检测PHP函数、类以及opcode是否存在Web应用程序漏洞。
步骤205、当检测到PHP函数、类以及opcode存在Web应用程序漏洞时,去除经过漏洞处理的字符串变量的污点标记,保留未经过漏洞处理的字符串变量的污点标记。
步骤206、当未检测到PHP函数、类以及opcode存在Web应用程序漏洞时,去除字符串变量的污点标记。
步骤207、当Web应用请求的请求数据处于输出阶段时,检测字符串变量是否存在污点标记。
步骤208、当字符串变量存在污点标记时,确定请求数据中存在配置信息中不需要处理的Web应用程序漏洞。
具体的,在本实施例中,在数据请求的传输阶段,Hook到PHP函数、类以及opcode之后,根据漏洞探测框架对PHP函数、类以及opcode进行检测,根据PHP函数、类以及opcode是否存在Web应用程序漏洞以及是否进行过漏洞处理,选择去除或者保留字符串变量的污点标记,在数据请求的输出阶段,根据请求数据中字符串变量的污点标记,确定请求数据中还存在不需要处理的Web应用程序漏洞,通过对Web应用程序漏洞的双重检测,有效的提高了对Web应用程序漏洞的检测效率。
应当理解的是,本实施例中各步骤的序号的大小并不意味着步骤执行顺序的先后,各步骤的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成唯一限定。
根据本申请方案所提供的Web应用程序漏洞检测方法,根据PHP扩展创建框架核心类库;当Web应用请求的请求数据处于输入阶段时,调用框架核心类库中第一实现类,对请求数据中字符串变量进行污点标记;当Web应用请求的请求数据处于传输阶段时,调用框架核心类库中第二实现类,对请求数据中处理传入的字符串变量的PHP函数、类以及opcode进行Hook;根据漏洞探测框架检测PHP函数、类以及opcode是否存在Web应用程序漏洞;当检测到PHP函数、类以及opcode存在Web应用程序漏洞时,去除经过漏洞处理的字符串变量的污点标记,保留未经过漏洞处理的字符串变量的污点标记;当未检测到PHP函数、类以及opcode存在Web应用程序漏洞时,去除字符串变量的污点标记;当Web应用请求的请求数据处于输出阶段时,检测字符串变量是否存在污点标记;当字符串变量存在污点标记时,确定请求数据中存在Web应用程序漏洞。通过本申请方案的实施,在数据请求的传输阶段检测是否存在Web应用程序漏洞之后,对请求数据中字符串变量的污点标记进去处理,在数据请求的输出阶段,根据请求数据中字符串变量的污点标记,确定请求数据中还存在不需要处理的Web应用程序漏洞,通过对Web应用程序漏洞的双重检测,有效的提高了对Web应用程序漏洞的检测效率。
图3为本申请第三实施例提供的一种Web应用程序漏洞检测装置。该Web应用程序漏洞检测装置可用于实现前述实施例中的Web应用程序漏洞检测方法。如图3所示,该Web应用程序漏洞检测装置主要包括:
创建模块,用于根据PHP扩展创建框架核心类库;
处理模块,用于根据Web应用请求的请求数据所处数据处理阶段,调用框架核心类库中相应实现类对请求数据进行处理;其中,数据处理阶段包括输入阶段、传输阶段;
检测模块,用于根据处理结果检测请求数据中是否存在Web应用程序漏洞。
在本实施例一种可选的实施方式中,处理模块具体用于:当Web应用请求的请求数据处于输入阶段时,调用框架核心类库中第一实现类,对请求数据中字符串变量进行污点标记;当Web应用请求的请求数据处于传输阶段时,调用框架核心类库中第二实现类,对请求数据中处理传入的字符串变量的PHP函数、类以及opcode在漏洞探测框架中进行Hook。
进一步的,在本实施例一种可选的实施方式中,该Web应用程序漏洞检测装置还包括:确定模块。检测模块还用于:当Web应用请求的请求数据处于输出阶段时,检测字符串变量是否存在污点标记。确定模块用于:当字符串变量存在污点标记时,确定请求数据中存在Web应用程序漏洞。
进一步的,在本实施例另一种可选的实施方式中,检测模块具体用于:根据漏洞探测框架检测PHP函数、类以及opcode在处理传入的字符串变量时是否存在Web应用程序漏洞。处理模块还用于:若检测到PHP函数、类以及opcode在处理传入的字符串变量时存在Web应用程序漏洞,则保留字符串变量的污点标记;若未检测到PHP函数、类以及opcode在处理传入的字符串变量时存在Web应用程序漏洞,则去除字符串变量的污点标记。
再进一步的,在本实施例一种可选的实施方式中,该Web应用程序漏洞检测装置还包括:获取模块。获取模块用于:获取请求数据在程序运行过程中的堆栈信息。处理模块还用于:根据具体处理字符串变量的PHP函数、类以及opcode和堆栈信息提供的Web应用程序漏洞的漏洞类型进行漏洞处理;其中漏洞处理包括漏洞记录、漏洞上报、漏洞拦截。
更进一步的,在本实施例一种可选的实施方式中,获取模块还用于:获取漏洞探测框架的配置信息。确定模块还用于:根据配置信息确定需要处理的漏洞类型。
在本实施例一种可选的实施方式中,该Web应用程序漏洞检测装置还包括:修改模块。获取模块还用于:获取针对漏洞探测框架修改的漏洞检测逻辑代码。修改模块用于:根据漏洞检测逻辑代码,控制漏洞探测框架对漏洞检测逻辑进行相应修改。
应当说明的是,第一、二实施例中的Web应用程序漏洞检测方法均可基于本实施例提供的Web应用程序漏洞检测装置实现,所属领域的普通技术人员可以清楚的了解到,为描述的方便和简洁,本实施例中所描述的安全函数识别装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
根据本申请方案所提供的Web应用程序漏洞检测装置,根据PHP扩展创建框架核心类库;其中,PHP扩展为PHP程序漏洞检测的探针;根据Web应用请求的请求数据所处数据处理阶段,调用框架核心类库中相应实现类对请求数据进行处理;根据处理结果检测请求数据中是否存在Web应用程序漏洞。通过本申请方案的实施,在Web应用请求的请求数据在处理阶段时,通过调用PHP扩展创建的框架核心类库中相应的实现类对请求数据进行处理,判断请求数据中是否存在Web应用程序漏洞,只需要PHP语言就可以灵活添加新的漏洞类型和开发各种漏洞检测方法,使Web应用程序漏洞的检测更加灵活,更加准确。
图4为本申请第四实施例提供的一种电子装置。该电子装置可用于实现前述实施例中的Web应用程序漏洞检测方法。如图4所示,该电子装置主要包括:
存储器401、处理器402、总线403及存储在存储器401上并可在处理器402上运行的计算机程序,存储器401和处理器402通过总线403连接。处理器402执行该计算机程序时,实现前述实施例中的Web应用程序漏洞检测方法。其中,处理器的数量可以是一个或多个。
存储器401可以是高速随机存取记忆体(RAM,Random Access Memory)存储器,也可为非不稳定的存储器(non-volatile memory),例如磁盘存储器。存储器401用于存储可执行程序代码,处理器402与存储器401耦合。
进一步的,本申请实施例还提供了一种存储介质,该存储介质可以是设置于上述各实施例中的电子装置中,该存储介质可以是前述图4所示实施例中的存储器。
该存储介质上存储有计算机程序,该程序被处理器执行时实现前述实施例中的Web应用程序漏洞检测方法。进一步的,该储介质还可以是U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或模块的间接耦合或通讯连接,可以是电性,机械或其它的形式。
作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个可读存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的可读存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上为对本申请所提供的Web应用程序漏洞检测方法、装置及存储介质的描述,对于本领域的技术人员,依据本申请实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本申请的限制。

Claims (8)

1.一种Web应用程序漏洞检测方法,其特征在于,包括:
根据PHP扩展创建框架核心类库;其中,所述PHP扩展为PHP程序漏洞检测的探针;所述框架核心类库包括对Web应用请求的请求数据中字符串变量进行污点标记的第一实现类,和,对处理传入的字符串变量的PHP函数、类以及opcode进行Hook的第二实现类;
根据所述Web应用请求的所述请求数据所处数据处理阶段,调用所述框架核心类库中相应实现类对所述请求数据进行处理;其中,数据处理阶段包括输入阶段、传输阶段,且当所述Web应用请求的所述请求数据处于输入阶段时,调用所述框架核心类库中所述第一实现类,对所述请求数据中字符串变量进行污点标记;当所述Web应用请求的所述请求数据处于传输阶段时,调用所述框架核心类库中所述第二实现类,对所述请求数据中处理传入的字符串变量的PHP函数、类以及opcode在漏洞探测框架中进行Hook;所述漏洞探测框架用于对所述PHP函数、类以及opcode进行检测与备份;
根据处理结果检测所述请求数据中是否存在Web应用程序漏洞;其中,当所述数据处理阶段为传输阶段,根据漏洞探测框架检测所述PHP函数、类以及opcode在处理传入的所述字符串变量时是否存在所述Web应用程序漏洞;当所述Web应用请求的所述请求数据处于输出阶段时,检测所述字符串变量是否存在污点标记;
当所述字符串变量存在所述污点标记时,确定所述请求数据中存在所述Web应用程序漏洞。
2.根据权利要求1所述的Web应用程序漏洞检测方法,其特征在于,所述根据处理结果检测所述请求数据中是否存在Web应用程序漏洞的步骤之后,还包括:
若检测到所述PHP函数、类以及opcode在处理传入的所述字符串变量时存在所述Web应用程序漏洞,则保留所述字符串变量的所述污点标记;
若未检测到所述PHP函数、类以及opcode在处理传入的所述字符串变量时存在所述Web应用程序漏洞,则去除所述字符串变量的所述污点标记。
3.根据权利要求2所述的Web应用程序漏洞检测方法,其特征在于,所述保留所述字符串变量的所述污点标记的步骤之前,还包括:
获取所述请求数据在程序运行过程中的堆栈信息;
根据具体处理所述字符串变量的所述PHP函数、类以及opcode和所述堆栈信息,提供的所述Web应用程序漏洞的漏洞类型进行漏洞处理;其中所述漏洞处理包括漏洞记录、漏洞上报、漏洞拦截。
4.根据权利要求3所述的Web应用程序漏洞检测方法,其特征在于,所述根据具体处理所述字符串变量的所述PHP函数、类以及opcode和所述堆栈信息,提供的所述Web应用程序漏洞的漏洞类型进行漏洞处理的步骤之前,还包括:
获取所述漏洞探测框架的配置信息;
根据所述配置信息确定需要处理的所述漏洞类型。
5.根据权利要求1至4中任意一项所述的Web应用程序漏洞检测方法,其特征在于,所述根据PHP扩展创建框架核心类库的步骤之后,还包括:
获取针对所述漏洞探测框架修改的漏洞检测逻辑代码;
根据所述漏洞检测逻辑代码,控制所述漏洞探测框架对漏洞检测逻辑进行相应修改。
6.一种Web应用程序漏洞检测装置,其特征在于,包括:
创建模块,用于根据PHP扩展创建框架核心类库;其中,所述PHP扩展为PHP程序漏洞检测的探针;所述框架核心类库包括对Web应用请求的请求数据中字符串变量进行污点标记的第一实现类,和,对处理传入的字符串变量的PHP函数、类以及opcode进行Hook的第二实现类;
处理模块,用于根据所述Web应用请求的所述请求数据所处数据处理阶段,调用所述框架核心类库中相应实现类对所述请求数据进行处理;其中,数据处理阶段包括输入阶段、传输阶段,且当所述Web应用请求的所述请求数据处于输入阶段时,调用所述框架核心类库中所述第一实现类,对所述请求数据中字符串变量进行污点标记;当所述Web应用请求的所述请求数据处于传输阶段时,调用所述框架核心类库中所述第二实现类,对所述请求数据中处理传入的字符串变量的PHP函数、类以及opcode在漏洞探测框架中进行Hook;所述漏洞探测框架用于对所述PHP函数、类以及opcode进行检测与备份;
检测模块,用于根据处理结果检测所述请求数据中是否存在Web应用程序漏洞;其中,当所述数据处理阶段为传输阶段,根据漏洞探测框架检测所述PHP函数、类以及opcode在处理传入的所述字符串变量时是否存在所述Web应用程序漏洞;当所述Web应用请求的所述请求数据处于输出阶段时,检测所述字符串变量是否存在污点标记;当所述字符串变量存在所述污点标记时,确定所述请求数据中存在所述Web应用程序漏洞。
7.一种电子装置,包括:存储器、处理器及总线,其特征在于,所述总线用于实现所述存储器、处理器之间的连接通讯;所述处理器用于执行存储在所述存储器上的计算机程序,所述处理器执行所述计算机程序时,实现权利要求1至5中任意一项所述方法中的步骤。
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,实现权利要求1至5中的任意一项所述方法中的步骤。
CN202111602913.7A 2021-12-24 2021-12-24 一种Web应用程序漏洞检测方法、装置及存储介质 Active CN114386045B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111602913.7A CN114386045B (zh) 2021-12-24 2021-12-24 一种Web应用程序漏洞检测方法、装置及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111602913.7A CN114386045B (zh) 2021-12-24 2021-12-24 一种Web应用程序漏洞检测方法、装置及存储介质

Publications (2)

Publication Number Publication Date
CN114386045A CN114386045A (zh) 2022-04-22
CN114386045B true CN114386045B (zh) 2023-07-07

Family

ID=81198681

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111602913.7A Active CN114386045B (zh) 2021-12-24 2021-12-24 一种Web应用程序漏洞检测方法、装置及存储介质

Country Status (1)

Country Link
CN (1) CN114386045B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115967551B (zh) * 2022-12-12 2024-05-17 中国人民解放军国防科技大学 基于漏洞信息引导的服务端请求伪造漏洞检测方法及装置
CN116167058B (zh) * 2023-04-23 2023-06-30 北京安普诺信息技术有限公司 一种基于代码疫苗的运行时漏洞分析方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107657177A (zh) * 2017-09-30 2018-02-02 北京奇虎科技有限公司 一种漏洞检测方法及装置
CN112528296A (zh) * 2021-02-10 2021-03-19 腾讯科技(深圳)有限公司 漏洞检测方法、装置和存储介质及电子设备
CN112966274A (zh) * 2021-03-11 2021-06-15 北京长亭未来科技有限公司 Web安全漏洞检测方法、扫描器、存储介质及电子设备
CN113420298A (zh) * 2021-05-26 2021-09-21 杭州孝道科技有限公司 一种基于PHP扩展的PHP Web应用程序漏洞检测方法及其存储介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102955914B (zh) * 2011-08-19 2015-11-25 百度在线网络技术(北京)有限公司 一种源文件安全漏洞的检测方法及检测装置
CN108959071B (zh) * 2018-06-14 2021-09-24 湖南鼎源蓝剑信息科技有限公司 一种基于RASP的PHP变形webshell的检测方法及系统
CN112632560A (zh) * 2020-12-25 2021-04-09 苏州浪潮智能科技有限公司 一种web漏洞确认方法以及装置
CN112765026A (zh) * 2021-01-21 2021-05-07 杭州安恒信息技术股份有限公司 一种动态监测phpweb应用代码漏洞方法及相关装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107657177A (zh) * 2017-09-30 2018-02-02 北京奇虎科技有限公司 一种漏洞检测方法及装置
CN112528296A (zh) * 2021-02-10 2021-03-19 腾讯科技(深圳)有限公司 漏洞检测方法、装置和存储介质及电子设备
CN112966274A (zh) * 2021-03-11 2021-06-15 北京长亭未来科技有限公司 Web安全漏洞检测方法、扫描器、存储介质及电子设备
CN113420298A (zh) * 2021-05-26 2021-09-21 杭州孝道科技有限公司 一种基于PHP扩展的PHP Web应用程序漏洞检测方法及其存储介质

Also Published As

Publication number Publication date
CN114386045A (zh) 2022-04-22

Similar Documents

Publication Publication Date Title
CN114386045B (zh) 一种Web应用程序漏洞检测方法、装置及存储介质
US8327325B2 (en) Programmable framework for automatic tuning of software applications
US8225291B2 (en) Automated detection of application performance bottlenecks
KR20090017598A (ko) 소프트웨어를 분석하기 위한 방법 및 시스템
US20210182031A1 (en) Methods and apparatus for automatic detection of software bugs
US10599558B1 (en) System and method for identifying inputs to trigger software bugs
US9507933B2 (en) Program execution apparatus and program analysis apparatus
JP7287480B2 (ja) 解析機能付与装置、解析機能付与方法及び解析機能付与プログラム
WO2022180702A1 (ja) 解析機能付与装置、解析機能付与プログラム及び解析機能付与方法
KR20150134679A (ko) 패치파일 분석시스템과 분석방법
US20160124795A1 (en) Evaluation method and apparatus
US20130179867A1 (en) Program Code Analysis System
CA2811617C (en) Commit sensitive tests
CN108572895B (zh) 一种Linux下自动检查软硬件配置的稳定性测试方法
KR102273135B1 (ko) 기호 실행을 사용하는 소프트웨어 테스트 입력 생성 장치 및 방법
US9075921B2 (en) Error simulation
US9436575B2 (en) Selective profiling of applications
CN108763092B (zh) 一种基于交叉验证的代码缺陷检测方法及装置
CN116225622A (zh) 基于Docker的PaaS应用参数模板的测试方法
JP6878707B2 (ja) 試験装置、試験方法および試験プログラム
US20080163180A1 (en) Dynamic discovery of data segments within instrumented code
US11886589B2 (en) Process wrapping method for evading anti-analysis of native codes, recording medium and device for performing the method
WO2024079794A1 (ja) 解析機能付与装置、解析機能付与方法および解析機能付与プログラム
CN112817663B (zh) 一种应用程序的seccomp规则获取方法和装置
KR102416292B1 (ko) 안드로이드 앱 동적 분석 방법, 이를 수행하기 위한 기록 매체 및 장치

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