一种基于JAVA的WEB动态安全漏洞检测方法技术

技术编号:9860381 阅读:384 留言:0更新日期:2014-04-02 19:38
本发明专利技术涉及WEB应用安全测试,旨在提供一种基于JAVA的WEB动态安全漏洞检测方法。该种基于JAVA的WEB动态安全漏洞检测方法,对WEB应用系统进行安全漏洞检测,包括步骤:修改JAVA中间件、进行fuzzing测试和动态漏洞跟踪。本发明专利技术能快速地发现更多的WEB安全漏洞问题;能覆盖黑盒测试的安全漏洞范围,并发现更多的深层次WEB安全问题;能降低白盒测试中高成本的问题;能准确定位漏洞代码的具体位置;可以保证检测过程中更低的漏报率和误报率。

【技术实现步骤摘要】
—种基于JAVA的WEB动态安全漏洞检测方法
本专利技术是关于WEB应用安全测试,特别涉及一种基于JAVA的WEB动态安全漏洞检测方法。
技术介绍
在WEB应用安全测试中,经常使用的检测方法通常为黑盒测试和白盒测试。但黑盒测试和白盒测试都有存在着不同的缺陷。黑盒测试只有采用穷举输入信息的测试方式,把所有可能的输入信息都作为测试情况时考虑,才能查出程序中所有存在的错误。实际上测试情况有无穷多个,人们不仅要测试所有合法的信息输入,而且还要对那些不合法但可能的存在的信息输入进行测试。这样看来,完全测试结束是不可能的,所以我们要进行有针对性的安全漏洞测试,通过制定测试案例指导测试的实施,保证软件的测试有组织、有步骤、以及有计划地进行。黑盒测试行为必须能够加以量化,才能真正保证软件质量,而测试用例就是将测试行为具体量化的方法之一 O白盒测试又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,测试人员清楚盒子内部的东西以及盒子里面物体或系统是如何运作的。“白盒”测试法全面了解程序内部的逻辑结构、对所有的逻辑路径进行测试。“白盒”测试法是穷举路径测试。在使用这一方案时,测试者必须检查程序或系统的内部结构,从检查程序或系统的逻辑结构着手,得出准确的测试数据。在安全测试中黑盒测试可以全局的测试可见的输入信息和输出信息,但黑盒测试无法关注到被测试程序或系统的具体内部逻辑、出现问题的代码位置、以及深层次的比较隐蔽的WEB安全漏洞。而白盒测试方法对于测试人员基本素质要求很高,在代码量巨大的情况下花费的测试成本非常高,并且可能无法清楚的了解所有的代码流情况。
技术实现思路
本专利技术的主要目的在于克服现有技术中的不足,提供一种能够快速准确地发现深层次WEB应用安全漏洞的方法。为解决上述技术问题,本专利技术的解决方案是:提供一种基于JAVA的WEB动态安全漏洞检测方法,基于JAVA的WEB应用系统程序并非直接编译成机器码进行执行,而是编译成字节码,然后通过JAVA虚拟机运行程序,WEB应用系统程序采用JavaAgent启动或运行时进行代理,基于JAVA的WEB动态安全漏洞检测方法,对WEB应用系统进行安全漏洞检测包括以下步骤:步骤A:修改JAVA中间件:将Agent, jar包当做一个JavaAgent附加到WEB应用系统程序中,Agent, jar包是劫持和判断漏洞的关键数据包,Agent, jar代码中使用Javassist动态修改目标测试程序及中间件的字节码,使用java agent方式启动Agent,jar,使其能在程序运行后动态进行目标修改,而不是直接修改文件;Agent.jar的代码中包含了所有需要劫持的关键函数,关键函数是通过分析WEB中间件及java源码获得的函数(包括 queryString、PrepareStatement、Jspffriter 等);步骤B:进行fuzzing测试,具体包括以下步骤:a)分别启动步骤A中修改过的JAVA中间件和一个进行代理fuzzing测试的代理工具,准备发送测试数据;b)将浏览器的代理设置到代理工具上,通过浏览器进行普通的功能测试,进行各个页面模块的普通访问;c)代理工具抓取到请求数据包后,生成预先设定的带有攻击测试向量POC的fuzzing数据,并发送到经过步骤A处理的JAVA中间件程序中,POC是指在漏洞测试中为能完成漏洞展现的数据包;步骤C:动态漏洞跟踪,具体包括以下步骤:d)当步骤B中的fuzzing数据被JAVA中间件程序接收后,JAVA中间件程序发现请求中包含了攻击测试向量P0C,Agent.jar包中的程序启动跟踪流程;e) Agent, jar包中的程序跟踪HTTP请求数据在关键函数中的流转,并确认fuzzing数据是否已到达任意一个关键的函数,如果已到达全部关键函数,结束处理,将请求释放,并在代理工具中记录跟踪信息;f)继续等待其他fuzzing测试,如果接收到新的fuzzing数据,贝U跳到步骤d。作为进一步的改进,所述代理工具采用Proxy+Fuzzing工具,所述Proxy+Fuzzing工具在接收到代理请求后,原始请求正常代理,并生成测试POC发送到部署了 web应用和Agent, jar的测试服务器。作为进一步的改进,所述步骤C中,Agent, jar包中的程序记录关键流量的跟踪信息,触发相应漏洞的FUZZING规则,表明该功能流程存在缺陷,在代理工具中记录或输出威胁的相关日志。作为进一步的改进,所述Agent, jar包在JAVA中间件的class首次加载时,实现对关键函数进行劫持:当发现需要劫持的代码后,动态修改字节码,并注入一段回调函数,当调用此被劫持的函数时,会进入到回调函数进行处理,处理完成后返回正常流程或者结束整个流程。与现有技术相比,本专利技术的有益效果是:1、能快速地发现更多的WEB安全漏洞问题;2、能覆盖黑盒测试的安全漏洞范围,并发现更多的深层次WEB安全问题;3、能降低白盒测试中高成本的问题;4、能准确定位漏洞代码的具体位置;5、可以保证检测过程中更低的漏报率和误报率。【附图说明】图1为本专利技术的工作流程框图。图2为本专利技术的实施例图。【具体实施方式】首先需要说明的是,本专利技术是计算机技术在信息安全
的一种应用。在本专利技术的实现过程中,会涉及到多个软件功能模块的应用。 申请人:认为,如在仔细阅读申请文件、准确理解本专利技术的实现原理和专利技术目的以后,在结合现有公知技术的情况下,本领域技术人员完全可以运用其掌握的软件编程技能实现本专利技术。前述软件功能模块包括但不限于:Agent.jar包、Proxy+Fuzzing工具等,凡本专利技术申请文件提及的均属此范畴, 申请人:不再 列举。下面结合附图与【具体实施方式】对本专利技术作进一步详细描述:目前,绝大部企业级的WEB应用系统都使用J2EE架构规范,作为首选的WEB应用系统技术架构。基于JAVA的WEB应用系统程序并非直接编译成机器码进行执行,而是编译成字节码,然后通过JAVA虚拟机运行程序,而字节码是可以通过一定的方法进行修改的。WEB应用系统程序采用JavaAgent启动或运行时进行代理。如图1、图2所示,基于JAVA的WEB动态安全漏洞检测方法,对WEB应用系统进行安全漏洞检测包括以下步骤:步骤A:修改JAVA中间件:将Agent, jar包当做一个JavaAgent附加到WEB应用系统程序中,Agent, jar包用于利用JavaAgent的方式,在JAVA中间件的class首次加载时,实现对关键函数进行劫持:当发现需要劫持的代码后,动态修改字节码,并注入一段回调函数,当调用此被劫持的函数时,会进入到回调函数进行处理,处理完成后返回正常流程或者结束整个流程,且不修改JAVA中间件本身的代码,当中间件版本变化时,如果函数不存在,将不会被拦截,所以在不同的中间件之间可以做到一个比较好的兼容性。步骤B:进行fuzzing测试,具体包括以下步骤:a)分别启动步骤A中修改过的JAVA中间件和一个进行代理fuzzing测试的代理工具,准备发送测试数据;b)将浏览器的代理设置到代理工具上,通过浏览器进行普通的本文档来自技高网
...

【技术保护点】
一种基于JAVA的WEB动态安全漏洞检测方法,基于JAVA的WEB应用系统程序并非直接编译成机器码进行执行,而是编译成字节码,然后通过JAVA虚拟机运行程序,其特征在于,WEB应用系统程序采用JavaAgent启动或运行时进行代理,基于JAVA的WEB动态安全漏洞检测方法,对WEB应用系统进行安全漏洞检测包括以下步骤:步骤A:修改JAVA中间件:将Agent.jar包当做一个JavaAgent附加到WEB应用系统程序中,Agent.jar包是劫持和判断漏洞的关键数据包,Agent.jar代码中使用Javassist动态修改目标测试程序及中间件的字节码,使用java agent方式启动Agent.jar,使其能在程序运行后动态进行目标修改,而不是直接修改文件;Agent.jar的代码中包含了所有需要劫持的关键函数,关键函数是通过分析WEB中间件及java源码获得的函数;步骤B:进行fuzzing测试,具体包括以下步骤:a)分别启动步骤A中修改过的JAVA中间件和一个进行代理fuzzing测试的代理工具,准备发送测试数据;b)将浏览器的代理设置到代理工具上,通过浏览器进行普通的功能测试,进行各个页面模块的普通访问;c)代理工具抓取到请求数据包后,生成预先设定的带有攻击测试向量POC的fuzzing数据,并发送到经过步骤A处理的JAVA中间件程序中,POC是指在漏洞测试中为能完成漏洞展现的数据包;步骤C:动态漏洞跟踪,具体包括以下步骤:d)当步骤B中的fuzzing数据被JAVA中间件程序接收后,JAVA中间件程序发现请求中包含了攻击测试向量POC,Agent.jar包中的程序启动跟踪流程;e)Agent.jar包中的程序跟踪HTTP请求数据在关键函数中的流转,并确认fuzzing数据是否已到达任意一个关键的函数,如果已到达全部关键函数,结束处理,将请求释放,并在代理工具中记录跟踪信息;f)继续等待其他fuzzing测试,如果接收到新的fuzzing数据,则跳到步骤d。...

【技术特征摘要】
1.一种基于JAVA的WEB动态安全漏洞检测方法,基于JAVA的WEB应用系统程序并非直接编译成机器码进行执行,而是编译成字节码,然后通过JAVA虚拟机运行程序,其特征在于,WEB应用系统程序采用JavaAgent启动或运行时进行代理,基于JAVA的WEB动态安全漏洞检测方法,对WEB应用系统进行安全漏洞检测包括以下步骤: 步骤A:修改JAVA中间件:将Agent, jar包当做一个JavaAgent附加到WEB应用系统程序中,Agent, jar包是劫持和判断漏洞的关键数据包,Agent, jar代码中使用Javassist动态修改目标测试程序及中间件的字节码,使用java agent方式启动Agent, jar,使其能在程序运行后动态进行目标修改,而不是直接修改文件;Agent.jar的代码中包含了所有需要劫持的关键函数,关键函数是通过分析WEB中间件及java源码获得的函数; 步骤B:进行fuzzing测试,具体包括以下步骤:a)分别启动步骤A中修改过的JAVA中间件和一个进行代理fuzzing测试的代理工具,准备发送测试数据;b)将浏览器的代理设置到代理工具上,通过浏览器进行普通的功能测试,进行各个页面模块的普通访问;c)代理工具抓取到请求数据包后,生成预先设定的带有攻击测试向量POC的fuzzing数据,并发送到经过步骤A处理的JAVA中间件程序中,POC是指在漏洞测试中为能完成漏洞展现的数据包; 步骤C:动态漏洞跟踪,具体包括以下步骤:d)当步...

【专利技术属性】
技术研发人员:吴卓群刘志乐范渊
申请(专利权)人:杭州安恒信息技术有限公司
类型:发明
国别省市:浙江;33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1