一种无回显的远程命令执行漏洞的验证方法与流程

文档序号:12125608阅读:3010来源:国知局

本发明属于信息技术领域,具体涉及一种无回显的远程命令执行漏洞的验证方法。



背景技术:

远程命令执行漏洞是一种常见的高危害级别的漏洞。通过这个漏洞,能够让攻击者在远程服务器上执行指定的命令。如whoami,cat/etc/passwd等。远程命令执行漏洞通常的验证方式是通过执行系统命令,把命令的输出内容回显到页面上来验证命令是否存在。

对于远程命令执行漏洞,传统的验证方法是执行命令输出特定的内容来证明漏洞的存在,然而有些远程命令执行漏洞并不在返回内容中包含命令的输出结果。这种情况下,传统的方法就无法验证了。



技术实现要素:

本发明针对上述问题,提供一种无回显的远程命令执行漏洞的验证方法,能够使用不依赖内容回显但可用程序识别的方法来验证漏洞的存在。

本发明采用的技术方案如下:

一种无回显的远程命令执行漏洞的验证方法,通过特定命令制造时间上的延时,根据对比不同请求的返回时间长短,来识别远程命令执行漏洞的存在。

进一步地,所述特定命令优选为sleep命令。

进一步地,上述方法具体可包括以下步骤:

1)为了避免任意请求本身的时间开销产生的干扰,需要先计算出背景时间开销T0,具体方法是在POC脚本中构造payload,尝试让远程系统执行“sleep 0”命令,发起无延时的请求,记录从发起请求到返回所消耗的时间T0。

2)有了背景时间开销T0,需要计算出一个时间长度,当sleep命令成功时,能与背景时间开销产生显著的区分,便于后续的比较工作。如果T0的值绝对稳定,可以执行sleep大于0的任意时间来产生延迟时间T1,如果T1略大于T0,即存在漏洞。但是实际使用中,T0的值会有测量误差,所以计算时需要加入一定的冗余量来减少误判,本发明使用一个计算公式,T1=(T0+1)*2,当T0很小接近于0时,T1可以有至少2秒的区分,当T0比较大时,T1的值比2倍的T0大2秒,也会有较好的区分度。具体方法是在POC脚本中构造payload,计算T1=(T0+1)*2,试图让远程系统执行“sleep T1”命令,从而发起延时的请求,记录从发起请求到返回所消耗的时间T2,如果存在漏洞,T2的值应该是T1加上本次的背景时间开销,会大于T1,如果不存在漏洞,T2的值应该跟T0处在同一数量级,小于T1。

3)重复骤2)N次,其中N>=1,如果T2的值大于T1,则认为远程系统可能存在命令执行漏洞;如果发现有T2小于等于T1,则远程系统不存在命令执行漏洞。

进一步地,通过增加步骤3)中N的值来降低误报的可能。

进一步地,步骤3)中N的值优选为3到5次。

本发明的有益效果如下:

1)本发明不依赖命令的内容回显,解决了无回显场景下远程命令执行漏洞无法验证的问题;

2)本发明使用的sleep命令是一种非常常见的命令,存在于几乎所有linux/unix操作系统中,包括常见的路由器,机顶盒等设备中,所以应用场景十分广泛。

附图说明

图1是本发明方法的步骤流程图。

具体实施方式

下面通过具体实施例和附图,对本发明做进一步说明。

本发明使用一种不依赖内容回显但可用程序识别的方法来验证漏洞的存在,其核心思想是使用特定命令制造时间上的延时,根据对比不同请求的返回时间长短来识别漏洞的存在。

本发明提供的完整技术方案如图1所示,包括以下步骤:

步骤1,POC(Proof Of Concept,为观点提供证据(证明漏洞存在的程序))脚本中构造payload(载荷,用于在漏洞利用的脚本中传递指定的系统命令),尝试让远程系统执行“sleep 0”命令,发起无延时的请求,记录从发起请求到返回所消耗的时间T0;

步骤2,POC脚本中构造payload,计算一个T1=(T0+1)*2,试图让远程系统执行“sleep T1”命令,发起延时的请求,记录从发起请求到返回所消耗的时间T2。如前文所述,本发明中T1的计算方式不限于上述公式,实际上T1>T0即可。由于数字越大检测越慢,数字越小越容易误报,采用上述计算公式可以平衡两者的矛盾。

步骤3,重复“步骤2”N次(N>=1),如T2的值大于T1,则可认为远程系统可能存在命令执行漏洞。如发现有T2小于等于T1,则远程系统不存在命令执行漏洞。

可能的误报及改进:

由于性能问题或网络延迟,本方法可能会造成误报,通过增加“步骤3”中N的值能够降低误报的可能,实际使用场景建议重复3到5次。

下面提供一个具体实例。本实验可能具有攻击性,为避免不必要的法律纠纷,本例子仅限于本机环境测试使用。

下面有三个文件内容,分别是一个存在命令执行漏洞的样例程序(bad.php),一个修复了漏洞的样例程序(good.php),和一个漏洞利用程序(poc.php):

除上述实施方式外,本方法使用的命令不限于sleep,也可以使用其它能产生延时效果的命令替代,包括但不限于下面所举的这些例子。不同于sleep命令直接传入时间参数,下面的命令需要两个参数配合来得到所需的延时效果,总花费时间≈时间间隔×次数。下面以间隔1秒,执行三次为例:

一、使用ping命令,-W参数控制时间间隔,-c参数控制次数。

例如:ping -W1 -c3 1.1.1.1

二、使用top命令,-d参数控制时间间隔,-n参数控制次数。

例如:top -d1 -n3

三、使用vmstat或iostat命令,第一参数控制时间间隔,第二参数控制次数。

例如:vmstat 1 3或iostat 1 3

四、使用free命令,-s参数控制时间间隔,-c参数控制次数。

例如:free -s 1 -c 3

以上实施例仅用以说明本发明的技术方案而非对其进行限制,本领域的普通技术人员可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明的精神和范围,本发明的保护范围应以权利要求书所述为准。

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