用于web应用的动态检测漏洞攻击的方法及系统与流程

专利2022-06-29  71


本发明涉及web应用的漏掉检测技术领域,尤其涉及一种用于web应用的动态检测漏洞攻击的方法及系统。



背景技术:

随着网络技术的发展,web应用的数据也有着快速的增长,同时应用的接口数量也越来越多,为了保证应用程序正常运行,不仅需要产品在上线前对其有着充分的测试,在产品上线运行过程中也要实施进行漏洞检测,动态防御实时的漏洞攻击。但是目前实时防御安全漏洞攻击的方法存在以下问题:

1、基于漏洞攻击的执行函数进行检测,无法准确的判断威胁数据来自于请求数据还是应用程序的本身数据,容易产生误报;

2、基于漏洞攻击的完整流程函数进行检测,消耗性能与存储空间。

因此,有必要对现有的web应用防御安全漏洞攻击的方法进行改进。



技术实现要素:

本发明的目的是为解决上述技术问题的不足而提供一种用于web应用的动态检测漏洞攻击的方法,既保证了对漏洞检测的准确性,降低误报几率,又不会过多消耗服务器的性能和存储空间。

本发明的另一目的是公开一种用于web应用的动态检测漏洞攻击的系统,既保证了对漏洞检测的准确性,降低误报几率,又不会过多消耗服务器的性能和存储空间。

为了实现上述目的,本发明公开了一种用于web应用的动态检测漏洞攻击的方法,其包括:

通过插桩工具插桩待检测web应用程序代码中的输入函数、变异函数和执行函数,

所述输入函数为所述web应用在输入阶段接收消息的关键函数,

所述执行函数为所述web应用在执行阶段执行关键动作的关键函数,

所述变异函数为所述web应用在传播阶段将接收到的参数对象转换为其他不同的对象类型进行表达的传播函数;

通过插桩工具跟踪并获取请求数据在web应用中的整个执行过程的数据流;

提取当前所述执行函数的执行参数,判断所述执行参数中是否存在漏洞攻击代码,如果是,

判断当前请求数据对应的数据流是否经过所述输入阶段,如果是,则对所述执行函数的执行流程进行拦截处理,并可视化展示出所述数据流经过所述变异函数的过程。

与现有技术相比,本发明用于web应用的动态检测漏洞攻击的方法,当检测到执行函数的执行参数中存在漏洞攻击代码时,并不直接将其判断为漏洞,还要根据请求数据的数据流判断该执行参数是否经过输入阶段和传播阶段,如果是,得出当前执行参数存在攻击漏洞的结论,并进行相应的拦截处理,由此可知,通过上述判断过程,可过滤掉由于系统内置参数(如定时器任务等)造成的干扰,降低误判几率;另外,在上述判断过程中,虽然需要对请求数据的整个执行过程的数据流进行跟踪,但是在传播阶段仅仅跟踪变异函数,而对其它传播函数不进行跟踪,即对请求数据进行有选择性的精准跟踪,从而提高服务器的检测性能,降低了漏洞攻击检测工作对web应用服务器的存储空间的需求;再者,通过对数据流经过变异函数的过程的可视化展示,可帮助开发人员更清晰的了解攻击过程在web应用中的传播走向,以便即时添加修复补丁。

较佳地,当判断出所述执行参数中存在漏洞攻击代码时,进一步判断所述执行参数是否来源于传播阶段,如果否,则定义本次漏洞攻击为误触发。

较佳地,所述变异函数包括属于开发框架所具有的常规变异函数和用户自定义的自定义变异函数,所述自定义变异函数的获取方法包括:

通过iast测试平台运行所述web应用的攻击测试实例,以对所述web应用进行漏洞攻击测试,并通过插桩方式跟踪请求数据从输入阶段到传播阶段,再到执行阶段的整个过程的函数流;

当发现攻击漏洞时,如果请求数据的参数类型发生变化,且如果通过所述常规变异函数不能得到请求数据在传播阶段的完整的操作过程,通过执行阶段的关键函数的参数对象逆向推演到请求数据对象,从而推导出导致所述请求数据对象发生变异的变异函数,即为自定义变异函数,然后以所述web应用为键值对的关键字,以推演出的所述自定义变异函数为键值对的值构成键值对存储在数据库中,以供插桩工具调用。

较佳地,还包括对得到的所述自定义变异函数进行优化的方法:

得到所述自定义变异函数后,取消所述iast测试平台对所述传播阶段的除所述变异函数外的其他传播函数的跟踪;

对所述攻击测试实例进行请求重发,检测攻击测试实例中的所有攻击漏洞是否被检出,如果否,取未被检出攻击漏洞的带有漏洞攻击代码的请求实例所对应的原始函数流进行二次分析,以找到遗漏的自定义变异函数。

本发明还公开一种用于web应用的动态检测漏洞攻击的系统,其包括插桩模块、数据流跟踪模块、第一判断判断模块、第二判断模块、处理模块和展示模块;

所述插桩模块,用于通过插桩工具插桩待检测web应用程序代码中的输入函数、变异函数和执行函数;

所述输入函数为所述web应用在输入阶段接收消息的关键函数;

所述执行函数为所述web应用在执行阶段执行关键动作的的关键函数;

所述变异函数为所述web应用在传播阶段将接收到的参数对象转换为其他不同的对象类型进行表达的传播函数;

所述数据流跟踪模块,用于通过所述插桩模块跟踪并获取请求数据在web应用中的整个执行过程的数据流;

所述第一判断模块,用于判断执行函数的执行参数中是否存在漏洞攻击代码;

所述第二判断模块,用于判断存在漏洞攻击代码的请求数据的数据流是否经过所述输入阶段;

所述处理模块,用于根据所述第一判断模块和所述第二判断模块的输出结果,对攻击漏洞进行拦截处理;

所述展示模块,用于根据所述第一判断模块和所述第二判断模块的输出结果,可视化展示出具有攻击漏洞的请求数据对应的数据流经过所述变异函数的过程。

较佳地,还包括第三判断模块,所述第三判断模块用于根据所述第二判断模块的输出结果进一步判断所述执行阶段的执行参数是否来源于于传播阶段,以定义本次漏洞攻击是否为误触发。

较佳地,所述变异函数包括属于开发框架所具有的常规变异函数和用户自定义的自定义变异函数,所述系统还包括自定义变异函数获取模块,所述自定义变异函数获取模块包括功能测试模块、第四判断模块、第五判断模块、推导模块和存储模块;

所述功能测试模块,用于通过iast测试平台运行所述web应用的攻击测试实例,以对所述web应用进行漏洞攻击测试,并通过插桩方式跟踪请求数据从输入阶段到传播阶段,再到执行阶段的整个过程的函数流;

所述第四判断模块,用于根据功能测试模块的输出,判断带有攻击漏洞的请求数据的参数类型是否发生变化;

所述第五判断模块,用于根据所述第四判断模块的输出,判断通过所述常规变异函数是否可得到请求数据在传播阶段的完整的操作过程;

所述推导模块,用于根据所述第五判断模块的输出,通过执行阶段的关键函数的参数对象逆向推演到请求数据对象,从而推导出导致所述请求数据对象发生变异的变异函数,即为自定义变异函数;

所述存储模块,用于以所述web应用为键值对的关键字、以推演出的所述自定义变异函数为键值对的值构成键值对将所述自定义变异函数存储在数据库中。

较佳地,还包括用于对得到的所述自定义变异函数进行优化的优化模块,所述优化模块包括插桩修改模块、请求重发模块、检测模块和分析模块;

所述插桩修改模块,用于修改对传播阶段中的函数的插桩,以取消所述iast测试平台对所述传播阶段的除所述变异函数外的其他传播函数的跟踪;

所述请求重发模块,用于将攻击测试实例进行请求重发;

所述检测模块,用于在请求重发后检测攻击测试实例中的所有攻击漏洞是否被检出;

所述分析模块,用于根据所述检测模块的输出,取未被检出攻击漏洞的带有漏洞攻击代码的请求实例所对应的原始函数流进行二次分析,以找到遗漏的自定义变异函数。

本发明还公开一种用于web应用的动态检测漏洞攻击的系统,其包括:

一个或多个处理器;

存储器;

以及一个或多个程序,其中一个或多个程序被存储在所述存储器中,并且被配置成由所述一个或多个处理器执行,所述程序包括用于执行如上所述的用于web应用的动态检测漏洞攻击的方法的指令。

本发明还公开一种计算机可读存储介质,其包括测试用计算机程序,所述计算机程序可被处理器执行以完成如上所述用于web应用的动态检测漏洞攻击的方法。

附图说明

图1为本发明实施例用于web应用的动态检测漏洞攻击的方法执行流程示意图。

图2为本发明实施例中自定义变异函数的获取方法执行流程示意图。

图3为本发明实施例中对图2中的获取方法进行优化的执行流程示意图。

图4为本发明实施例用于web应用的动态检测漏洞攻击的系统的原理结构示意图。

图5为本发明实施例中自定义变异函数获取模块的原理结构示意图。

具体实施方式

为详细说明本发明的技术内容、构造特征、所实现目的及效果,以下结合实施方式并配合附图详予说明。

本发明公开了一种用于web应用的动态检测漏洞攻击的方法,为便于说明其工作原理,首先对web应用执行流程及其中涉及到的函数作以简单说明。web应用执行过程,大致分为输入阶段、传播阶段和执行阶段。输入阶段,其通过一个输入函数来接收用户输入的请求数据。传播阶段,具有若干(一般为10-100个)用于对请求数据中的字符串或类对象进行编辑或处理的传播函数。执行阶段,通过一个执行关键动作的执行函数来获取执行参数,如与数据库进行交互、与操作系统进行交互等。现有技术中,对数据流的跟踪,也就是对输入函数、执行函数和所有的传播函数的函数流的跟踪。本发明实施例中即是对传播函数进行分析,以对传播函数进行过滤,实现对传播函数的可选择性的精准跟踪,基于的原理是:

传播函数中包括一些(一般所在比例不大)变异函数,所谓变异函数即是将接收到的参数对象转换为其他不同的对象类型进行表达的传播函数,比如一个请求数据以字符串的形式被应用程序接受,然后在应用程序中可能会以不同形式的对象来表示,这就需要用到变异函数。在检测攻击漏洞时,如果请求数据在代码执行过程中没有被转为其他对象,也就是说没有经过变异函数,那么执行函数的执行参数会与请求数据存在一定的相关性,此时无需跟踪其传播阶段,也可以保证漏洞检测的准确性,下面举例说明。

1、对于某登录请求,客户端发送请求数据为username=zhangsan'or'1'='1

&password=lisi,服务端在执行数据库查询时执行select*fromuserwhereusername='zhangsan'or'1'='1'andpassword='lisi',在确认该位置存在sql注入攻击时(or1=1恒为真,即使后面密码不对也会返回认证成功),可以看出执行查询的sql语句与请求数据存在相关性。

2、对于某查询请求,客户端发送请求数据为filename=attack.xml,服务端获取到字符串对象attack.xml后,通过变异函数将其转为文件对象newfile(“attack.xml”),然后执行该文件对象中的内容,文件对象中包含了一条恶意执行语句rm-rf/*,在确认该位置存在漏洞攻击时,可以看出因为经过传播阶段的变异函数,执行函数的执行参数与请求数据没有存在相关性。

综上,可以得出,如果请求数据没有经过变异函数,则无需对其传播阶段的所有函数进行跟踪也可以保证漏洞攻击检测的准确性,同时通过对传播阶段中的变异函数的选择性跟踪,对于经过变异函数的请求数据,也能保证漏洞攻击检测的准确性。因此,如图1,本发明用于web应用的动态检测漏洞攻击的方法具体如下:

通过插桩工具插桩待检测web应用程序代码中的输入函数、变异函数和执行函数,

输入函数为web应用在输入阶段接收消息的关键函数,

执行函数为web应用在执行阶段执行关键动作的的关键函数,

变异函数为web应用在传播阶段将接收到的参数对象转换为其他不同的对象类型进行表达的传播函数;

通过插桩工具跟踪并获取请求数据在web应用中的整个执行过程的数据流;

提取当前执行函数的执行参数,判断执行参数中是否存在漏洞攻击代码,如果否,直接返回,如果是,

判断当前请求数据对应的数据流是否经过输入阶段,如果是,则对执行函数的执行流程进行拦截处理,上报该漏洞攻击信息,并可视化展示出数据流经过变异函数的过程,如果否,直接返回。本实施例中,如果与当前请求数据对应的数据流过程经过输入阶段,通过判断输入阶段的请求数据的位置跟执行阶段的执行参数位置是否一致来判断相关性,以此过滤内置参数的干扰。另外,当通过数据流判断出执行参数中存在漏洞攻击代码时,还可进一步判断执行阶段的执行参数是否来源于于传播阶段,如果否,则定义本次漏洞攻击为误触发,从而过滤掉一些不明原因的假的漏洞攻击。

在上述实施例中,当检测到执行函数的执行参数中存在漏洞攻击代码时,并不直接将其判断为漏洞,还要根据请求数据的数据流判断该执行参数是否经过输入阶段和传播阶段,如果是,得出当前执行参数存在攻击漏洞的结论,并进行相应的拦截处理,由此可知,通过上述判断过程,可过滤掉由于系统内置参数(如定时器任务等)造成的干扰,降低误判几率,另外,在上述判断过程中,虽然需要对请求数据的整个执行过程的数据流进行跟踪,但是在传播阶段仅仅跟踪变异函数,而对其他传播函数不进行跟踪,即对请求数据进行有选择性的精准跟踪,从而提高服务器的检测性能,降低了漏洞攻击检测工作对web应用服务器的存储空间的需求;再者,通过对数据流经过变异函数的过程的可视化展示,可帮助开发人员更清晰的了解攻击过程在web应用中的传播走向,以便即时添加修复补丁。

对于上述实施例中的变异函数,其包括属于开发框架所具有的常规变异函数和用户自定义的自定义变异函数。对于存在数据库中的常规变异函数,可以直接对其进行插桩,但是对于自定义变异函数,由于开发过程中并没有对其进行相应的声明,因此,在使用本发明的方法对上线运行的web应用进行漏洞检测前,需要将自定义变异函数找出并对其进行保存,以供插桩使用。如图2,本实施例中公开了一种自定义变异函数的获取方法:

对web应用进行功能测试,即通过iast测试平台运行web应用的攻击测试实例,以对web应用进行漏洞攻击测试,并通过插桩方式跟踪请求数据从输入阶段到传播阶段,再到执行阶段的整个过程的函数流;

在测试过程中,当发现攻击漏洞时,如果请求数据的参数类型发生变化,首先,通过常规变异函数查询当前请求数据在传播阶段的完整的操作流程,如果通过常规变异函数不能得到请求数据在传播阶段的完整的操作过程,通过执行阶段的关键函数的参数对象逆向推演到请求数据对象,从而推导出导致请求数据对象发生变异的变异函数,即为自定义变异函数,然后以web应用为键值对的关键字(key),以推演出的自定义变异函数为键值对的值(value)构成键值对,存储在数据库中的常规变异函数集合中,以供插桩工具调用。例如,通过输入函数得到的请求数据为strings=request.getparameter(“name”),在传播阶段中,该请求数据经过五个传播函数,s.replace(“.exe”,“”),s.touppercase(),strings2=httputils.geturl(s),s2.sublentgth(255),filefile=newfile(s2),执行阶段中sql注入(注入攻击)的参数来自于file对象,因为file对象无法直接关联到请求数据s对象,而是关联到s2对象,所以可以得到httputils.geturl为未知的变异函数,此时该请求数据对应的传播阶段的自定义变异函数为strings2=httputils.geturl(s),newfile(s2)为常规变异函数。

进一步地,当通过功能测试的方法得到自定义变异函数后,还可对其进行进一步的优化,如图3,优化方法为:

得到自定义变异函数后,取消iast测试平台对传播阶段的除变异函数外的其他传播函数的跟踪,即在传播阶段,仅插桩变异函数,该变异函数包括常规变异函数和通过功能测试得到的自定义变异函数;

然后,对攻击测试实例进行请求重发,判断攻击测试实例中的所有攻击漏洞是否被检出,如果否,取未被检出攻击漏洞的带有漏洞攻击代码的请求实例所对应的原始函数流进行二次分析,以找到遗漏的自定义变异函数,然后将该自定义变异函数归入变异函数的集合中;如果是,则结束对自定义变异函数的优化。

重复上述流程,直到通过插桩变异函数可以跟踪到所有的带有漏洞攻击代码的请求实例。

综上,本发明公开的用于web应用的动态检测漏洞攻击的方法,既可准确地判断威胁数据来自于请求数据还是应用程序的本身数据,避免产生误报,还可对漏洞攻击的完整函数流进行检测,而且有效降低了对服务器的性能和存储空间的消耗。

本发明还公开一种用于web应用的动态检测漏洞攻击的系统,如图4,其包括插桩模块、数据流跟踪模块、第一判断判断模块、第二判断模块、处理模块和展示模块;插桩模块用于通过插桩工具插桩待检测web应用程序代码中的输入函数、变异函数和执行函数;数据流跟踪模块用于通过插桩模块跟踪并获取请求数据在web应用中的整个执行过程的数据流;第一判断模块用于判断执行函数的执行参数中是否存在漏洞攻击代码;第二判断模块用于判断存在漏洞攻击代码的请求数据的数据流是否经过输入阶段;处理模块用于根据第一判断模块和第二判断模块的输出结果,对攻击漏洞进行拦截处理;展示模块用于根据第一判断模块和第二判断模块的输出结果,可视化展示出具有攻击漏洞的请求数据对应的数据流经过变异函数的过程。较佳地,该系统还包括第三判断模块,第三判断模块用于根据第二判断模块的输出结果进一步判断执行阶段的执行参数是否来源于于传播阶段,以定义本次漏洞攻击是否为误触发。

进一步地,变异函数包括属于开发框架所具有的常规变异函数和用户自定义的自定义变异函数,该系统还包括自定义变异函数获取模块,如图5,自定义变异函数获取模块包括功能测试模块、第四判断模块、第五判断模块、推导模块和存储模块;功能测试模块用于通过iast测试平台运行web应用的攻击测试实例,以对web应用进行漏洞攻击测试,并通过插桩方式跟踪请求数据从输入阶段到传播阶段,再到执行阶段的整个过程的函数流;第四判断模块用于根据功能测试模块的输出,判断带有攻击漏洞的请求数据的参数类型是否发生变化;第五判断模块用于根据第四判断模块的输出,判断通过常规变异函数是否可得到请求数据在传播阶段的完整的操作过程;推导模块用于根据第五判断模块的输出,通过执行阶段的关键函数的参数对象逆向推演到请求数据对象,从而推导出导致请求数据对象发生变异的变异函数,即为自定义变异函数;存储模块用于以web应用为key、以推演出的自定义变异函数为value构成键值对,将自定义变异函数存储在数据库中。较佳地,该系统还包括用于对到的自定义变异函数进行优化的优化模块,优化模块包括插桩修改模块、请求重发模块、检测模块和分析模块;插桩修改模块用于修改对传播阶段中的函数的插桩,以取消iast测试平台对传播阶段的除变异函数外的其他传播函数的跟踪;请求重发模块用于将攻击测试实例进行请求重发;检测模块用于在请求重发后检测攻击测试实例中的所有攻击漏洞是否被检出;分析模块用于根据检测模块的输出,取未被检出攻击漏洞的带有漏洞攻击代码的请求实例所对应的原始函数流进行二次分析,以找到遗漏的自定义变异函数。

关于上述用于web应用的动态检测漏洞攻击的系统的工作原理和工作流程详见上述用于web应用的动态检测漏洞攻击的方法,在此不再赘述。

另外,本发明还公开一种用于web应用的动态检测漏洞攻击的系统,其包括一个或多个处理器、存储器以及一个或多个程序,其中一个或多个程序被存储在所述存储器中,并且被配置成由所述一个或多个处理器执行,所述程序包括用于执行如上所述的用于web应用的动态检测漏洞攻击的方法的指令。

本发明还公开一种计算机可读存储介质,其包括测试用计算机程序,所述计算机程序可被处理器执行以完成如上所述的用于web应用的动态检测漏洞攻击的方法。

以上所揭露的仅为本发明的优选实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明申请专利范围所作的等同变化,仍属本发明所涵盖的范围。


技术特征:

1.一种用于web应用的动态检测漏洞攻击的方法,其特征在于,包括:

通过插桩工具插桩待检测web应用程序代码中的输入函数、变异函数和执行函数,

所述输入函数为所述web应用在输入阶段接收消息的关键函数,

所述执行函数为所述web应用在执行阶段执行关键动作的的关键函数,

所述变异函数为所述web应用在传播阶段将接收到的参数对象转换为其他不同的对象类型进行表达的传播函数;

通过插桩工具跟踪并获取请求数据在web应用中的整个执行过程的数据流;

提取当前所述执行函数的执行参数,判断所述执行参数中是否存在漏洞攻击代码,如果是,

判断当前请求数据对应的数据流是否经过所述输入阶段,如果是,则对所述执行函数的执行流程进行拦截处理,并可视化展示出所述数据流经过所述变异函数的过程。

2.根据权利要求1所述的用于web应用的动态检测漏洞攻击的方法,其特征在于,当判断出所述执行参数中存在漏洞攻击代码时,进一步判断所述执行参数是否来源于传播阶段,如果否,则定义本次漏洞攻击为误触发。

3.根据权利要求1所述的用于web应用的动态检测漏洞攻击的方法,其特征在于,所述变异函数包括属于开发框架所具有的常规变异函数和用户自定义的自定义变异函数,所述自定义变异函数的获取方法包括:

通过iast测试平台运行所述web应用的攻击测试实例,以对所述web应用进行漏洞攻击测试,并通过插桩方式跟踪请求数据从输入阶段到传播阶段,再到执行阶段的整个过程的函数流;

当发现攻击漏洞时,如果请求数据的参数类型发生变化,且如果通过所述常规变异函数不能得到请求数据在传播阶段的完整的操作过程,通过执行阶段的关键函数的参数对象逆向推演到请求数据对象,从而推导出导致所述请求数据对象发生变异的变异函数,即为自定义变异函数,然后以所述web应用为键值对的关键字,以推演出的所述自定义变异函数为键值对的值构成键值对存储在数据库中,以供插桩工具调用。

4.根据权利要求3所述的用于web应用的动态检测漏洞攻击的方法,其特征在于,还包括对得到的所述自定义变异函数进行优化的方法:

得到所述自定义变异函数后,取消所述iast测试平台对所述传播阶段的除所述变异函数外的其他传播函数的跟踪;

对所述攻击测试实例进行请求重发,检测攻击测试实例中的所有攻击漏洞是否被检出,如果否,取未被检出攻击漏洞的带有漏洞攻击代码的请求实例所对应的原始函数流进行二次分析,以找到遗漏的自定义变异函数。

5.一种用于web应用的动态检测漏洞攻击的系统,其特征在于,包括插桩模块、数据流跟踪模块、第一判断判断模块、第二判断模块、处理模块和展示模块;

所述插桩模块,用于通过插桩工具插桩待检测web应用程序代码中的输入函数、变异函数和执行函数;

所述输入函数为所述web应用在输入阶段接收消息的关键函数;

所述执行函数为所述web应用在执行阶段执行关键动作的的关键函数;

所述变异函数为所述web应用在传播阶段将接收到的参数对象转换为其他不同的对象类型进行表达的传播函数;

所述数据流跟踪模块,用于通过所述插桩模块跟踪并获取请求数据在web应用中的整个执行过程的数据流;

所述第一判断模块,用于判断执行函数的执行参数中是否存在漏洞攻击代码;

所述第二判断模块,用于判断存在漏洞攻击代码的请求数据的数据流是否经过所述输入阶段;

所述处理模块,用于根据所述第一判断模块和所述第二判断模块的输出结果,对攻击漏洞进行拦截处理;

所述展示模块,用于根据所述第一判断模块和所述第二判断模块的输出结果,可视化展示出具有攻击漏洞的请求数据对应的数据流经过所述变异函数的过程。

6.根据权利要求5所述的用于web应用的动态检测漏洞攻击的系统,其特征在于,还包括第三判断模块,所述第三判断模块用于根据所述第二判断模块的输出结果进一步判断所述执行阶段的执行参数是否来源于于传播阶段,以定义本次漏洞攻击是否为误触发。

7.根据权利要求5所述的用于web应用的动态检测漏洞攻击的系统,其特征在于,所述变异函数包括属于开发框架所具有的常规变异函数和用户自定义的自定义变异函数,所述系统还包括自定义变异函数获取模块,所述自定义变异函数获取模块包括功能测试模块、第四判断模块、第五判断模块、推导模块和存储模块;

所述功能测试模块,用于通过iast测试平台运行所述web应用的攻击测试实例,以对所述web应用进行漏洞攻击测试,并通过插桩方式跟踪请求数据从输入阶段到传播阶段,再到执行阶段的整个过程的函数流;

所述第四判断模块,用于根据功能测试模块的输出,判断带有攻击漏洞的请求数据的参数类型是否发生变化;

所述第五判断模块,用于根据所述第四判断模块的输出,判断通过所述常规变异函数是否可得到请求数据在传播阶段的完整的操作过程;

所述推导模块,用于根据所述第五判断模块的输出,通过执行阶段的关键函数的参数对象逆向推演到请求数据对象,从而推导出导致所述请求数据对象发生变异的变异函数,即为自定义变异函数;

所述存储模块,用于以所述web应用为键值对的关键字、以推演出的所述自定义变异函数为键值对的值构成键值对将所述自定义变异函数存储在数据库中。

8.根据权利要求7所述的用于web应用的动态检测漏洞攻击的系统,其特征在于,还包括用于对得到的所述自定义变异函数进行优化的优化模块,所述优化模块包括插桩修改模块、请求重发模块、检测模块和分析模块;

所述插桩修改模块,用于修改对传播阶段中的函数的插桩,以取消所述iast测试平台对所述传播阶段的除所述变异函数外的其他传播函数的跟踪;

所述请求重发模块,用于将攻击测试实例进行请求重发;

所述检测模块,用于在请求重发后检测攻击测试实例中的所有攻击漏洞是否被检出;

所述分析模块,用于根据所述检测模块的输出,取未被检出攻击漏洞的带有漏洞攻击代码的请求实例所对应的原始函数流进行二次分析,以找到遗漏的自定义变异函数。

9.一种用于web应用的动态检测漏洞攻击的系统,其特征在于,包括:

一个或多个处理器;

存储器;

以及一个或多个程序,其中一个或多个程序被存储在所述存储器中,并且被配置成由所述一个或多个处理器执行,所述程序包括用于执行如权利要求1至4任一项所述的用于web应用的动态检测漏洞攻击的方法的指令。

10.一种计算机可读存储介质,其特征在于,包括测试用计算机程序,所述计算机程序可被处理器执行以完成如权利要求1至4任一项用于web应用的动态检测漏洞攻击的方法。

技术总结
本发明公开了一种用于web应用的动态检测漏洞攻击的方法及系统,其中该方法包括:通过插桩工具插桩待检测web应用程序代码中的输入函数、变异函数和执行函数;通过插桩工具跟踪并获取请求数据在web应用中的整个执行过程的数据流;提取当前执行函数的执行参数,判断执行参数中是否存在漏洞攻击代码,如果是,判断当前请求数据对应的数据流是否经过输入阶段,如果是,则对执行函数的执行流程进行拦截处理,并可视化展示出数据流经过变异函数的过程;采用上述方法,既可准确地判断威胁数据来自于请求数据还是应用程序的本身数据,避免产生误报,还可对漏洞攻击的完整函数流进行检测,而且有效降低了对服务器的性能和存储空间的消耗。

技术研发人员:刘海涛;万振华;王颉;李华;董燕
受保护的技术使用者:深圳开源互联网安全技术有限公司
技术研发日:2020.04.28
技术公布日:2020.06.09

转载请注明原文地址: https://bbs.8miu.com/read-22041.html

最新回复(0)