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

文档序号:22043329发布日期:2020-08-28 18:24阅读:246来源:国知局
系统命令注入漏洞检测方法和装置、设备及存储介质与流程

本公开涉及计算机安全领域,尤其涉及一种系统命令注入漏洞检测方法和装置、设备及存储介质。



背景技术:

系统命令为了方便应用程序的使用者处理相关应用场景的功能,各种常见的语言都提供了命令执行相关类函数,同时调用的变量未考虑安全因素,就会执行恶意的命令调用,被攻击利用。应用中,因为是由程序拼凑命令行(包括参数)来实现调用外部程序的,因此用户也能够通过小计量来突破限制,实现调用其他外部程序。系统命令注入即能够在服务器上执行任意命令,利用系统命令注入漏洞可以根据远程攻击者的指令执行命令来对系统进行远程控制。

现有技术中,系统命令注入检测是常见的漏洞检测方式之一,按照判断漏洞的方法,系统命令注入漏洞检测方法包括基于页面响应有回显的系统命令注入检测,基于时间盲注的系统命令注入漏洞检测。

基于页面响应有回显的系统命令注入漏洞检测通过构造带有合适payload的请求包使当前应用程序输出特定的字符串,根据判断这个预定于的字符串来判断漏洞是否存在。当应用程序执行了系统命令不改变页面回显时,根据前面的检测方法将会判断系统命令注入漏洞不存在,导致系统命令注入漏洞的漏报。

基于时间盲注的系统命令注入漏洞检测通过构造带有合适payload的请求包使当前应用程序响应时间发生改变,通过多次请求来判断页面响应耗时与带有预定于的payload请求包是否匹配来判断是否存在系统命令注入漏洞。基于时间盲注的系统命令注入漏洞检测可以不依赖响应内容来检测无回显的情况下发生的漏洞。但在实际过程中,由于网络波动造成的网络延迟将不可避免,导致采用基于时间盲注的系统命令注入漏洞检测方法也比较容易产生误报,另一方面在检测耗时上也比较多,检测效率不高。



技术实现要素:

有鉴于此,本公开提出了一种系统命令注入漏洞检测方法,用于检测目标操作系统中的漏洞,包括:

构造payload;其中,所述payload包含特定字符串;

将所述payload插入到http请求中并记录所述payload和http请求参数;

将所述http请求发送给所述目标操作系统,由使所述目标操作系统执行所述payload进行dns查询;

从自建dns服务器中获取dns查询记录,若所述dns查询记录中包括所述特定字符串,依据所述http请求参数确定漏洞位置;

其中,所述dns查询记录包含所述目标操作系统进行dns查询时得到的信息。

在一种可能的实现方式中,所述构造payload包括:

随机生成一组所述特定字符串;

将所述特定字符串与预设域名进行拼接得到域名串;

将所述域名串填充到命令中得到所述payload。

在一种可能的实现方式中,将所述payload插入到http请求中并记录所述payload和http请求参数包括:

将所述payload插入到所述http请求中对应的参数中;

记录所述特定字符串和所述http请求参数;

将所述特定字符串和所述http请求参数存储到本地数据库中。

在一种可能的实现方式中,从自建dns服务器获取dns查询记录,若所述dns查询记录中包括所述特定字符串,依据所述http请求参数确定漏洞位置包括:

获取所述自建dns服务器的dns查询记录;

提取所述dns查询记录中的域名;

若所述域名中的子字符串与所述特定字符串相同,则依据所述http请求参数确定漏洞位置。

在一种可能的实现方式中,若所述dns服务器中不存在dns查询记录,则不存在漏洞。

在一种可能的实现方式中,所述命令依据所述目标操作系统的种类设定。

根据本公开的另一方面,提供了一种系统命令漏洞检测装置,其特征在于,包括payload构造模块、payload插入模块、http请求发送模块和漏洞位置确定模块;

所述payload构造模块,被配置为构造payload;其中,所述payload包含特定字符串;

所述payload插入模块,被配置为将所述payload插入到http请求中并记录所述payload和http请求参数;

所述http请求发送模块,被配置为将所述http请求发送给目标操作系统,由使所述目标操作系统执行所述payload进行dns查询;

所述漏洞位置确定模块,被配置为从自建dns服务器中获取dns查询记录,若所述dns查询记录中包括所述特定字符串,依据所述http请求参数确定漏洞位置;

其中,所述dns查询记录包含所述目标操作系统进行dns查询时得到的信息。

在一种可能的实现方式中,所述payload构造模块包括字符串生成单元、字符串拼接单元和域名串填充单元;

所述字符串生成单元,被配置为随机生成一组所述特定字符串;

所述字符串拼接单元,被配置为将所述特定字符串与预设域名进行拼接得到域名串;

所述域名串填充单元,被配置为将所述域名串填充到命令中得到所述payload。

根据本公开的另一方面,提供了一种系统命令漏洞检测设备,其特征在于,包括:

处理器;

用于存储处理器可执行指令的存储器;

其中,所述处理器被配置为执行所述可执行指令时实现前面任一所述的方法。

根据本公开的另一方面,提供了一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现前面任一所述的方法。

通过构造payload,其中,payload包含特定字符串,将payload插入到http请求中并记录payload和http请求参数,将http请求发送给目标操作系统,由使目标操作系统执行payload进行dns查询,从自建dns服务器中获取dns查询记录,若dns查询记录中包括特定字符串,依据http请求参数确定漏洞位置,其中,dns查询记录包含目标操作系统进行dns查询时得到的信息。通过基于dns通道的系统命令注入漏洞检测能够对系统命令注入漏洞进行快速检测,对目标应用程序不要求是否有回显,适用的目标更加广泛,且能够快速对漏洞进行检测减少了漏洞检测时间,提高了扫描效率,并且正确性上有稳步提高,减少了误报率和漏报率。

根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。

附图说明

包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。

图1示出本公开实施例的系统命令注入漏洞检测方法的流程图;

图2示出本公开实施例的系统命令注入漏洞检测方法的另一流程图;

图3示出本公开实施例的系统命令注入漏洞检测装置的框图;

图4示出本公开实施例的系统命令注入漏洞检测设备的框图。

具体实施方式

以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。

在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。

另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。

图1示出根据本公开一实施例的系统命令注入漏洞检测方法的流程图。如图1所示,该系统命令注入漏洞检测方法包括:

步骤s100,构造payload,其中,payload包含特定字符串,步骤s200,将payload插入到http请求中并记录payload和http请求参数,步骤s300,将http请求发送给目标操作系统系统,由使目标操作系统系统执行payload进行dns查询,步骤s400,从自建dns服务器中获取dns查询记录,若dns查询记录中包括特定字符串,依据http请求参数确定漏洞位置,其中,dns查询记录包含目标操作系统系统进行dns查询时得到的信息。

通过构造payload,其中,payload包含特定字符串,将payload插入到http请求中并记录payload和http请求参数,将http请求发送给目标操作系统,由使目标操作系统执行payload进行dns查询,从自建dns服务器中获取dns查询记录,若dns查询记录中包括特定字符串,依据http请求参数确定漏洞位置,其中,dns查询记录包含目标操作系统进行dns查询时得到的信息。通过基于dns通道的系统命令注入漏洞检测能够对系统命令注入漏洞进行快速检测,对目标应用程序不要求是否有回显,适用的目标更加广泛,且能够快速对漏洞进行检测减少了漏洞检测时间,提高了扫描效率,并且正确性上有稳步提高,减少了误报率和漏报率。

在执行本公开的系统命令注入漏洞检测方法的各个步骤之前,还要进行部署dns服务器,即自建dns服务器,其中,自建dns服务器可以设置特定的域名,当自建dns服务器接收到特定的域名的查询请求时,则进行记录并将记录保存,生成dns查询记录。

具体的,参见图1,首先执行步骤s100,构造payload,其中,payload包含特定字符串。

在一种可能的实现方式中,首先进行构造payload(有效负载),其中,构造payload包括:随机生成一组特定字符串,将特定字符串与预设域名进行拼接得到域名串,将域名串填充到命令中得到payload。举例来说,首先随机生成一组特定字符串:“fajfadfladf”,将这个子串和域名“example.com”拼接在一起,即得到“fajfadfladf.example.com”的域名串,接着将域名串填充到对应的系统命令中去,其中,需要说明的是,命令依据目标操作系统的种类设定,若目标操作系统为linux操作系统,则将“&ping-nc3[dns]”语句中的“[dns]”替换成包含域名串的命令,如将“fajfadfladf.example.com”填充到该命令中去,得到“&ping-nc3fajfadfladf.example.com”,即得到了payload。

在另一种可能的实现方式中,如果目标操作系统为windows操作系统,则将命令“-ping[dns]”语句中的“[dns]”替换成包含域名串的命令,如将“fajfadfladf.example.com”填充到该命令中去,得到“-pingfajfadfladf.example.com”,即得到了payload。

需要说明的是,本公开的方法对目标操作系统的种类不进行限制,对于其他操作系统,将域名串填入对应的命令的位置即可。

进一步的,参见图1,执行步骤s200,将payload插入到http请求中并记录payload和http请求参数。

在一种可能的实现方式中,在构造完成payload后,将payload插入到http请求中并记录payload和http请求参数,其中该步骤还包括:将payload插入到http请求中对应的参数中,接着记录特定字符串和http请求参数,最后将特定字符串和http请求参数存储到本地数据库中,http请求参数包括get:向web服务器请求一个文件,post:向web服务器发送数据让web服务器进行处理,put:向web服务器发送数据并存储在web服务器内部,head:检查一个对象是否存在,delete:从web服务器上删除一个文件,connect:对通道提供支持,trace:跟踪到服务器的路径,options:查询web服务器的性能,举例来说,目标操作系统为linux操作系统,则将“&ping-nc3[dns]”语句中的“[dns]”替换成包含域名串的命令,如将“fajfadfladf.example.com”填充到该命令中去,得到“&ping-nc3fajfadfladf.example.com”,即得到了payload,再将该命令填充到http请求中的get参数中,对应的语句为:get/127.0.0.1/commandinjection/injection2.php?c=test"%26ping%20-nc%203%20"fajfadfladf.example.com,接着将特定字符串“fajfadfladf”记录下来,同时,将http请求参数中的get参数:/127.0.0.1/commandinjection/injection2.php?c=test"%26ping%20-nc%203%20"fajfadfladf.example.com进行记录,并将特定字符串和http请求参数保存到本地的数据库中。

进一步的,参见图1,执行步骤s300,将http请求发送给目标操作系统系统,由使目标操作系统系统执行payload进行dns查询。

在一种可能的实现方式中,目标操作系统为linux操作系统,则将“&ping-nc3[dns]”语句中的“[dns]”替换成包含域名串的命令,如将“fajfadfladf.example.com”填充到该命令中去,得到“&ping-nc3fajfadfladf.example.com”,即得到了payload,再将该命令填充到http请求中的get参数中,对应的语句为:get/127.0.0.1/commandinjection/injection2.php?c=test"%26ping%20-nc%203%20"fajfadfladf.example.com,目标操作系统接收到该http请求时,参见图2,若存在漏洞,则执行步骤s001,在目标操作系统的中执行其中的命令,接着执行步骤s002,目标操作系统作为dns查询客户机通过自建服务器进行查询,则目标操作系统会对进行查询的信息进行记录得到dns查询记录,其中,dns查询记录包括特定字符串。

需要说明的是,参见图2,若步骤s001中未执行对应命令(检测代码),如果不存在漏洞,则不会执行对应的命令。

进一步的,参见图1,执行步骤s400,从自建dns服务器获取dns查询记录,若dns查询记录中包括特定字符串,依据http请求参数确定漏洞位置。

在一种可能的实现方式中,若自建服务器中存在dns查询记录,则从自建dns服务器获取dns查询记录,若dns查询记录中包括特定字符串,则依据http请求参数确定漏洞位置,具体的,首先获取自建dns服务器的dns查询记录,提取dns查询记录中的域名,若域名中的子字符串与特定字符串相同,则请求参数为漏洞位置,举例来说,若dns查询记录中包括字符串“fajfadfladf”,在本地数据库中的特定字符串也同样为“fajfadfladf”,则可以确定到对应的http请求参数,若对应的请求参数为:/127.0.0.1/commandinjection/injection2.php?c=test"%26ping%20-nc%203%20"fajfadfladf.example.com,则提取出路径信息:/127.0.0.1/commandinjection/injection2.php?,则可以确定漏洞的位置,参见图2,并执行步骤s500,输出漏洞的信息。

另外的,如果在自建dns服务器中没有获取到dns查询记录,则表征不存在漏洞。

需要说明的是,尽管以上述各个步骤作为示例介绍了系统命令注入漏洞检测方法如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定系统命令注入漏洞检测方法,只要达到所需功能即可。

这样,通过构造payload,其中,payload包含特定字符串,将payload插入到http请求中并记录payload和http请求参数,将http请求发送给目标操作系统,由使目标操作系统执行payload进行dns查询,从自建dns服务器中获取dns查询记录,若dns查询记录中包括特定字符串,依据http请求参数确定漏洞位置,其中,dns查询记录包含目标操作系统进行dns查询时得到的信息。通过基于dns通道的系统命令注入漏洞检测能够对系统命令注入漏洞进行快速检测,对目标应用程序不要求是否有回显,适用的目标更加广泛,且能够快速对漏洞进行检测减少了漏洞检测时间,提高了扫描效率,并且正确性上有稳步提高,减少了误报率和漏报率。

进一步的,根据本公开的另一方面,还提供了一种系统命令注入漏洞检测装置100。由于本公开实施例的系统命令注入漏洞检测装置100的工作原理与本公开实施例的系统命令注入漏洞检测方法的原理相同或相似,因此重复之处不再赘述。参见图3,本公开实施例的系统命令注入漏洞检测装置100包括payload构造模块、payload插入模块、http请求发送模块和漏洞位置确定模块。

payload构造模块110,被配置为构造payload;其中,payload包含特定字符串;

payload插入模块120,被配置为将payload插入到http请求中并记录payload和http请求参数;

http请求发送模块130,被配置为将http请求发送给目标操作系统系统,由使目标操作系统系统执行payload进行dns查询;

漏洞位置确定模块140,被配置为从自建dns服务器中获取dns查询记录,若dns查询记录中包括特定字符串,依据http请求参数确定漏洞位置;

其中,dns查询记录包含目标操作系统系统进行dns查询时得到的信息。

进一步的,在一种可能的实现方式中,payload构造模块还包括字符串生成单元、字符串拼接单元和域名串填充单元。

字符串生成单元,被配置为随机生成一组特定字符串;

字符串拼接单元,被配置为将特定字符串与预设域名进行拼接得到域名串;

域名串填充单元,被配置为将域名串填充到命令中得到payload。

更进一步地,根据本公开的另一方面,还提供了一种系统命令注入漏洞检测设备200。参阅图4,本公开实施例系统命令注入漏洞检测设备200包括处理器210以及用于存储处理器210可执行指令的存储器220。其中,处理器210被配置为执行可执行指令时实现前面任一所述的系统命令注入漏洞检测方法。

此处,应当指出的是,处理器210的个数可以为一个或多个。同时,在本公开实施例的系统命令注入漏洞检测设备200中,还可以包括输入装置230和输出装置240。其中,处理器210、存储器220、输入装置230和输出装置240之间可以通过总线连接,也可以通过其他方式连接,此处不进行具体限定。

存储器220作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序和各种模块,如:本公开实施例的系统命令注入漏洞检测方法所对应的程序或模块。处理器210通过运行存储在存储器220中的软件程序或模块,从而执行系统命令注入漏洞检测设备200的各种功能应用及数据处理。

输入装置230可用于接收输入的数字或信号。其中,信号可以为产生与设备/终端/服务器的用户设置以及功能控制有关的键信号。输出装置240可以包括显示屏等显示设备。

根据本公开的另一方面,还提供了一种非易失性计算机可读存储介质,其上存储有计算机程序指令,计算机程序指令被处理器210执行时实现前面任一所述的系统命令注入漏洞检测方法。

以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1