CN111259399B - 用于web应用的动态检测漏洞攻击的方法及系统 - Google Patents

用于web应用的动态检测漏洞攻击的方法及系统 Download PDF

Info

Publication number
CN111259399B
CN111259399B CN202010346871.4A CN202010346871A CN111259399B CN 111259399 B CN111259399 B CN 111259399B CN 202010346871 A CN202010346871 A CN 202010346871A CN 111259399 B CN111259399 B CN 111259399B
Authority
CN
China
Prior art keywords
function
module
execution
attack
web application
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202010346871.4A
Other languages
English (en)
Other versions
CN111259399A (zh
Inventor
刘海涛
万振华
王颉
李华
董燕
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Kaiyuan Internet Security Technology Co Ltd
Original Assignee
Shenzhen Kaiyuan Internet Security Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shenzhen Kaiyuan Internet Security Technology Co Ltd filed Critical Shenzhen Kaiyuan Internet Security Technology Co Ltd
Priority to CN202010346871.4A priority Critical patent/CN111259399B/zh
Publication of CN111259399A publication Critical patent/CN111259399A/zh
Application granted granted Critical
Publication of CN111259399B publication Critical patent/CN111259399B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Virology (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Debugging And Monitoring (AREA)

Abstract

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

Description

用于web应用的动态检测漏洞攻击的方法及系统
技术领域
本发明涉及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 * FROM user WHEREusername = 'zhangsan' OR '1'='1' and password= 'lisi',在确认该位置存在sql注入攻击时(or 1=1恒为真,即使后面密码不对也会返回认证成功),可以看出执行查询的sql语句与请求数据存在相关性。
2、对于某查询请求,客户端发送请求数据为filename=attack.xml,服务端获取到字符串对象attack.xml后,通过变异函数将其转为文件对象new File(“attack.xml”),然后执行该文件对象中的内容,文件对象中包含了一条恶意执行语句rm -rf /*,在确认该位置存在漏洞攻击时,可以看出因为经过传播阶段的变异函数,执行函数的执行参数与请求数据没有存在相关性。
综上,可以得出,如果请求数据没有经过变异函数,则无需对其传播阶段的所有函数进行跟踪也可以保证漏洞攻击检测的准确性,同时通过对传播阶段中的变异函数的选择性跟踪,对于经过变异函数的请求数据,也能保证漏洞攻击检测的准确性。因此,如图1,本发明用于web应用的动态检测漏洞攻击的方法具体如下:
通过插桩工具插桩待检测web应用程序代码中的输入函数、变异函数和执行函数,
输入函数为web应用在输入阶段接收消息的关键函数,
执行函数为web应用在执行阶段执行关键动作关键函数,
变异函数为web应用在传播阶段将接收到的参数对象转换为其他不同的对象类型进行表达的传播函数;
通过插桩工具跟踪并获取请求数据在web应用中的整个执行过程的数据流;
提取当前执行函数的执行参数,判断执行参数中是否存在漏洞攻击代码,如果否,直接返回,如果是,
判断当前请求数据对应的数据流是否经过输入阶段,如果是,则对执行函数的执行流程进行拦截处理,上报该漏洞攻击信息,并可视化展示出数据流经过变异函数的过程,如果否,直接返回。本实施例中,如果与当前请求数据对应的数据流过程经过输入阶段,通过判断输入阶段的请求数据的位置跟执行阶段的执行参数位置是否一致来判断相关性,以此过滤内置参数的干扰。另外,当通过数据流判断出执行参数中存在漏洞攻击代码时,还可进一步判断执行阶段的执行参数是否来源于传播阶段,如果否,则定义本次漏洞攻击为误触发,从而过滤掉一些不明原因的假的漏洞攻击。
在上述实施例中,当检测到执行函数的执行参数中存在漏洞攻击代码时,并不直接将其判断为漏洞,还要根据请求数据的数据流判断该执行参数是否经过输入阶段和传播阶段,如果是,得出当前执行参数存在攻击漏洞的结论,并进行相应的拦截处理,由此可知,通过上述判断过程,可过滤掉由于系统内置参数(如定时器任务等)造成的干扰,降低误判几率,另外,在上述判断过程中,虽然需要对请求数据的整个执行过程的数据流进行跟踪,但是在传播阶段仅仅跟踪变异函数,而对其他传播函数不进行跟踪,即对请求数据进行有选择性的精准跟踪,从而提高服务器的检测性能,降低了漏洞攻击检测工作对web应用服务器的存储空间的需求;再者,通过对数据流经过变异函数的过程的可视化展示,可帮助开发人员更清晰的了解攻击过程在web应用中的传播走向,以便即时添加修复补丁。
对于上述实施例中的变异函数,其包括属于开发框架所具有的常规变异函数和用户自定义的自定义变异函数。对于存在数据库中的常规变异函数,可以直接对其进行插桩,但是对于自定义变异函数,由于开发过程中并没有对其进行相应的声明,因此,在使用本发明的方法对上线运行的web应用进行漏洞检测前,需要将自定义变异函数找出并对其进行保存,以供插桩使用。如图2,本实施例中公开了一种自定义变异函数的获取方法:
对web应用进行功能测试,即通过IAST测试平台运行web应用的攻击测试实例,以对web应用进行漏洞攻击测试,并通过插桩方式跟踪请求数据从输入阶段到传播阶段,再到执行阶段的整个过程的函数流;
在测试过程中,当发现攻击漏洞时,如果请求数据的参数类型发生变化,首先,通过常规变异函数查询当前请求数据在传播阶段的完整的操作流程,如果通过常规变异函数不能得到请求数据在传播阶段的完整的操作过程,通过执行阶段的关键函数的参数对象逆向推演到请求数据对象,从而推导出导致请求数据对象发生变异的变异函数,即为自定义变异函数,然后以web应用为键值对的关键字(key),以推演出的自定义变异函数为键值对的值(value)构成键值对,存储在数据库中的常规变异函数集合中,以供插桩工具调用。例如,通过输入函数得到的请求数据为String s = request.getParameter(“name”),在传播阶段中,该请求数据经过五个传播函数,s.replace(“.exe”,“”),s.toUpperCase(),Strings2 = HttpUtils.getUrl(s),s2.subLentgth(255),File file = new File(s2),执行阶段中sql注入(注入攻击)的参数来自于file对象,因为file对象无法直接关联到请求数据s对象,而是关联到s2对象,所以可以得到HttpUtils.getUrl为未知的变异函数,此时该请求数据对应的传播阶段的自定义变异函数为String s2 = HttpUtils.getUrl(s), new File(s2)为常规变异函数。
进一步地,当通过功能测试的方法得到自定义变异函数后,还可对其进行进一步的优化,如图3,优化方法为:
得到自定义变异函数后,取消IAST测试平台对传播阶段的除变异函数外的其他传播函数的跟踪,即在传播阶段,仅插桩变异函数,该变异函数包括常规变异函数和通过功能测试得到的自定义变异函数;
然后,对攻击测试实例进行请求重发,判断攻击测试实例中的所有攻击漏洞是否被检出,如果否,取未被检出攻击漏洞的带有漏洞攻击代码的请求实例所对应的原始函数流进行二次分析,以找到遗漏的自定义变异函数,然后将该自定义变异函数归入变异函数的集合中;如果是,则结束对自定义变异函数的优化。
重复上述流程,直到通过插桩变异函数可以跟踪到所有的带有漏洞攻击代码的请求实例。
综上,本发明公开的用于web应用的动态检测漏洞攻击的方法,既可准确地判断威胁数据来自于请求数据还是应用程序的本身数据,避免产生误报,还可对漏洞攻击的完整函数流进行检测,而且有效降低了对服务器的性能和存储空间的消耗。
本发明还公开一种用于web应用的动态检测漏洞攻击的系统,如图4,其包括插桩模块、数据流跟踪模块、第一判断模块、第二判断模块、处理模块和展示模块;插桩模块用于通过插桩工具插桩待检测web应用程序代码中的输入函数、变异函数和执行函数;数据流跟踪模块用于通过插桩模块跟踪并获取请求数据在web应用中的整个执行过程的数据流;第一判断模块用于判断执行函数的执行参数中是否存在漏洞攻击代码;第二判断模块用于判断存在漏洞攻击代码的请求数据的数据流是否经过输入阶段;处理模块用于根据第一判断模块和第二判断模块的输出结果,对攻击漏洞进行拦截处理;展示模块用于根据第一判断模块和第二判断模块的输出结果,可视化展示出具有攻击漏洞的请求数据对应的数据流经过变异函数的过程。较佳地,该系统还包括第三判断模块,第三判断模块用于根据第二判断模块的输出结果进一步判断执行阶段的执行参数是否来源于传播阶段,以定义本次漏洞攻击是否为误触发。
进一步地,变异函数包括属于开发框架所具有的常规变异函数和用户自定义的自定义变异函数,该系统还包括自定义变异函数获取模块,如图5,自定义变异函数获取模块包括功能测试模块、第四判断模块、第五判断模块、推导模块和存储模块;功能测试模块用于通过IAST测试平台运行web应用的攻击测试实例,以对web应用进行漏洞攻击测试,并通过插桩方式跟踪请求数据从输入阶段到传播阶段,再到执行阶段的整个过程的函数流;第四判断模块用于根据功能测试模块的输出,判断带有攻击漏洞的请求数据的参数类型是否发生变化;第五判断模块用于根据第四判断模块的输出,判断通过常规变异函数是否可得到请求数据在传播阶段的完整的操作过程;推导模块用于根据第五判断模块的输出,通过执行阶段的关键函数的参数对象逆向推演到请求数据对象,从而推导出导致请求数据对象发生变异的变异函数,即为自定义变异函数;存储模块用于以web应用为key、以推演出的自定义变异函数为value构成键值对,将自定义变异函数存储在数据库中。较佳地,该系统还包括用于对到的自定义变异函数进行优化的优化模块,优化模块包括插桩修改模块、请求重发模块、检测模块和分析模块;插桩修改模块用于修改对传播阶段中的函数的插桩,以取消IAST测试平台对传播阶段的除变异函数外的其他传播函数的跟踪;请求重发模块用于将攻击测试实例进行请求重发;检测模块用于在请求重发后检测攻击测试实例中的所有攻击漏洞是否被检出;分析模块用于根据检测模块的输出,取未被检出攻击漏洞的带有漏洞攻击代码的请求实例所对应的原始函数流进行二次分析,以找到遗漏的自定义变异函数。
关于上述用于web应用的动态检测漏洞攻击的系统的工作原理和工作流程详见上述用于web应用的动态检测漏洞攻击的方法,在此不再赘述。
另外,本发明还公开一种用于web应用的动态检测漏洞攻击的系统,其包括一个或多个处理器、存储器以及一个或多个程序,其中一个或多个程序被存储在所述存储器中,并且被配置成由所述一个或多个处理器执行,所述程序包括用于执行如上所述的用于web应用的动态检测漏洞攻击的方法的指令。
本发明还公开一种计算机可读存储介质,其包括测试用计算机程序,所述计算机程序可被处理器执行以完成如上所述的用于web应用的动态检测漏洞攻击的方法。
以上所揭露的仅为本发明的优选实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明申请专利范围所作的等同变化,仍属本发明所涵盖的范围。

Claims (8)

1.一种用于web应用的动态检测漏洞攻击的方法,其特征在于,包括:
通过插桩工具插桩待检测web应用程序代码中的输入函数、变异函数和执行函数,
所述输入函数为所述web应用在输入阶段接收消息的关键函数,
所述执行函数为所述web应用在执行阶段执行关键动作的关键函数,
所述变异函数为所述web应用在传播阶段将接收到的参数对象转换为其他不同的对象类型进行表达的传播函数;
通过插桩工具跟踪并获取请求数据在web应用中的整个执行过程的数据流;
提取当前所述执行函数的执行参数,判断所述执行参数中是否存在漏洞攻击代码,如果是,
判断当前请求数据对应的数据流是否经过所述输入阶段,如果是,则对所述执行函数的执行流程进行拦截处理,并可视化展示出所述数据流经过所述变异函数的过程;
所述变异函数包括属于开发框架所具有的常规变异函数和用户自定义的自定义变异函数,所述自定义变异函数的获取方法包括:
通过IAST测试平台运行所述web应用的攻击测试实例,以对所述web应用进行漏洞攻击测试,并通过插桩方式跟踪请求数据从输入阶段到传播阶段,再到执行阶段的整个过程的函数流;
当发现攻击漏洞时,如果请求数据的参数类型发生变化,且如果通过所述常规变异函数不能得到请求数据在传播阶段的完整的操作过程,通过执行阶段的关键函数的参数对象逆向推演到请求数据对象,从而推导出导致所述请求数据对象发生变异的变异函数,即为自定义变异函数,然后以所述web应用为键值对的关键字,以推演出的所述自定义变异函数为键值对的值构成键值对存储在数据库中,以供插桩工具调用。
2.根据权利要求1所述的用于web应用的动态检测漏洞攻击的方法,其特征在于,当判断出所述执行参数中存在漏洞攻击代码时,进一步判断所述执行参数是否来源于传播阶段,如果否,则定义本次漏洞攻击为误触发。
3.根据权利要求1所述的用于web应用的动态检测漏洞攻击的方法,其特征在于,还包括对得到的所述自定义变异函数进行优化的方法:
得到所述自定义变异函数后,取消所述IAST测试平台对所述传播阶段的除所述变异函数外的其他传播函数的跟踪;
对所述攻击测试实例进行请求重发,检测攻击测试实例中的所有攻击漏洞是否被检出,如果否,取未被检出攻击漏洞的带有漏洞攻击代码的请求实例所对应的原始函数流进行二次分析,以找到遗漏的自定义变异函数。
4.一种用于web应用的动态检测漏洞攻击的系统,其特征在于,包括插桩模块、数据流跟踪模块、第一判断模块、第二判断模块、处理模块和展示模块;
所述插桩模块,用于通过插桩工具插桩待检测web应用程序代码中的输入函数、变异函数和执行函数;
所述输入函数为所述web应用在输入阶段接收消息的关键函数;
所述执行函数为所述web应用在执行阶段执行关键动作的关键函数;
所述变异函数为所述web应用在传播阶段将接收到的参数对象转换为其他不同的对象类型进行表达的传播函数;
所述数据流跟踪模块,用于通过所述插桩模块跟踪并获取请求数据在web应用中的整个执行过程的数据流;
所述第一判断模块,用于判断执行函数的执行参数中是否存在漏洞攻击代码;
所述第二判断模块,用于判断存在漏洞攻击代码的请求数据的数据流是否经过所述输入阶段;
所述处理模块,用于根据所述第一判断模块和所述第二判断模块的输出结果,对攻击漏洞进行拦截处理;
所述展示模块,用于根据所述第一判断模块和所述第二判断模块的输出结果,可视化展示出具有攻击漏洞的请求数据对应的数据流经过所述变异函数的过程;
所述变异函数包括属于开发框架所具有的常规变异函数和用户自定义的自定义变异函数,所述系统还包括自定义变异函数获取模块,所述自定义变异函数获取模块包括功能测试模块、第四判断模块、第五判断模块、推导模块和存储模块;
所述功能测试模块,用于通过IAST测试平台运行所述web应用的攻击测试实例,以对所述web应用进行漏洞攻击测试,并通过插桩方式跟踪请求数据从输入阶段到传播阶段,再到执行阶段的整个过程的函数流;
所述第四判断模块,用于根据功能测试模块的输出,判断带有攻击漏洞的请求数据的参数类型是否发生变化;
所述第五判断模块,用于根据所述第四判断模块的输出,判断通过所述常规变异函数是否可得到请求数据在传播阶段的完整的操作过程;
所述推导模块,用于根据所述第五判断模块的输出,通过执行阶段的关键函数的参数对象逆向推演到请求数据对象,从而推导出导致所述请求数据对象发生变异的变异函数,即为自定义变异函数;
所述存储模块,用于以所述web应用为键值对的关键字、以推演出的所述自定义变异函数为键值对的值构成键值对将所述自定义变异函数存储在数据库中。
5.根据权利要求4所述的用于web应用的动态检测漏洞攻击的系统,其特征在于,还包括第三判断模块,所述第三判断模块用于根据所述第二判断模块的输出结果进一步判断所述执行阶段的执行参数是否来源于传播阶段,以定义本次漏洞攻击是否为误触发。
6.根据权利要求4所述的用于web应用的动态检测漏洞攻击的系统,其特征在于,还包括用于对得到的所述自定义变异函数进行优化的优化模块,所述优化模块包括插桩修改模块、请求重发模块、检测模块和分析模块;
所述插桩修改模块,用于修改对传播阶段中的函数的插桩,以取消所述IAST测试平台对所述传播阶段的除所述变异函数外的其他传播函数的跟踪;
所述请求重发模块,用于将攻击测试实例进行请求重发;
所述检测模块,用于在请求重发后检测攻击测试实例中的所有攻击漏洞是否被检出;
所述分析模块,用于根据所述检测模块的输出,取未被检出攻击漏洞的带有漏洞攻击代码的请求实例所对应的原始函数流进行二次分析,以找到遗漏的自定义变异函数。
7.一种用于web应用的动态检测漏洞攻击的系统,其特征在于,包括:
一个或多个处理器;
存储器;
以及一个或多个程序,其中一个或多个程序被存储在所述存储器中,并且被配置成由所述一个或多个处理器执行,所述程序包括用于执行如权利要求1至3任一项所述的用于web应用的动态检测漏洞攻击的方法的指令。
8.一种计算机可读存储介质,其特征在于,包括测试用计算机程序,所述计算机程序可被处理器执行以完成如权利要求1至3任一项用于web应用的动态检测漏洞攻击的方法。
CN202010346871.4A 2020-04-28 2020-04-28 用于web应用的动态检测漏洞攻击的方法及系统 Active CN111259399B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010346871.4A CN111259399B (zh) 2020-04-28 2020-04-28 用于web应用的动态检测漏洞攻击的方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010346871.4A CN111259399B (zh) 2020-04-28 2020-04-28 用于web应用的动态检测漏洞攻击的方法及系统

Publications (2)

Publication Number Publication Date
CN111259399A CN111259399A (zh) 2020-06-09
CN111259399B true CN111259399B (zh) 2020-08-11

Family

ID=70946360

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010346871.4A Active CN111259399B (zh) 2020-04-28 2020-04-28 用于web应用的动态检测漏洞攻击的方法及系统

Country Status (1)

Country Link
CN (1) CN111259399B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114760083B (zh) * 2021-01-08 2024-04-12 腾讯科技(深圳)有限公司 一种攻击检测文件的发布方法、装置及存储介质
CN113420298A (zh) * 2021-05-26 2021-09-21 杭州孝道科技有限公司 一种基于PHP扩展的PHP Web应用程序漏洞检测方法及其存储介质
CN113688395B (zh) * 2021-07-29 2023-08-11 深圳开源互联网安全技术有限公司 web应用程序的漏洞检测方法、设备及计算机可读存储介质
CN113761519B (zh) * 2021-08-19 2023-04-25 深圳开源互联网安全技术有限公司 一种Web应用程序的检测方法、装置及存储介质
CN114785581B (zh) * 2022-04-14 2023-08-11 深圳开源互联网安全技术有限公司 一种攻击载荷生成方法、装置及计算机可读存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104765687A (zh) * 2015-04-10 2015-07-08 江西师范大学 基于对象跟踪和污点分析的j2ee程序漏洞检测方法
CN107844701A (zh) * 2016-09-21 2018-03-27 南京大学 一种基于程序分析和变异输入的跨站脚本攻击检测方法
CN109032927A (zh) * 2018-06-26 2018-12-18 腾讯科技(深圳)有限公司 一种漏洞挖掘方法及装置
CN109190368A (zh) * 2018-08-19 2019-01-11 杭州安恒信息技术股份有限公司 一种sql注入检测装置及sql注入检测方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105791261B (zh) * 2015-12-28 2019-06-21 华为技术有限公司 一种跨站脚本攻击的检测方法和检测设备
CN106407811A (zh) * 2016-10-10 2017-02-15 合肥红珊瑚软件服务有限公司 一种sql注入漏洞定位检测系统
CN106940773B (zh) * 2017-01-10 2019-10-25 西安电子科技大学 基于静态污点数据分析的隐私泄漏漏洞检测确认方法
CN110334302B (zh) * 2019-05-24 2021-09-10 北京因特睿软件有限公司 复杂Web应用前端运行时分析方法
CN110381033B (zh) * 2019-06-24 2021-06-08 深圳开源互联网安全技术有限公司 Web应用漏洞检测方法、装置、系统、存储介质和服务器
CN111046396B (zh) * 2020-03-13 2020-07-17 深圳开源互联网安全技术有限公司 web应用测试数据流跟踪方法及系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104765687A (zh) * 2015-04-10 2015-07-08 江西师范大学 基于对象跟踪和污点分析的j2ee程序漏洞检测方法
CN107844701A (zh) * 2016-09-21 2018-03-27 南京大学 一种基于程序分析和变异输入的跨站脚本攻击检测方法
CN109032927A (zh) * 2018-06-26 2018-12-18 腾讯科技(深圳)有限公司 一种漏洞挖掘方法及装置
CN109190368A (zh) * 2018-08-19 2019-01-11 杭州安恒信息技术股份有限公司 一种sql注入检测装置及sql注入检测方法

Also Published As

Publication number Publication date
CN111259399A (zh) 2020-06-09

Similar Documents

Publication Publication Date Title
CN111259399B (zh) 用于web应用的动态检测漏洞攻击的方法及系统
US10120997B2 (en) Code instrumentation for runtime application self-protection
US9160762B2 (en) Verifying application security vulnerabilities
Antunes et al. Effective detection of SQL/XPath injection vulnerabilities in web services
Antunes et al. Comparing the effectiveness of penetration testing and static code analysis on the detection of sql injection vulnerabilities in web services
CN110688659B (zh) 基于iast测试工具动态检测水平越权的方法及系统
CN105141647B (zh) 一种检测Web应用的方法和系统
EP3566166B1 (en) Management of security vulnerabilities
CN111046396A (zh) web应用测试数据流跟踪方法及系统
KR101640479B1 (ko) 소스코드기반 소프트웨어 취약점 공격행위 분석시스템
CN114003903B (zh) 一种网络攻击追踪溯源方法及装置
CN110598418A (zh) 基于iast测试工具动态检测垂直越权的方法及系统
CN113158197A (zh) 一种基于主动iast的sql注入漏洞检测方法、系统
CN115186274A (zh) 基于iast的安全测试方法及装置
CN115098863A (zh) 一种基于静态与动态分析的智能合约重入漏洞检测方法
KR20180060616A (ko) Rba기반 통합 취약점 진단 방법
Gauthier et al. Backrest: A model-based feedback-driven greybox fuzzer for web applications
Laranjeiro et al. A learning-based approach to secure web services from SQL/XPath Injection attacks
CN115357899A (zh) 基于iast技术检测存储型漏洞的方法及系统
Laranjeiro et al. Protecting database centric web services against SQL/XPath injection attacks
CN115357894A (zh) 带有自定义验证函数的应用程序漏洞检测方法及系统
CN112446030B (zh) 一种网页端的文件上传漏洞检测方法和装置
CN115203060B (zh) 一种基于iast的安全测试方法及装置
Duchi et al. Cost-effective testing for critical off-the-shelf services
CN111078538B (zh) 基于jmh的规则自动化测试的方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant