应用程序的漏洞检测方法和装置的制造方法_2

文档序号:9547089阅读:来源:国知局
系统命令。
[0039] 例如,PHP可以通过System函数来执行一个外部的web应用程序并将相应的 执行结果输出,函数原型如下:string system(string command, int&return_var),其中, command是要执行的命令,return_var存放执行命令的执行后的状态值。
[0040] 优选地,在执行上述步骤S20记录应用程序运行过程中的执行命令之前,还可以 执行安装用于记录应用程序运行过程中的执行命令的命令记录系统。
[0041] 由此,本申请上述步骤S20可以通过在作为主机的计算机终端10上安装命令记录 系统,来记录php执行web应用程序的过程中的执行命令,上述命令记录系统可以通过修改 Iinux中对动态库加载优先顺序来截获用户执行的命令,例如:开源项目snoopy logger中 实现的抓取执行命令的方法。
[0042] 此处需要说明的是,上述命令记录系统可以记录主机计算机终端的所有执行命 令,也可以只记录Php执行web应用程序过程中的执行命令。具体选取那种方式可以根据 运营环境的需求决定,只记录Php执行的执行命令,可以减少采集和分析的数据量,减轻系 统运行负载。例如,在记录系统记录Php执行的所有执行命令时,记录的内容和格式如下表 1 :

[0045] 步骤S22,监控执行命令是否包含监控特征。
[0046] 本申请上述步骤S22中的监控特征是指用于表征当前的执行命令是否具有命令 注入风险的参数特征,可以包括如下类型:查看主机密码文件、查看主机配置文件、测试网 络通畅等,例如用户查看主机密码文件(登录访问)时的参数特征:cat/etc/passwd。
[0047] 此处需要说明的是,监控特征可以事先进行制定并保存。例如可以以数据表的形 式进行记录,所有监控特征的集合可以构成一个黑名单命令集合进行保存。
[0048] 步骤S24,在执行命令包含监控特征的情况下,回溯执行命令的父进程是否具有命 令注入漏洞的属性。
[0049] 本申请上述步骤S24中的命令注入漏洞的属性可以是当前执行命令的父进程本 身所包含的一些内容和格式上的特征,其中,特征的类型可以包括:字符值、参数值等,例 如,格式特征可以是命令分隔符,命令分隔符包括:;|&)等,内容特征可以是父进程所包含 的监控特征的数据,监控特征可以是:cat/etc/passwd。
[0050] 步骤S26,如果执行命令的父进程具有命令注入漏洞的属性,则确定执行命令存在 命令注入的漏洞。
[0051] 由于命令注入漏洞的属性也是预先设定的,因此,上述步骤S26确定当前执行命 令是否存在命令注入的漏洞可以根据实际漏洞的变化而进行调整,灵活性较高且保证了准 确性。
[0052] 此处需要说明的是,在应用程序执行命令的过程中,需要接收外部变量作为命令 或参数,在攻击者控制外部变量欺骗当前应用程序执行任意的系统命令时,这种漏洞称之 为命令注入,如果应用程序是PHP,那么称之为PHP命令注入。目前命令注入漏洞多存在于 WEB CGI程序,HTTP协议的各个参数均可能是恶意参数传入源。
[0053] 本申请上述实施例一提供的方案,通过检测当前运行的应用程序的执行命令是否 包括监控特征来确定该执行命令是否具有注入命令漏洞的潜在风险,由于在确定该执行命 令具有注入命令漏洞的潜在风险之后,进一步通过回溯该执行命令的父进程是否具有命令 注入漏洞的属性,从而确认当前执行命令存在命令注入的漏洞,因此,本申请提供了一种对 具有命令注入漏洞风险的执行命令进行进一步的命令注入验证的功能,即对该执行命令已 经具有的属性特征进行验证,从而确定该执行命令的最终性质。由于上述过程可以应用于 应用程序运行过程中的每个执行命令,因此,整个操作遍历到了应用程序中的所有执行命 令,而且每个执行命令所要验证的属性特征都是静态的,从而达到了大幅降低了监测命令 注入攻击的漏报和误报的情况的目的,进而解决了现有技术用于监测命令注入攻击的方法 存在漏报率高、误报率高的技术问题。本方案还可以改善现有的漏洞检测系统开发周期长, 难度大,开发后的运营成本也较高的问题。
[0054] 在本申请提供的一种可选实施例中,上述实施例中的步骤S24实现的回溯执行命 令的父进程是否具有命令注入漏洞的属性,如果执行命令的父进程具有命令注入漏洞的属 性,则确定执行命令存在命令注入的漏洞的步骤可以包括如下实施方案:
[0055] 步骤S241,扫描该包含有监控特征的执行命令的父进程。
[0056] 该步骤S241中的执行命令包含有监控特征,则标识该执行命令具有注入命令漏 洞的风险,从而进入进一步验证其是否存在命令注入的漏洞。
[0057] 步骤S243,判断执行命令的父进程是否具有多命令集合且包含监控特征的属性。
[0058] 上述步骤S243中,多命令集合表征该执行命令的父进程具有至少两条运行命令, 由于多条运行命令之间需要通过分隔符的格式进行划分,因此,可以通过验证该执行命令 的父进程是否命令分隔符(分号等)来确定是否具有多命令集合。
[0059] 另外,上述父进程所包含的监控特征可以与执行命令(即父进程的子进程)所包 含的监控特征相同,例如cat/etc/passwd。
[0060] 步骤S245,如果父进程为多命令集合且包含监控特征,则确定执行命令存在命令 注入的漏洞。
[0061] 由此可知,上述步骤S245的一种示例中,如果监测到上述具有命令注入漏洞风险 的执行命令的父进程中包含命令分隔符(分号等)和cat/etc/passwd,则该执行命令存在 命令注入的漏洞。
[0062] 此处需要说明的是,上述步骤S241至步骤S245实现方案适用于上述命令记录系 统记录php执行命令的场景中。由于在命令记录系统记录php执行命令时,在命令记录系 统中已经对命令做了过滤,只记录Php执行的命令。因此,此处只需要判断当前执行命令的 父进程的属性特征即可。
[0063] 在本申请提供的另外一种可选实施例中,上述实施例中的步骤S24实现的回溯执 行命令的父进程是否具有命令注入漏洞的属性,如果执行命令的父进程具有命令注入漏洞 的属性,则确定执行命令存在命令注入的漏洞的步骤可以包括如下实施方案:
[0064] 步骤S242,扫描执行命令的父进程。该步骤S242中的执行命令包含有监控特征, 用于表示该执行命令具有注入命令漏洞的风险,从而进入进一步验证其是否存在命令注入 的漏洞。
[0065] 步骤S244,判断执行命令的父进程是否具有多命令集合且包含监控特征的属性。
[0066] 上述步骤S244中,多命令集合表征该执行命令的父进程具有至少两条运行命令, 由于多条运行命令之间需要通过分隔符的格式进行划分,因此,可以通过验证该执行命令 的父进程是否命令分隔符(分号等)来确定是否具有多命令集合。
[0067] 另外,上述父进程所包含的监控特征可以与执行命令(即父进程的子进程)所包 含的监控特征相同,例如cat/etc/passwd。
[0068] 步骤S246,如果父进程为多命令集合且包含监控特征,则需要进一步判断执行命 令的父进程的父进程是否为网站应用程序中运行的进程,如果是,则确定执行命令存在命 令注入的漏洞。则确定执行命令存在命令注入的漏洞。
[0069] 在本申请的另一种示例中,上述步骤S246实现的方案中,除了可以监测上述具有 命令注入漏洞风险的执行命令的父进程中包含监控特征(例如命令分隔符(分号等)和 cat/etc/passwd)以外,还需要监测该执行命令的父进程的父进程是否为WEB服务器软件 或Php进程管理器运行的进程,由于WEB服务器软件或php进程管理器都可以表征当前应 用程序网站应用程序,因此,可以采用监测该执行命令的父进程的父进程是否具有WEB服 务器软件或Php进程管理器的特征,如果具有上述任意一种或多种特征则可以确定该执行 命令存在命令注入的漏洞。
[0070] 此处需要说明的是,上述步骤S241至步骤S245实现方案适用于上述命令记录系 统记录所有执行命令的场景中。由于在命令记录系统记录所有执行命令时,命令不一定是 PHP执行的,可能是其他应用程序执行,比如sshd程序,因此,不仅需要判断当前执行命令 的父进程的属性特征,还需要进一步判断当前执行命令的父父进程的属性特征。
[0071] 优选地,在本申请上述各个实施例中,执行步骤S243或步骤S244实现的判断执 行命令的父进程是否具有多命令集合且包含监控特征的属性之前,还可以执行如下方法方 案:
[0072] 步骤S2411,在应用程序为网站应用软件程序的情况下,检测执行命令的父进程是 否包含网站解析命令所固有的头字段,其中,如果父进程包含网站解析命令所固有的头字 段,则执行判断执行命令的父进程是否具有多命令集合且包含监控特征的属性的步骤。
[0073] 此处需要说明的是,本申请上述实施例中的网站解析命令所固有的头字段可以是 字符sh-c,php提供的所有命令执行的接口都是以sh-c这种固定的形式去调用命令,判断 命令开头是否为sh-c是php执行命令的一个必要条件,此处增加次判断可以确保分析的准 确性。即可以采用监测该执行命令的父进程是否以sh-c开头,来确定是否进一步执行判断 执行命令的父进程是否具有多命令集合且包含监控特征的属性的步骤。
[0074] 在本申请上述各个可选的或优选的实施例中,针对监控执行命令是否包含监控特 征的实现模式,提供了两种工作模式:
[0075] 第一种工作模式:主动触发模式。
[0076] 通过主动触发模式实现的监控执行命令是否包含监控特征的步骤S22,可以包括 如下实施方案:
[0077] 步骤S221a,触发漏洞扫描器扫描应用程序运行过程中记录的执行命令,获取扫描 执行命令过程中得到的扫描特征。
[0078] 步骤S223a,读取黑名单命令集合,黑名单命令集合为预先保存的包含有监控特征 的命令。
[0079] 步骤S225a,将漏洞扫描器扫描到的扫描特征与黑名单命令集合中的监控特征进 行匹配处理,其中,如果漏洞扫描器扫描到的扫描特征与黑名单命令集合中的监控特征匹 配成功,则确定执行命令包含监控特征。
[0080] 本申请上述步骤S221a至步骤S225a实现了一种主动触发漏洞扫描器对应用程序 运行过程中的执行命令进行监控的方案。在应用程序为网站web应用程序的情况下,可以 利用开源扫描器或者自研扫描器扫描网站,扫描结果可以只保留一个扫描特征,比如cat/ etc/passwd,即扫描器只需要发出扫描命令,如果扫描到当前执行命令的扫描特征即可,无 需接收扫描器的返回包而进行现有技术对扫描结果进行匹配判断确定是否存在漏洞的过 程。在获取到执行命令所包含的扫描特征之后,将扫描特征与黑名单命令集合中的监控特 征进行匹配,如果匹配
当前第2页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1