一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

命令注入漏洞检测方法、系统、设备及存储介质与流程

2022-11-16 17:23:35 来源:中国专利 TAG:


1.本发明涉及网络安全技术领域,具体地说,涉及一种命令注入漏洞检测方法、系统、设备及存储介质。


背景技术:

2.命令注入漏洞是一种常见的web应用漏洞;攻击者利用应用程序的后台漏洞在流量请求中插入非法命令、一句话木马等,达到窃取或篡改数据的目的,对系统应用造成严重威胁。
3.常见的防御方法是收集已知的命令注入漏洞语句,结合专家经验制定正则规则,然后用正则规则匹配流量数据进行拦截命中的请求。但是依赖专家经验的正则编写十分耗时耗力,需要花费过多人力来建立规则库,而且不易变通,遇到业务变更需要修改对应的规则;而且正则的滞后性导致无法防御未知的攻击,对于一些绕过混淆等命令注入漏洞,正则匹配有比较多的误报和漏报。


技术实现要素:

4.针对现有技术中的问题,本发明的目的在于提供一种命令注入漏洞检测方法、系统、设备及存储介质,利于提高对系统命令执行语句的检测效率,也利于提高命令注入漏洞的检出率,保障网络信息安全。
5.为实现上述目的,本发明提供了一种命令注入漏洞检测方法,所述方法包括以下步骤:
6.服务器获取应用程序的历史命令日志数据,并自所述历史命令日志数据,提取历史执行命令日志数据或命令关联日志数据;
7.服务器对所述历史执行命令日志数据或所述命令关联日志数据进行处理,获得多个命令校验模板;
8.服务器基于所述多个命令校验模板,构建预设校验模板库;
9.当检测到应用程序发生命令调用动作时,服务器暂停执行所述命令调用动作;并对所述命令调用动作对应的命令内容进行处理,获得待检测命令特征模板;
10.服务器将所述待检测命令特征模板和所述预设校验模板库进行匹配,当匹配成功时,服务器继续执行所述命令调用动作。
11.可选地,所述方法还包括步骤:
12.当所述待检测命令特征模板与所述预设校验模板库中的所有命令校验模板匹配失败时,服务器获取所述预设校验模板库中与所述待检测命令特征模板之间的匹配度最大的命令校验模板,作为目标校验模板;
13.当所述待检测命令特征模板与所述目标校验模板之间的匹配度大于或等于第一预设阈值时,服务器阻止执行所述命令调用动作。
14.可选地,所述方法还包括步骤:
15.当所述待检测命令特征模板与所述目标校验模板之间的匹配度小于所述第一预设阈值时,服务器判断所述命令调用动作对应的命令内容是否属于新增业务或变更业务;
16.若所述命令调用动作对应的命令内容属于新增业务或变更业务,则服务器继续执行所述命令调用动作,并将所述待检测命令特征模板添加至所述预设校验模板库;
17.若所述命令调用动作对应的命令内容不属于新增业务或变更业务,则服务器阻止执行所述命令调用动作。
18.可选地,所述方法还包括步骤:
19.当所述待检测命令特征模板与所述目标校验模板之间的匹配度大于或等于第一预设阈值时,服务器将所述待检测命令特征模板中的字段与所述目标校验模板中的字段进行比对;
20.服务器将所述待检测命令特征模板中与所述目标校验模板不相同的字段,标记为攻击字段,并存储至对应的日志数据中。
21.可选地,所述方法还包括步骤:
22.服务器依据预设数据库,获取与所述攻击字段对应的防御方案;所述预设数据库中存储有不同攻击字段对应的防御方案;
23.所述服务器执行所述防御方案。
24.可选地,所述当匹配成功时,服务器继续执行所述命令调用动作,包括:
25.当所述待检测命令特征模板与所述预设校验模板库中的一命令校验模板相同时,服务器继续执行所述命令调用动作。
26.可选地,所述服务器基于所述多个命令校验模板,构建预设校验模板库,包括:
27.服务器统计各个命令校验模板对应的数量;
28.将数量大于第二预设阈值的所述命令校验模板,添加至预设校验模板库中。
29.可选地,所述自所述历史命令日志数据,提取历史执行命令日志数据或命令关联日志数据,包括:
30.服务器判断所述历史命令日志数据是否存在历史执行命令日志数据;
31.若存在,则提取出所述历史执行命令日志数据;
32.若不存在,则监测一预设时间段的系统流量数据,自所述系统流量数据提取得到命令关联数据。
33.可选地,所述服务器对所述历史执行命令日志数据或所述命令关联日志数据进行处理,获得多个命令校验模板,包括:
34.服务器将所述历史执行命令日志数据或所述命令关联日志数据中的预设符号、预设专业名词以及预设高频字段进行保留,将除去被保留的字段以外的其余字段泛化为字符串、数字或者日期时间,获得多个命令校验模板。
35.本发明还提供了一种命令注入漏洞检测系统,用于实现上述命令注入漏洞检测方法,所述系统包括:
36.历史日志分析模块,服务器获取应用程序的历史命令日志数据,并自所述历史命令日志数据,提取历史执行命令日志数据或命令关联日志数据;
37.命令校验模板获取模块,服务器对所述历史执行命令日志数据或所述命令关联日志数据进行处理,获得多个命令校验模板;
38.校验模板库构建模块,服务器基于所述多个命令校验模板,构建预设校验模板库;
39.待检测命令特征模板获取模块,当检测到应用程序发生命令调用动作时,服务器暂停执行所述命令调用动作;并对所述命令调用动作对应的命令内容进行处理,获得待检测命令特征模板;以及
40.第一待检测特征处理模块,服务器将所述待检测命令特征模板和所述预设校验模板库进行匹配,当匹配成功时,服务器继续执行所述命令调用动作。
41.本发明还提供了一种命令注入漏洞检测设备,包括:
42.处理器;
43.存储器,其中存储有所述处理器的可执行程序;
44.其中,所述处理器配置为经由执行所述可执行程序来执行上述任意一项命令注入漏洞检测方法的步骤。
45.本发明还提供了一种计算机可读存储介质,用于存储程序,所述程序被处理器执行时实现上述任意一项命令注入漏洞检测方法的步骤。
46.本发明与现有技术相比,具有以下优点及突出性效果:
47.本发明提供的命令注入漏洞检测方法、系统、设备及存储介质利于提高对系统命令执行语句的检测效率,利于提高命令注入漏洞的检测效率和准确率,保障网络信息安全。
附图说明
48.通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显。
49.图1为本发明一实施例公开的一种命令注入漏洞检测方法的示意图;
50.图2为本发明另一实施例公开的一种命令注入漏洞检测方法的示意图;
51.图3为本发明另一实施例公开的一种命令注入漏洞检测方法的示意图;
52.图4为本发明另一实施例公开的一种命令注入漏洞检测方法的示意图;
53.图5为本发明一实施例公开的一种命令注入漏洞检测系统的结构示意图;
54.图6为本发明另一实施例公开的一种命令注入漏洞检测系统的结构示意图;
55.图7为本发明另一实施例公开的一种命令注入漏洞检测系统的结构示意图;
56.图8为本发明另一实施例公开的一种命令注入漏洞检测系统的结构示意图;
57.图9为本发明一实施例公开的一种命令注入漏洞检测设备的结构示意图;
具体实施方式
58.以下通过特定的具体实例说明本技术的实施方式,本领域技术人员可由本技术所揭露的内容轻易地了解本技术的其他优点与功效。本技术还可以通过另外不同的具体实施方式加以实施或应用系统,本技术中的各项细节也可以根据不同观点与应用系统,在没有背离本技术的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,本技术中的实施例及实施例中的特征可以相互组合。
59.下面以附图为参考,针对本技术的实施例进行详细说明,以便本技术所属技术领域的技术人员能够容易地实施。本技术可以以多种不同形态体现,并不限定于此处说明的实施例。
60.在本技术的表示中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的表示意指结合该实施例或示例表示的具体特征、结构、材料或者特点包括于本技术的至少一个实施例或示例中。而且,表示的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本技术中表示的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
61.此外,术语“第一”、“第二”仅用于表示目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或隐含地包括至少一个该特征。在本技术的表示中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
62.为了明确说明本技术,省略与说明无关的器件,对于通篇说明书中相同或类似的构成要素,赋予了相同的参照符号。
63.在通篇说明书中,当说某器件与另一器件“连接”时,这不仅包括“直接连接”的情形,也包括在其中间把其它元件置于其间而“间接连接”的情形。另外,当说某种器件“包括”某种构成要素时,只要没有特别相反的记载,则并非将其它构成要素排除在外,而是意味着可以还包括其它构成要素。
64.当说某器件在另一器件“之上”时,这可以是直接在另一器件之上,但也可以在其之间伴随着其它器件。当对照地说某器件“直接”在另一器件“之上”时,其之间不伴随其它器件。
65.虽然在一些实例中术语第一、第二等在本文中用来表示各种元件,但是这些元件不应当被这些术语限制。这些术语仅用来将一个元件与另一个元件进行区分。例如,第一接口及第二接口等表示。再者,如同在本文中所使用的,单数形式“一”、“一个”和“该”旨在也包括复数形式,除非上下文中有相反的指示。应当进一步理解,术语“包含”、“包括”表明存在的特征、步骤、操作、元件、组件、项目、种类、和/或组,但不排除一个或多个其他特征、步骤、操作、元件、组件、项目、种类、和/或组的存在、出现或添加。此处使用的术语“或”和“和/或”被解释为包括性的,或意味着任一个或任何组合。因此,“a、b或c”或者“a、b和/或c”意味着“以下任一个:a;b;c;a和b;a和c;b和c;a、b和c”。仅当元件、功能、步骤或操作的组合在某些方式下内在地互相排斥时,才会出现该定义的例外。
66.此处使用的专业术语只用于言及特定实施例,并非意在限定本技术。此处使用的单数形态,只要语句未明确表示出与之相反的意义,那么还包括复数形态。在说明书中使用的“包括”的意义是把特定特性、区域、整数、步骤、作业、要素及/或成份具体化,并非排除其它特性、区域、整数、步骤、作业、要素及/或成份的存在或附加。
67.虽然未不同地定义,但包括此处使用的技术术语及科学术语,所有术语均具有与本技术所属技术领域的技术人员一般理解的意义相同的意义。普通使用的字典中定义的术语追加解释为具有与相关技术文献和当前提示的内容相符的意义,只要未进行定义,不得过度解释为理想的或非常公式性的意义。
68.现在将结合参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的实施方式。相反,提供这些实施方式使得本发明将全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。在图中相同
的附图标记表示相同或类似的结构,因而将省略对它们的重复描述。
69.客户端向服务器发出命令,服务器根据命令获取数据或者检索到数据后,返回给客户端。通常来说,客户端发出的命令是安全的。但也存在客户端发出非法命令的情况,此时若服务器存在命令注入漏洞,那么就无法对该非法命令进行检查,或者检查不充分,导致非法命令被执行,产生数据泄漏等危害,对系统安全造成一定的威胁。为避免该危害的产生,本技术提供下述的命令注入漏洞检测方法。
70.如图1所示,本发明一实施例公开了一种命令注入漏洞检测方法,该方法包括以下步骤:
71.s110,服务器获取应用程序的历史命令日志数据,并自上述历史命令日志数据,提取历史执行命令日志数据或命令关联日志数据。具体实施时,上述历史执行命令日志数据包括脚本执行命令日志和系统执行命令日志。
72.具体而言,服务器接收到客户端的一web应用程序发出的命令后,就获取该应用程序的历史命令日志数据。其中,可以为该应用程序在某一个历史时间段内,比如为最近一个月的历史命令日志数据。然后可以从该历史命令日志数据抽取出脚本执行命令日志和系统执行命令的日志。该系统可以是指服务器对应的系统。系统执行命令可以是服务器对应的系统执行关于上述客户端的命令。上述脚本执行命令日志可以是shell脚本执行命令日志。
73.如果服务器没有记录关于客户端中上述web应用程序的命令执行日志,则监测当前一预设时间段,比如未来一个月的关于客户端的上述web应用程序与服务器之间的流量数据,并记录日志数据,然后从这些系统流量以及日志数据中提取出命令相关的日志。
74.s120,服务器对上述历史执行命令日志数据或上述命令关联日志数据进行处理,获得多个命令校验模板。具体而言,服务器将上述历史执行命令日志数据或命令关联日志数据中的预设符号、预设专业名词以及预设高频字段进行保留,将除去被保留的字段以外的其余字段泛化为字符串、数字或者日期时间,获得多个命令校验模板。也即,将历史执行命令日志数据或命令关联日志数据进行泛化处理,获得命令校验模板。其中,可以是根据每一天的日志数据得到一条上述历史执行命令日志数据或上述命令关联日志数据。然后可以根据一条数据得到一个命令校验模板。上述泛化处理的具体实施过程可参考现有技术实现,本实施例不再赘述。
75.s130,服务器基于上述多个命令校验模板,构建预设校验模板库。具体实施时,比如可以为:服务器统计各个命令校验模板对应的数量。将数量大于第二预设阈值的上述命令校验模板,添加至预设校验模板库中。当数量大于第二预设阈值时,说明是频繁出现的,是客户端中上述web应用程序在正常情况下的调用,也即可以作为白名单模板,即可以通过用来执行的命令。因此,上述预设校验模板库也即为白名单模板库。本实施例创造性的利用历史数据建立白名单模板库机制。
76.其中,上述第二预设阈值可以根据关于应用程序的历史命令日志数据的采样周期来确定。示例性地,上述第二预设阈值比如可以为20。本技术对此不作限制。
77.s140,当检测到应用程序发生命令调用动作时,服务器暂停执行上述命令调用动作;并对上述命令调用动作对应的命令内容进行处理,获得待检测命令特征模板。具体而言,也即当服务器检测到客户端的应用程序产生命令调用行为,即向服务器发送命令,需要调取数据,那么服务器暂停执行该命令,然后获取到命令内容。先判断该命令调用动作或者
对应的命令内容是否安全,类似地,对该命令内容进行泛化处理,获得待检测命令特征模板。类似地,上述泛化处理的具体实施过程可参考现有技术实现,本实施例不再赘述。
78.s150,服务器将上述待检测命令特征模板和上述预设校验模板库进行匹配。具体实施时,该步骤需要将待检测命令特征模板和上述预设校验模板库中各个命令校验模板分别进行匹配。具体可以利用待检测命令特征模板和上述预设校验模板库中各个命令校验模板之间的匹配度,进行它们之间的匹配。
79.其中,上述匹配度的计算可以利用jaccard相似度计算方法或者levenshtein编辑距离计算方法来实现。其中,jaccard相似度,是用于比较有限样本集合的相似性的统计量,定义为两个集合的交集与并集的比例。levenshtein距离,是编辑距离的一种,指两个字符串之间,由一个转换成另一个所需的最少编辑次数。其中编辑操作包括:插入、删除、替换。编辑操作可以有不同权重,这里以等权为例。求解算法通常为动态规划。
80.其中,上述jaccard相似度计算方法或者levenshtein编辑距离计算方法的具体实施过程可参考现有技术实现,本实施例不再赘述。本技术对上述待检测命令特征模板和上述预设校验模板库中各个命令校验模板之间的匹配度的计算也不以此二种计算方法为限。
81.s170,当待检测命令特征模板与上述预设校验模板库匹配成功时,服务器继续执行上述命令调用动作。具体而言,只要待检测命令特征模板能够与上述预设校验模板库中的一命令校验模板匹配成功,那就说明待检测命令特征模板与上述预设校验模板库匹配成功。此时说明上述待检测命令特征模板对应的命令内容是没有危险性的,那么该对应的命令调用动作就是可以被允许执行的。因此,服务器继续执行上述命令调用动作。
82.可选地,在一些实施例中,当上述待检测命令特征模板与上述预设校验模板库中的一命令校验模板相同时,也即待检测命令特征模板与上述预设校验模板库中的一命令校验模板之间的匹配度为100%时,服务器继续执行上述命令调用动作。
83.本实施例利于提高命令注入漏洞的检出率。
84.如图2所示,在本技术的另一实施例中,公开了另一种命令注入漏洞检测方法。该方法在上述图1对应实施例的基础上,s110包括:
85.s111,服务器获取应用程序的历史命令日志数据,并判断历史命令日志数据是否存在历史执行命令日志数据。
86.若存在,则执行步骤s112:提取出上述历史执行命令日志数据。此时相应地,步骤s120中即为服务器对历史执行命令日志数据进行处理,获得多个命令校验模板。
87.若不存在,则执行步骤s113:监测一预设时间段的系统流量数据,自上述系统流量数据提取得到命令关联数据。此时相应地,步骤s120中即为服务器对上述命令关联数据进行处理,获得多个命令校验模板。
88.也即如果服务器没有记录关于客户端中上述web应用程序的命令执行日志,则监测一预设时间段,比如未来一个月的关于客户端的上述web应用程序与服务器之间的流量数据,然后从这些流量数据中提取出命令相关的日志或者其他数据,得到命令关联数据。
89.如图3所示,在本技术的另一实施例中,公开了另一种命令注入漏洞检测方法。该方法在上述图1对应实施例的基础上,还包括步骤:
90.s160,判断待检测命令特征模板和上述预设校验模板库是否匹配成功。
91.若匹配成功,则执行上述步骤s170。
92.当上述待检测命令特征模板与上述预设校验模板库中的所有命令校验模板均匹配失败时,则执行步骤s180和步骤s200。
93.s180,服务器获取上述预设校验模板库中与上述待检测命令特征模板之间的匹配度最大的命令校验模板,作为目标校验模板。
94.s200,当待检测命令特征模板与目标校验模板之间的匹配度大于或等于第一预设阈值且小于1时,服务器阻止执行上述命令调用动作。
95.具体而言,也即匹配失败时,找出与待检测命令特征模板匹配度最高的命令校验模板,当该最大的匹配度大于等于第一预设阈值,且小于1时,服务器拦截该命令调用动作,并停止执行。
96.示例性地,上述第一预设阈值比如可以为90%。本技术对此不作限制。
97.如图4所示,在本技术的另一实施例中,公开了另一种命令注入漏洞检测方法。该方法在上述图3对应实施例的基础上,在步骤s180之后,包括步骤:
98.s190,判断待检测命令特征模板与目标校验模板之间的匹配度是否大于等于第一预设阈值。
99.若大于等于第一预设阈值,则执行上述步骤s200。
100.若小于第一预设阈值,则执行步骤s220:当服务器判定上述命令调用动作对应的命令内容属于新增业务或变更业务时,服务器继续执行上述命令调用动作,并将上述待检测命令特征模板添加至上述预设校验模板库。
101.在一些实施例中,在上述图4对应实施例的基础上,当待检测命令特征模板与目标校验模板之间的匹配度小于第一预设阈值时,执行步骤s210:服务器判断上述命令调用动作对应的命令内容是否属于新增业务或变更业务。
102.若属于新增业务或变更业务,则执行上述步骤s220。
103.若不属于新增业务或变更业务,则服务器阻止执行上述命令调用动作。
104.步骤s210中,具体实施时,可以为服务器将上述命令调用动作对应的命令内容推送给专家验证人员进行验证,并接收返回的验证结果。或者可以将上述命令调用动作对应的命令内容和一预设数据库进行比对,当预设数据库中存在对应的命令内容,那么说明属于新增业务或变更业务。其中,预设数据库中存储有所有的新增业务以及变更业务。
105.当命令调用动作对应的命令内容属于新增业务或变更业务时,说明该命令内容是没有危险性的,那么该对应的命令调用动作就是可以被允许执行的。因此,服务器继续执行上述命令调用动作。并且,将待检测命令特征模板添加至上述预设校验模板库,可以实现建立反馈机制,不断更新白名单模板,适合生产环境。利于保证预设校验模板库的时效性,提高命令注入漏洞的检测效率和准确率。
106.当命令内容不属于新增业务或变更业务时,则服务器拦截该命令调用动作,并停止执行。
107.在一些实施例中,在上述图3对应实施例的基础上,步骤s200还包括:
108.当上述待检测命令特征模板与上述目标校验模板之间的匹配度大于或等于第一预设阈值时,服务器将上述待检测命令特征模板中的字段与上述目标校验模板中的字段进行比对。以及
109.服务器将上述待检测命令特征模板中与上述目标校验模板不相同的字段,标记为
攻击字段,并将攻击字段存储至对应的日志数据中。
110.一般来说,非法访问的命令是对正常访问命令的改造绕过,通过比对,本实施例自动定位攻击(敏感)字段所在位置。该实施例将攻击字段存储至对应的日志数据中,可以方便运维人员知晓该命令调用动作对应的攻击目的,便于实时维护,提高了运维效率。.
111.本技术不仅可以检测命令注入漏洞,还可以定位攻击字段所在位置,进一步方便对攻击的追溯取证和识别。
112.在一些实施例中,在上述实施例的基础上,还包括步骤:
113.服务器依据预设数据库,获取与上述攻击字段对应的防御方案。上述预设数据库中存储有不同攻击字段对应的防御方案。
114.上述服务器执行上述防御方案。
115.这样可以快速确定与该攻击字段对应的防御方案,或者相符合的防御级别的防御方案,避免防御级别偏低导致无法保证网络安全,或者防御级别偏高导致浪费网络系统资源;利于提高网络信息安全性能的同时,系统资源利用最优化。进一步地,在一些实施例中,可以将与上述攻击字段对应的且存在与该客户端的该应用程序关联的防御历史的防御方案,可以进一步提高网络运维效率,以及提高网络信息安全性能。
116.需要说明的是,本技术中公开的上述所有实施例可以进行自由组合,组合后得到的技术方案也在本技术的保护范围之内。
117.如图5所示,本发明一实施例还公开了一种命令注入漏洞检测系统5,该系统包括:
118.历史日志分析模块51,服务器获取应用程序的历史命令日志数据,并自上述历史命令日志数据,提取历史执行命令日志数据或命令关联日志数据。
119.具体而言,服务器接收到客户端的一web应用程序发出的命令后,就获取该应用程序的历史命令日志数据。其中,可以为该应用程序在某一个历史时间段内,比如为最近一个月的历史命令日志数据。然后可以从该历史命令日志数据抽取出脚本执行命令日志和系统执行命令的日志。该系统可以是指服务器对应的系统。系统执行命令可以是服务器对应的系统执行关于上述客户端的命令。上述脚本执行命令日志可以是shell脚本执行命令日志。
120.如果服务器没有记录关于客户端中上述web应用程序的命令执行日志,则监测当前一预设时间段,比如未来一个月的关于客户端的上述web应用程序与服务器之间的流量数据,并记录日志数据,然后从这些系统流量以及日志数据中提取出命令相关的日志。
121.命令校验模板获取模块52,服务器对上述历史执行命令日志数据或上述命令关联日志数据进行处理,获得多个命令校验模板。
122.具体而言,命令校验模板获取模块52将上述历史执行命令日志数据或命令关联日志数据中的预设符号、预设专业名词以及预设高频字段进行保留,将除去被保留的字段以外的其余字段泛化为字符串、数字或者日期时间,获得多个命令校验模板。也即,将历史执行命令日志数据或命令关联日志数据进行泛化处理,获得命令校验模板。其中,可以是根据每一天的日志数据得到一条上述历史执行命令日志数据或上述命令关联日志数据。然后可以根据一条数据得到一个命令校验模板。上述泛化处理的具体实施过程可参考现有技术实现,本实施例不再赘述。
123.校验模板库构建模块53,服务器基于上述多个命令校验模板,构建预设校验模板库。
124.具体实施时,比如可以为:服务器统计各个命令校验模板对应的数量。将数量大于第二预设阈值的上述命令校验模板,添加至预设校验模板库中。当数量大于第二预设阈值时,说明是频繁出现的,是客户端中上述web应用程序在正常情况下的调用,也即可以作为白名单模板,即可以通过用来执行的命令。因此,上述预设校验模板库也即为白名单模板库。
125.待检测命令特征模板获取模块54,当检测到应用程序发生命令调用动作时,服务器暂停执行上述命令调用动作;并对上述命令调用动作对应的命令内容进行处理,获得待检测命令特征模板。
126.具体而言,也即当服务器检测到客户端的应用程序产生命令调用行为,即向服务器发送命令,需要调取数据,那么服务器暂停执行该命令,先判断该命令调用动作是否安全,然后获取到命令内容。类似地,对该命令内容进行泛化处理,获得待检测命令特征模板。类似地,上述泛化处理的具体实施过程可参考现有技术实现,本实施例不再赘述。
127.模板匹配模块55,服务器将上述待检测命令特征模板和上述预设校验模板库进行匹配。
128.具体实施时,该步骤需要将待检测命令特征模板和上述预设校验模板库中各个命令校验模板分别进行匹配。具体可以利用待检测命令特征模板和上述预设校验模板库中各个命令校验模板之间的匹配度,进行它们之间的匹配。
129.其中,上述匹配度的计算可以利用jaccard相似度计算方法或者levenshtein编辑距离计算方法来实现。其中,jaccard相似度,是用于比较有限样本集合的相似性的统计量,定义为两个集合的交集与并集的比例。levenshtein距离,是编辑距离的一种,指两个字符串之间,由一个转换成另一个所需的最少编辑次数。其中编辑操作包括:插入、删除、替换。编辑操作可以有不同权重,这里以等权为例。求解算法通常为动态规划。
130.其中,上述jaccard相似度计算方法或者levenshtein编辑距离计算方法的具体实施过程可参考现有技术实现,本实施例不再赘述。本技术对上述待检测命令特征模板和上述预设校验模板库中各个命令校验模板之间的匹配度的计算也不以此二种计算方法为限。
131.命令继续执行模块56,当上述待检测命令特征模板与上述预设校验模板库中的一命令校验模板匹配成功时,服务器继续执行上述命令调用动作。
132.具体而言,只要待检测命令特征模板能够与上述预设校验模板库中的一命令校验模板匹配成功,那就说明待检测命令特征模板与上述预设校验模板库匹配成功。此时说明上述待检测命令特征模板对应的命令内容是没有危险性的,那么该对应的命令调用动作就是可以被允许执行的。因此,服务器继续执行上述命令调用动作。
133.可选地,在一些实施例中,当上述待检测命令特征模板与上述预设校验模板库中的一命令校验模板相同时,也即待检测命令特征模板与上述预设校验模板库中的一命令校验模板之间的匹配度为100%时,服务器继续执行上述命令调用动作。
134.可以理解的是,本发明的命令注入漏洞检测系统还包括其他支持命令注入漏洞检测系统运行的现有功能模块。图5显示的命令注入漏洞检测系统仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
135.本实施例中的命令注入漏洞检测系统用于实现上述的命令注入漏洞检测的方法,因此对于命令注入漏洞检测系统的具体实施步骤可以参照上述对命令注入漏洞检测的方
法的描述,此处不再赘述。
136.如图6所示,本发明一实施例还公开了一种命令注入漏洞检测系统6,该系统在上述图5对应实施例的基础上,历史日志分析模块51包括:
137.第一判断单元511,服务器获取应用程序的历史命令日志数据,并判断历史命令日志数据是否存在历史执行命令日志数据。
138.若存在,则执行第一提取单元512:提取出上述历史执行命令日志数据。
139.若不存在,则执行第二提取单元513:监测一预设时间段的系统流量数据,自上述系统流量数据提取得到命令关联数据。
140.如图7所示,本发明一实施例还公开了一种命令注入漏洞检测系统7,该系统在上述图5对应实施例的基础上,还包括:
141.第二判断模块57,判断待检测命令特征模板和上述预设校验模板库是否匹配成功。若匹配成功,则执行上述命令继续执行模块56。
142.当上述待检测命令特征模板与上述预设校验模板库中的所有命令校验模板均匹配失败时,则执行目标校验模板获取模块58和命令调用阻止执行模块59。
143.目标校验模板获取模块58,服务器获取上述预设校验模板库中与上述待检测命令特征模板之间的匹配度最大的命令校验模板,作为目标校验模板。
144.命令调用阻止执行模块59,当待检测命令特征模板与目标校验模板之间的匹配度大于或等于第一预设阈值且小于1时,服务器阻止执行上述命令调用动作。
145.具体而言,也即匹配失败时,找出与待检测命令特征模板匹配度最高的命令校验模板,当该最大的匹配度大于等于第一预设阈值,且小于1时,服务器拦截该命令调用动作,并停止执行。
146.示例性地,上述第一预设阈值比如可以为90%。本技术对此不作限制。
147.如图8所示,本发明一实施例还公开了一种命令注入漏洞检测系统8,该系统在上述图7对应实施例的基础上,还包括:
148.第三判断模块60,判断待检测命令特征模板与目标校验模板之间的匹配度是否大于等于第一预设阈值。
149.若大于等于第一预设阈值,则执行上述命令调用阻止执行模块59。
150.若小于第一预设阈值,则执行第二执行模块61:当服务器判定上述命令调用动作对应的命令内容属于新增业务或变更业务时,服务器继续执行上述命令调用动作,并将上述待检测命令特征模板添加至上述预设校验模板库。
151.本发明一实施例还公开了一种命令注入漏洞检测设备,包括处理器和存储器,其中存储器存储有所述处理器的可执行程序;处理器配置为经由执行可执行程序来执行上述命令注入漏洞检测方法中的步骤。图9是本发明公开的命令注入漏洞检测设备的结构示意图。下面参照图9来描述根据本发明的这种实施方式的电子设备600。图9显示的电子设备600仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
152.如图9所示,电子设备600以通用计算设备的形式表现。电子设备600的组件可以包括但不限于:至少一个处理单元610、至少一个存储单元620、连接不同平台组件(包括存储单元620和处理单元610)的总线630、显示单元640等。
153.其中,存储单元存储有程序代码,程序代码可以被处理单元610执行,使得处理单
元610执行本说明书上述命令注入漏洞检测方法部分中描述的根据本发明各种示例性实施方式的步骤。例如,处理单元610可以执行如图1中所示的步骤。
154.存储单元620可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(ram)6201和/或高速缓存存储单元6202,还可以进一步包括只读存储单元(rom)6203。
155.存储单元620还可以包括具有一组(至少一个)程序模块6205的程序/实用工具6204,这样的程序模块6205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
156.总线630可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
157.电子设备600也可以与一个或多个外部设备700(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备600交互的设备通信,和/或与使得该电子设备600能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口650进行。并且,电子设备600还可以通过网络适配器660与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。网络适配器660可以通过总线630与电子设备600的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备600使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储平台等。
158.本发明还公开了一种计算机可读存储介质,用于存储程序,所述程序被执行时实现上述命令注入漏洞检测方法中的步骤。在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在终端设备上运行时,程序代码用于使终端设备执行本说明书上述命令注入漏洞检测方法中描述的根据本发明各种示例性实施方式的步骤。
159.如上所示,该实施例的计算机可读存储介质的程序在执行时,利于提高对系统命令执行语句的检测效率,利于提高命令注入漏洞的检测效率和准确率,保障网络信息安全。
160.本发明一实施例公开了一种计算机可读存储介质。该存储介质是实现上述方法的程序产品,其可以采用便携式紧凑盘只读存储器(cd-rom)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
161.程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。
162.计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、
光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、rf等等,或者上述的任意合适的组合。
163.可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如java、c 等,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
164.本发明实施例提供的命令注入漏洞检测方法、系统、设备及存储介质利于提高对系统命令执行语句的检测效率,利于提高命令注入漏洞的检测效率、检出率和准确率,保障网络信息安全。
165.以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献