一种Web应用校验漏洞检测方法、装置、终端及存储介质
文献发布时间:2023-06-19 19:16:40
技术领域
本发明涉及Web应用校验漏洞检测领域,具体涉及一种Web应用校验漏洞检测方法、装置、终端及存储介质。
背景技术
随着大数据、云计算和人工智能技术的发展,各大互联网企业研发的Web应用经过不断的升级更新,具备了越来越智能化的用户交互界面。然而这一特点在提高用户端体验的同时,随之而来的便是安全漏洞风险。因为智能化的用户交互界面,一定包含了复杂的用户输入端,任何一个输入端如果没有进行输入过滤检验,就会给黑客以可乘之机,并给互联网企业和用户造成不可估量的损失。
在Web应用的开发过程中,Web前端针对每一个输入端都会校验输入数据的格式,例如邮箱类型的输入端中,必须符合“xxx@xx.com”的格式;IP地址类型的输入端中,必须符合“x.x.x.x”的格式;密码类型的输入端中,必须符合被测Web应用规定的密码复杂度要求;手机号码则会对前3位数字有要求,且必须是11位数字。
然而在Web应用的实际运行中,会出现输入参数前后端校验不一致的情况,即输入端仅在Web前端对输入参数进行了校验,但没有对发送至Web后端的输入数据进行校验,即Web后端存在校验漏洞,给攻击者可乘之机。攻击者在目标Web应用中,可通过中间人攻击等方式,截获含有此输入参数的请求包,并将输入参数修改为恶意代码后,重新发送此请求包,达到绕过Web前端输入校验机制并发起攻击的目的。因此对Web应用的校验漏洞检修检测,尤其对Web后端的校验漏洞进行检测,从而找出存在安全漏洞的Web后端是非常有必要的。
发明内容
为解决上述问题,本发明提供一种Web应用校验漏洞检测方法、装置、终端及存储介质,自动遍历输入端,输入相关参数触发请求包发送,再对请求包截获,修改请求包中的输入参数来自动验证Web后端是否有安全漏洞,实现Web后端安全漏洞的自动化检测,提高Web应用安全性,且检测过程自动化,省时省力,效率较高。
第一方面,本发明的技术方案提供一种Web应用校验漏洞检测方法,包括以下步骤:
依次遍历被测Web应用的各个输入端;
每遍历一个输入端,输入对应的默认固定输入参数;
输入端将包含输入参数的请求包向Web后端发送;
截获发送的请求包;
待遍历完所有输入端,截获到多个请求包,将各个请求包中的输入参数替换为恶意代码,并重新发送请求包;
判断接收到请求包的Web后端是否对输入参数进行校验,若未校验,则相应Web后端存在安全漏洞。
进一步地,该方法还包括以下步骤:
判断输入端是否将请求包发送成功;
若未成功,则从语料库中调取对应的固定输入参数,重新输入到输入端,输入端再次将包含输入参数的请求包向Web后端发送;
若重复发送N次后,仍未发送成功,则跳过该输入端,遍历下一个输入端。
进一步地,该方法还包括以下步骤:
跳过输入端时,保存请求发送错误提示信息;
待所遍历完所有输入端后,将保存的所有请求发送错误提示信息发送给用户。
进一步地,N的取值为1。
进一步地,从语料库中调取对应的固定输入参数,具体包括:
识别输入端的Web前端中的页面文本信息;
将页面文本信息与语料库中的关键词进行比对;
找到每个页面文本信息对应的关键词,调取关键词对应的固定输入参数。
进一步地,该方法还包括以下步骤:
配置页面自动化脚本,执行页面自动化脚本实现依次遍历被测Web应用的各个输入端,并在每遍历一个输入端时,输入对应的默认固定输入参数,在请求包发送成功时,触发Web抓包工具截获请求包,在遍历完所有输入端后,将各个请求包中的输入参数替换为恶意代码,并重新发送请求包,判断接收到请求包的Web后端是否对输入参数进行校验,若未校验,则判定相应Web后端存在安全漏洞。
第二方面,本发明的技术方案提供一种Web应用校验漏洞检测装置,包括,
输入端遍历模块:依次遍历被测Web应用的各个输入端;
参数输入模块:每遍历一个输入端,输入对应的默认固定输入参数,触发输入端将包含输入参数的请求包向Web后端发送;
请求包截获模块:截获发送的请求包;
参数替换模块:待遍历完所有输入端,截获到多个请求包,将各个请求包中的输入参数替换为恶意代码,并重新发送请求包;
漏洞判定模块:判断接收到请求包的Web后端是否对输入参数进行校验,若未校验,则相应Web后端存在安全漏洞。
进一步地,该装置还包括:
请求发送判断模块:判断输入端是否将请求包发送成功,若未成功,则从语料库中调取对应的固定输入参数,重新输入到输入端,触发输入端再次将包含输入参数的请求包向Web后端发送;若重复发送N次后,仍未发送成功,则触发输入端遍历模块跳过该输入端,遍历下一个输入端。
第三方面,本发明的技术方案提供一种终端,包括:
存储器,用于存储Web应用校验漏洞检测程序;
处理器,用于执行所述Web应用校验漏洞检测程序时实现如上述任一项所述Web应用校验漏洞检测方法的步骤。
第四方面,本发明的技术方案提供一种计算机可读存储介质,所述可读存储介质上存储有Web应用校验漏洞检测程序,所述Web应用校验漏洞检测程序被处理器执行时实现如上述任一项所述Web应用校验漏洞检测方法的步骤。
本发明提供的一种Web应用校验漏洞检测方法、装置、终端及存储介质,相对于现有技术,具有以下有益效果:自动遍历输入端,输入相关参数触发请求包发送,再对请求包截获,修改请求包中的输入参数来自动验证Web后端是否有安全漏洞,实现Web后端安全漏洞的自动化检测,提高Web应用安全性,且检测过程自动化,省时省力,效率较高。同时在检测过程中,输入端的请求包发送失败时,从语料库调取输入参数再次发送,以此绕过Web前端的输入校验机制,确保构造的输入参数被有效的发送至Web端。
附图说明
为了更清楚的说明本申请实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种Web应用校验漏洞检测方法流程示意图。
图2是本发明实施例提供的一种Web应用校验漏洞检测方法流程示意图。
图3是输入端的Web前端中的页面文本信息示意图。
图4是本发明实施例提供的一种Web应用校验漏洞检测方法的一具体实施例流程示意图。
图5是本发明实施例提供的一种Web应用校验漏洞检测装置结构示意框图。
图6是本发明实施例提供的一种终端的结构示意图。
具体实施方式
以下对本发明的部分术语进行解释。
Web应用:是一种可以通过Web访问的应用程序,最大的好处是用户可以很方便地访问应用程序,用户只需要有浏览器即可,不需要再安装其他软件。应用程序有两种模式C/S、B/S。C/S是客户端/服务器端程序,也就是说这类程序一般独立运行。而B/S就是浏览器端/服务器端应用程序,这类应用程序一般借助IE等浏览器来运行。WEB应用程序一般是B/S模式。Web应用程序首先是“应用程序”,和用标准的程序语言,如C、C++等编写出来的程序没有什么本质上的不同。一个Web应用程序是由完成特定任务的各种Web组件构成的并通过Web将服务展示给外界。在实际应用中,Web应用程序是由多个Servlet、JSP页面、HTML文件以及图像文件等组成。所有这些组件相互协调为用户提供一组完整的服务。
Web前端:指利用HTML、CSS、JavaScript等计算机语言,做出能在浏览器上运行且用户可见的界面,比如网站网页、APP软件界面、Web应用界面等。
Web后端:是用户在浏览器中无法查看和交互的内容,负责存储和处理数据,并确保Web应用能够正常运行。
页面自动化:一种可进行读入测试套件、执行测试和记录测试结果,模拟真实用户操作的工具,包括浏览页面、点击链接、输入文字、提交表单、触发鼠标事件等操作,并且能够对页面结果进行种种验证。也就是说,只要在测试用例中把预期的用户行为与结果都描述出来,就得到了一个可以自动化运行的功能测试套件。
Web抓包工具:抓包工具是拦截查看网络数据包内容的软件。通过对抓获的数据包进行分析,可以得到有用的信息。我们的计算机通过向网络上传和从网络下载一些数据包来实现数据在网络中的传播。抓包工具可以帮助我们将这些数据包保存下来,如果这些数据包是以明文形式进行传送或者我们能够知道其加密方法,那么就可以分析出这些数据包的内容以及它们的用途。
为了使本技术领域的人员更好地理解本申请方案,下面结合附图和具体实施方式对本申请作进一步的详细说明。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图1是本发明实施例提供的一种Web应用校验漏洞检测方法流程示意图,如图1所示,该方法包括以下步骤。
S1,依次遍历被测Web应用的各个输入端。
需要说明的是,Web应用有多个输入端,依次遍历各个输入端,每遍历一个输入端,输入默认固定输入参数,触发请求包发送,截获请求包,然后再遍历下一个输入端,在遍历完所有输入端,获得多个请求包后,再统一执行请求包内输入参数修改操作。
S2,每遍历一个输入端,输入对应的默认固定输入参数。
S3,输入端将包含输入参数的请求包向Web后端发送。
遍历到一个输入端,输入默认的固定输入参数,输入完成后,触发请求包向Web后端发送。
S4,截获发送的请求包。
在请求包发送过程中,Web后端接收到请求包之前截获请求包,以修改请求包内的输入参数。可通过Web抓包工具截获请求包。
S5,待遍历完所有输入端,截获到多个请求包,将各个请求包中的输入参数替换为恶意代码,并重新发送请求包。
请求包发送过程被中断,将截获的请求包中的输入参数替换为恶意代码,之后再修改后的请求包重新向Web后端发送,Web后端接收到的是替换了恶意代码的请求包。
S6,判断接收到请求包的Web后端是否对输入参数进行校验,若未校验,则相应Web后端存在安全漏洞。
由于Web后端接收到的是替换了恶意代码的请求包,如果Web后端有正常的校验机制,则会校验到恶意代码而不会回馈请求包,如果Web后端没有正常的校验机制,则无法发现恶意代码。本实施例判断Web后端是否对请求包的输入参数进行校验,如果校验,则Web后端没有安全漏洞,如果没有校验,则判断Web后端存在安全漏洞,无法对恶意代码正常校验。
本发明实施例提供的一种Web应用校验漏洞检测方法,自动遍历输入端,输入相关参数触发请求包发送,再对请求包截获,修改请求包中的输入参数来自动验证Web后端是否有安全漏洞,实现Web后端安全漏洞的自动化检测,提高Web应用安全性,且检测过程自动化,省时省力,效率较高。
图2是本发明实施例提供的一种Web应用校验漏洞检测方法流程示意图,如图2所示,该方法包括以下步骤。
S1,依次遍历被测Web应用的各个输入端。
S2,每遍历一个输入端,输入对应的默认固定输入参数。
S3,输入端将包含输入参数的请求包向Web后端发送。
S4,判断输入端是否将请求包发送成功。
S5,若未成功,则从语料库中调取对应的固定输入参数,重新输入到输入端,输入端再次将包含输入参数的请求包向Web后端发送;若重复发送N次后,仍未发送成功,则跳过该输入端,遍历下一个输入端。
S6,若请求包发送成功,截获发送的请求包。
需要说明的是,无论是第一次发送成功,还是后续发送成功,一旦请求包发送成功,就截获请求包。
S7,待遍历完所有输入端,截获到多个请求包,将各个请求包中的输入参数替换为恶意代码,并重新发送请求包。
S8,判断接收到请求包的Web后端是否对输入参数进行校验,若未校验,则相应Web后端存在安全漏洞。
Web前端一般有校验机制,在输入端输入参数时,会对输入参数进行校验,一旦输入参数有误,就会阻止请求包发送,这样就无法对相应的Web后端进行校验漏洞的检测。因此,本实施例在输入端输入参数后,还实时监测请求包是否发送成功,在没有发送成功时,说明输入的默认固定输入参数被Web前端校验后没有通过,此时从语料库中调取输入端对应的固定输入参数,再次输入,重新尝试发送请求包。需要说明的是,语料库中的固定输入参数一般保证是正确格式的,能被Web前端校验通过的参数,因此在具体实施时,请求包重复发送1次后,如果仍不能发送成功,就可以跳过当前输入端,遍历下一个输入端。
一般情况下,语料库中的固定输入参数可保证是正确的格式,可通过Web前端的校验,进而相当于绕过被测Web应用的Web前端输入校验机制,确保每一个输入端所构造的输入参数在请求包中被有效地发送至Web后端。
如果请求包再次发送时,仍然不能发送成功,则Web应用可能有其他故障,此时在跳过当前输入端时,保存下请求发送错误提示信息,待所遍历完所有输入端后,将保存的所有请求发送错误提示信息发送给用户,用户后续进行人工检查。
本实施例中,语料库包含了用于识别输入端输入参数格式的关键词,例如“邮箱、IP、密码、路径”等,每一个关键词都会对应一个固定输入参数,例如“邮箱”对应“xx@123.com”、“IP地址”对应“1.1.1.1”、“密码”对应“123456a?”、“路径”对应“/home”。如下1表所示。
表1:语料库中的关键词与固定输入参数的对应关系
从语料库中调取对应的固定输入参数时,首先识别输入端的Web前端中的页面文本信息,将页面文本信息与语料库中的关键词进行比对,找到每个页面文本信息对应的关键词,调取关键词对应的固定输入参数。
输入端的Web前端中的页面文本信息如图3所示,图中的漏洞名称、漏洞编号、发送时间从和到即页面文本信息。
本实施例的检测流程通过页面自动化脚本实现自动化检测,首先配置页面自动化脚本,执行页面自动化脚本实现依次遍历被测Web应用的各个输入端,并在每遍历一个输入端时,输入对应的默认固定输入参数,在请求包发送成功时,触发Web抓包工具截获请求包,在遍历完所有输入端后,将各个请求包中的输入参数替换为恶意代码,并重新发送请求包,判断接收到请求包的Web后端是否对输入参数进行校验,若未校验,则判定相应Web后端存在安全漏洞。
为进一步理解本发明,以下提供一具体实施例对本发明进一步详细说明,图4是该具体实施例流程示意图,主要包括以下步骤。
第一步:设计一个页面自动化脚本,能够以最高权限用户遍历被测Web应用的所有输入端。
第二步:识别到一个输入端,输入默认的固定输入参数,如“test123”,并发送。
1)如果发送失败,则识别该输入端的Web前端中的页面文本信息,并与语料库进行关键词比对,当该输入端的Web前端中的页面文本信息与语料库中的关键词匹配时,输入该关键词对应的固定输入参数,并再次尝试发送。
2)如果仍然发送失败,则识别Web前端页面针对此输入端中的错误提示信息并保存,并跳过此输入端,待遍历完被测Web应用所有的输入端后,由人工统一检查未成功发送输入参数的输入端。
第三步:输入参数发送成功后,截获该输入端发送至Web后端的包含输入参数的请求包。
第四步:识别下一个输入端,并重复上述第二步和第三步,直至遍历完被测Web应用所有的输入端。
第五步:将第三步中的每一个输入端所对应的请求包中的输入参数替换为恶意代码,并重新发送此请求,判断被测Web应用是否在Web后端对输入参数进行校验。
上文中对于一种Web应用校验漏洞检测方法的实施例进行了详细描述,基于上述实施例描述的Web应用校验漏洞检测方法,本发明实施例还提供了一种与该方法对应的Web应用校验漏洞检测装置。
图5是本发明实施例提供的一种Web应用校验漏洞检测装置结构示意框图,如图5所示,该装置包括:输入端遍历模块101、参数输入模块102、请求发送判断模块103、请求包截获模块104、参数替换模块105和漏洞判定模块106。
输入端遍历模块101:依次遍历被测Web应用的各个输入端。
参数输入模块102:每遍历一个输入端,输入对应的默认固定输入参数,触发输入端将包含输入参数的请求包向Web后端发送。
请求发送判断模块103:判断输入端是否将请求包发送成功,若未成功,则从语料库中调取对应的固定输入参数,重新输入到输入端,触发输入端再次将包含输入参数的请求包向Web后端发送;若重复发送N次后,仍未发送成功,则触发输入端遍历模块101跳过该输入端,遍历下一个输入端。
请求包截获模块104:截获发送的请求包。
参数替换模块105:待遍历完所有输入端,截获到多个请求包,将各个请求包中的输入参数替换为恶意代码,并重新发送请求包。
漏洞判定模块106:判断接收到请求包的Web后端是否对输入参数进行校验,若未校验,则相应Web后端存在安全漏洞。
本实施例的Web应用校验漏洞检测装置用于实现前述的Web应用校验漏洞检测方法,因此该装置中的具体实施方式可见前文中的Web应用校验漏洞检测方法的实施例部分,所以,其具体实施方式可以参照相应的各个部分实施例的描述,在此不再展开介绍。
另外,由于本实施例的Web应用校验漏洞检测装置用于实现前述的Web应用校验漏洞检测方法,因此其作用与上述方法的作用相对应,这里不再赘述。
图6为本发明实施例提供的一种终端装置600的结构示意图,包括:处理器610、存储器620及通信单元630。所述处理器610用于实现存储器620中保存的Web应用校验漏洞检测程序时实现以下步骤:
S1,依次遍历被测Web应用的各个输入端;
S2,每遍历一个输入端,输入对应的默认固定输入参数;
S3,输入端将包含输入参数的请求包向Web后端发送;
S4,截获发送的请求包;
S5,待遍历完所有输入端,截获到多个请求包,将各个请求包中的输入参数替换为恶意代码,并重新发送请求包;
S6,判断接收到请求包的Web后端是否对输入参数进行校验,若未校验,则相应Web后端存在安全漏洞。
本发明自动遍历输入端,输入相关参数触发请求包发送,再对请求包截获,修改请求包中的输入参数来自动验证Web后端是否有安全漏洞,实现Web后端安全漏洞的自动化检测,提高Web应用安全性,且检测过程自动化,省时省力,效率较高。
该终端装置600包括处理器610、存储器620及通信单元630。这些组件通过一条或多条总线进行通信,本领域技术人员可以理解,图中示出的服务器的结构并不构成对本发明的限定,它既可以是总线形结构,也可以是星型结构,还可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
其中,该存储器620可以用于存储处理器610的执行指令,存储器620可以由任何类型的易失性或非易失性存储终端或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。当存储器620中的执行指令由处理器610执行时,使得终端600能够执行以下上述方法实施例中的部分或全部步骤。
处理器610为存储终端的控制中心,利用各种接口和线路连接整个电子终端的各个部分,通过运行或执行存储在存储器620内的软件程序和/或模块,以及调用存储在存储器内的数据,以执行电子终端的各种功能和/或处理数据。所述处理器可以由集成电路(Integrated Circuit,简称IC)组成,例如可以由单颗封装的IC所组成,也可以由连接多颗相同功能或不同功能的封装IC而组成。举例来说,处理器610可以仅包括中央处理器(Central Processing Unit,简称CPU)。在本发明实施方式中,CPU可以是单运算核心,也可以包括多运算核心。
通信单元630,用于建立通信信道,从而使所述存储终端可以与其它终端进行通信。接收其他终端发送的用户数据或者向其他终端发送用户数据。
本发明还提供一种计算机存储介质,这里所说的存储介质可为磁碟、光盘、只读存储记忆体(英文:read-only memory,简称:ROM)或随机存储记忆体(英文:random accessmemory,简称:RAM)等。
计算机存储介质存储有Web应用校验漏洞检测程序,所述Web应用校验漏洞检测程序被处理器执行时实现以下步骤:
S1,依次遍历被测Web应用的各个输入端;
S2,每遍历一个输入端,输入对应的默认固定输入参数;
S3,输入端将包含输入参数的请求包向Web后端发送;
S4,截获发送的请求包;
S5,待遍历完所有输入端,截获到多个请求包,将各个请求包中的输入参数替换为恶意代码,并重新发送请求包;
S6,判断接收到请求包的Web后端是否对输入参数进行校验,若未校验,则相应Web后端存在安全漏洞。
本发明自动遍历输入端,输入相关参数触发请求包发送,再对请求包截获,修改请求包中的输入参数来自动验证Web后端是否有安全漏洞,实现Web后端安全漏洞的自动化检测,提高Web应用安全性,且检测过程自动化,省时省力,效率较高。
本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中如U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质,包括若干指令用以使得一台计算机终端(可以是个人计算机,服务器,或者第二终端、网络终端等)执行本发明各个实施例所述方法的全部或部分步骤。
在本发明所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
以上公开的仅为本发明的优选实施方式,但本发明并非局限于此,任何本领域的技术人员能思之的没有创造性的变化,以及在不脱离本发明原理前提下所作的若干改进和润饰,都应落在本发明的保护范围内。
- 一种输入框内容的校验方法、装置、存储介质及终端
- 一种弹幕数据的校验方法、装置、终端及存储介质
- 基于字符分割的弹幕校验方法、装置、终端及存储介质
- 基于链表方式的弹幕校验方法、装置、终端及存储介质
- 基于穿戴式设备的计步数据校验方法、装置、存储介质及终端
- 一种Web应用漏洞检测规则生成方法、终端及存储介质
- 一种Web应用程序漏洞检测方法、装置及存储介质