Movatterモバイル変換


[0]ホーム

URL:


CN103699480B - 一种基于java的web动态安全漏洞检测方法 - Google Patents

一种基于java的web动态安全漏洞检测方法
Download PDF

Info

Publication number
CN103699480B
CN103699480BCN201310631280.1ACN201310631280ACN103699480BCN 103699480 BCN103699480 BCN 103699480BCN 201310631280 ACN201310631280 ACN 201310631280ACN 103699480 BCN103699480 BCN 103699480B
Authority
CN
China
Prior art keywords
java
test
fuzzing
web
agent
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
CN201310631280.1A
Other languages
English (en)
Other versions
CN103699480A (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.)
Jiangsu Anheng Network Security Co ltd
Original Assignee
DBAPPSecurity 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 DBAPPSecurity Co LtdfiledCriticalDBAPPSecurity Co Ltd
Priority to CN201310631280.1ApriorityCriticalpatent/CN103699480B/zh
Publication of CN103699480ApublicationCriticalpatent/CN103699480A/zh
Application grantedgrantedCritical
Publication of CN103699480BpublicationCriticalpatent/CN103699480B/zh
Activelegal-statusCriticalCurrent
Anticipated expirationlegal-statusCritical

Links

Landscapes

Abstract

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

Description

一种基于JAVA的WEB动态安全漏洞检测方法
技术领域
本发明是关于WEB应用安全测试,特别涉及一种基于JAVA的WEB动态安全漏洞检测方法。
背景技术
在WEB应用安全测试中,经常使用的检测方法通常为黑盒测试和白盒测试。但黑盒测试和白盒测试都有存在着不同的缺陷。
黑盒测试只有采用穷举输入信息的测试方式,把所有可能的输入信息都作为测试情况时考虑,才能查出程序中所有存在的错误。实际上测试情况有无穷多个,人们不仅要测试所有合法的信息输入,而且还要对那些不合法但可能的存在的信息输入进行测试。这样看来,完全测试结束是不可能的,所以我们要进行有针对性的安全漏洞测试,通过制定测试案例指导测试的实施,保证软件的测试有组织、有步骤、以及有计划地进行。黑盒测试行为必须能够加以量化,才能真正保证软件质量,而测试用例就是将测试行为具体量化的方法之一。
白盒测试又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,测试人员清楚盒子内部的东西以及盒子里面物体或系统是如何运作的。“白盒”测试法全面了解程序内部的逻辑结构、对所有的逻辑路径进行测试。“白盒”测试法是穷举路径测试。在使用这一方案时,测试者必须检查程序或系统的内部结构,从检查程序或系统的逻辑结构着手,得出准确的测试数据。
在安全测试中黑盒测试可以全局的测试可见的输入信息和输出信息,但黑盒测试无法关注到被测试程序或系统的具体内部逻辑、出现问题的代码位置、以及深层次的比较隐蔽的WEB安全漏洞。而白盒测试方法对于测试人员基本素质要求很高,在代码量巨大的情况下花费的测试成本非常高,并且可能无法清楚的了解所有的代码流情况。
发明内容
本发明的主要目的在于克服现有技术中的不足,提供一种能够快速准确地发现深层次WEB应用安全漏洞的方法。为解决上述技术问题,本发明的解决方案是:
提供一种基于JAVA的WEB动态安全漏洞检测方法,基于JAVA的WEB应用系统程序并非直接编译成机器码进行执行,而是编译成字节码,然后通过JAVA虚拟机运行程序,WEB应用系统程序采用JavaAgent启动或运行时进行代理,基于JAVA的WEB动态安全漏洞检测方法,对WEB应用系统进行安全漏洞检测包括以下步骤:
步骤A:修改JAVA中间件:将Agent.jar包当做一个JavaAgent附加到WEB应用系统程序中,Agent.jar包是劫持和判断漏洞的关键数据包,Agent.jar代码中使用Javassist动态修改目标测试程序及中间件的字节码,使用javaagent方式启动Agent.jar,使其能在程序运行后动态进行目标修改,而不是直接修改文件;Agent.jar的代码中包含了所有需要劫持的关键函数,关键函数是通过分析WEB中间件及java源码获得的函数(包括queryString、PrepareStatement、JspWriter等);
步骤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。
作为进一步的改进,所述代理工具采用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)将浏览器的代理设置到代理工具上,通过浏览器进行普通的功能测试,进行各个页面模块的普通访问;c)代理工具抓取到请求数据包后,生成预先设定的带有攻击测试向量POC的fuzzing数据,并发送到经过步骤A处理的JAVA中间件程序中,POC是指在漏洞测试中为能完成漏洞展现的数据包。
这里的代理工具采用Proxy+Fuzzing工具,所述Proxy+Fuzzing工具在接收到代理请求后,原始请求正常代理,并生成测试POC发送到发送到部署了web应用和Agent.jar的测试服务器。采用代理的方式抓取URL,这样做有两个好处:1、测试软件在做业务测试时,会尽可能多地访问各个业务模块,这样就可以更多地发现需要检测的页面信息;2、在业务流程复杂的情况下,使用代理进行可以很方便地解决访问顺序的问题,可解决访问顺序异常导致的问题。这样就可以抓到更多的请求信息,并根据策略漏洞类型自定义测试向量。
步骤C:动态漏洞跟踪,具体包括以下步骤:d)当步骤B中的fuzzing数据被JAVA中间件程序接收后,JAVA中间件程序发现请求中包含了攻击测试向量POC,Agent.jar包中的程序启动跟踪流程;e)Agent.jar包中的程序在关键函数中跟踪HTTP请求数据在关键函数中的流转,并确认fuzzing数据是否已到达任意一个关键的函数,如果已到达全部关键函数,结束处理,将请求释放,并在代理工具中记录跟踪信息;跟踪信息触发相应漏洞的FUZZING规则,表明该功能流程存在缺陷,在代理工具中记录或输出威胁的相关日志,这样就可快速地定位出现问题的位置和整个调用堆栈的使用情况;f)继续等待其他fuzzing测试,如果接收到新的fuzzing数据,则跳到步骤d。
下面的实施例可以使本专业的专业技术人员更全面地理解本发明,但不以任何方式限制本发明。以下流程以SQL注入漏洞测试为例,展示了工作过程,实际工作时会需要劫持大量的关键函数,以完成各种漏洞的安全监测。
1、修改中间件的启动函数增加JavaAgent的参数,使用我们定制的Agent.jar包;
2、Java的Premain函数中增加transform的监视;
3、在Transform中对所有加载的class进行检测;
4、修改org/Apache/Catalina/Connector/Requestclass的字节码对SetRequestedSessionId和Recycle两个函数进行劫持;
5、修改com/mysql/jdbc/StatementImplclass的字节码对ExecuteQuery函数进行劫持;
6、使用自己开发的Proxy+Fuzzing工具代理浏览器;
7、浏览器正常访问各个页面;
8、Proxy+Fuzzing工具接收到代理请求后,原始请求正常代理,生成大量SQL注入测试POC发送到测试服务器;
9、测试服务器接收到正常请求后按正常流程处理;
10、测试服务器接收到Fuzzing数据后,在SetReuquestedSessionId函数给测试请求生成一个RequestSession用于全程跟踪数据流;
11、目标页面存在SQL注入漏洞时,会再ExecuteQuery函数中出现测试POC的部分内容,在函数中截获到以后就可判断已经存在SQL注入漏洞;
12、结束后在Recycle中将请求结束;
13、由于已经劫持关键函数,所以可以在函数中直接跟踪到代码的调用堆栈,可以完全清楚整个漏洞的函数调用顺序。并定位整个漏洞在代码中的运行情况。
最后,需要注意的是,以上列举的仅是本发明的具体实施例。显然,本发明不限于以上实施例,还可以有很多变形。本领域的普通技术人员能从本发明公开的内容中直接导出或联想到的所有变形,均应认为是本发明的保护范围。

Claims (4)

CN201310631280.1A2013-11-292013-11-29一种基于java的web动态安全漏洞检测方法ActiveCN103699480B (zh)

Priority Applications (1)

Application NumberPriority DateFiling DateTitle
CN201310631280.1ACN103699480B (zh)2013-11-292013-11-29一种基于java的web动态安全漏洞检测方法

Applications Claiming Priority (1)

Application NumberPriority DateFiling DateTitle
CN201310631280.1ACN103699480B (zh)2013-11-292013-11-29一种基于java的web动态安全漏洞检测方法

Publications (2)

Publication NumberPublication Date
CN103699480A CN103699480A (zh)2014-04-02
CN103699480Btrue CN103699480B (zh)2016-03-23

Family

ID=50361016

Family Applications (1)

Application NumberTitlePriority DateFiling Date
CN201310631280.1AActiveCN103699480B (zh)2013-11-292013-11-29一种基于java的web动态安全漏洞检测方法

Country Status (1)

CountryLink
CN (1)CN103699480B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
US12271484B2 (en)2022-07-132025-04-08International Business Machines CorporationFuzzing guided binary hardening

Families Citing this family (19)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
CN104965777B (zh)*2015-02-042019-02-05腾讯科技(深圳)有限公司一种安全测试的方法、装置及系统
CN106778279B (zh)*2015-11-252020-05-15阿里巴巴集团控股有限公司漏洞挖掘方法及装置
CN106909498B (zh)*2015-12-222020-12-22创新先进技术有限公司一种Java程序注入故障的方法和系统
CN106126417A (zh)*2016-06-172016-11-16深圳开源互联网安全技术有限公司交互式应用程序安全测试方法及其系统
CN106503563B (zh)*2016-10-172019-03-08成都知道创宇信息技术有限公司基于通用框架的批量漏洞检测方法
CN106778280A (zh)*2016-11-022017-05-31北京知道未来信息技术有限公司一种填充式远程漏洞PoC编写方法及漏洞检测方法
CN107273748B (zh)*2017-05-232020-12-11成都联宇云安科技有限公司一种基于漏洞poc实现安卓系统漏洞检测的方法
CN107908959B (zh)*2017-11-102020-02-14北京知道创宇信息技术股份有限公司网站信息检测方法、装置、电子设备及存储介质
CN108845941A (zh)*2018-06-152018-11-20郑州云海信息技术有限公司一种sql注入测试覆盖率统计方法及系统
CN109670316A (zh)*2018-12-192019-04-23杭州安恒信息技术股份有限公司一种基于Java异常的漏洞检测方法和装置
CN109871320A (zh)*2019-01-212019-06-11上海德启信息科技有限公司一种数据处理方法、装置、应用服务器及存储介质
CN109857669A (zh)*2019-02-132019-06-07杭州孝道科技有限公司一种基于JavaAgent的JavaWEB应用程序漏洞检测方法
CN110309055A (zh)*2019-05-232019-10-08深圳壹账通智能科技有限公司基于Java虚拟机的黑盒测试方法、装置、终端及存储介质
CN112395597A (zh)*2019-08-152021-02-23奇安信安全技术(珠海)有限公司网站应用漏洞攻击的检测方法及装置、存储介质
CN111191244A (zh)*2019-12-112020-05-22杭州孝道科技有限公司一种漏洞修复方法
CN113760339B (zh)*2020-07-012024-10-18北京沃东天骏信息技术有限公司漏洞修复方法和装置
CN112527691B (zh)*2021-02-182021-06-11深圳开源互联网安全技术有限公司程序安全检测防护方法、中间件系统及安全中间件系统
CN113609412A (zh)*2021-06-282021-11-05北京华云安信息技术有限公司通过Hook关键函数和事件获取URL的方法
CN114048131B (zh)*2021-11-112022-07-12北京升鑫网络科技有限公司一种基于fuzzing测试需校验流量的方法、装置及设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
CN101321057A (zh)*2008-07-222008-12-10北京航空航天大学基于Web服务的电子公文安全传输方法
US7519694B1 (en)*2005-08-242009-04-14Sun Microsystems, Inc.Method and a system to dynamically update/reload agent configuration data
CN102622556A (zh)*2011-12-222012-08-01南京邮电大学基于程序切片技术的Web服务安全分析方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
US7519694B1 (en)*2005-08-242009-04-14Sun Microsystems, Inc.Method and a system to dynamically update/reload agent configuration data
CN101321057A (zh)*2008-07-222008-12-10北京航空航天大学基于Web服务的电子公文安全传输方法
CN102622556A (zh)*2011-12-222012-08-01南京邮电大学基于程序切片技术的Web服务安全分析方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
US12271484B2 (en)2022-07-132025-04-08International Business Machines CorporationFuzzing guided binary hardening

Also Published As

Publication numberPublication date
CN103699480A (zh)2014-04-02

Similar Documents

PublicationPublication DateTitle
CN103699480B (zh)一种基于java的web动态安全漏洞检测方法
US11042647B1 (en)Software assurance system for runtime environments
US11983094B2 (en)Software diagnostic context selection and use
US11087002B2 (en)Using the same query language for static and dynamic application security testing tools
TWI575397B (zh)利用運行期代理器及動態安全分析之應用程式逐點保護技術
CN107368417B (zh)一种漏洞挖掘技术测试模型的测试方法
Macia et al.On the relevance of code anomalies for identifying architecture degradation symptoms
Baca et al.Improving software security with static automated code analysis in an industry setting
Bai et al.Towards model checking android applications
US10515220B2 (en)Determine whether an appropriate defensive response was made by an application under test
EP3975021B1 (en)Method and system for data flow monitoring to identify application security vulnerabilities and to detect and prevent attacks
Micskei et al.Robustness testing techniques and tools
CN111859380A (zh)Android App漏洞的零误报检测方法
Tang et al.A systematical study on application performance management libraries for apps
CN117272308A (zh)软件安全测试方法、装置、设备、存储介质及程序产品
Filho et al.Evasion and countermeasures techniques to detect dynamic binary instrumentation frameworks
Ferrara et al.Static privacy analysis by flow reconstruction of tainted data
Selvaraj et al.A Large-Scale Study of IoT Security Weaknesses and Vulnerabilities in the Wild
CN116450533B (zh)用于应用程序的安全检测方法、装置、电子设备和介质
CN112632547A (zh)一种数据处理方法和相关装置
Vassilev et al.Avoiding cyberspace catastrophes through smarter testing
Mostafa et al.Netdroid: Summarizing network behavior of android apps for network code maintenance
Melo et al.In-depth characterization of exception flows in software product lines: an empirical study
Suo et al.ARAP: Demystifying anti runtime analysis code in Android apps
LiBoosting static security analysis of android apps through code instrumentation

Legal Events

DateCodeTitleDescription
C06Publication
PB01Publication
C10Entry into substantive examination
SE01Entry into force of request for substantive examination
C14Grant of patent or utility model
GR01Patent grant
CP03Change of name, title or address
CP03Change of name, title or address

Address after:Zhejiang Zhongcai Building No. 68 Hangzhou 310051 Zhejiang province Binjiang District Tong Road 15

Patentee after:Dbappsecurity Co.,Ltd.

Address before:Hangzhou City, Zhejiang province 310051 Binjiang District and Zhejiang road in the 15 storey building

Patentee before:Dbappsecurity Co.,ltd.

CP02Change in the address of a patent holder
CP02Change in the address of a patent holder

Address after:Zhejiang Zhongcai Building No. 68 Binjiang District road Hangzhou City, Zhejiang Province, the 310051 and 15 layer

Patentee after:Dbappsecurity Co.,Ltd.

Address before:Zhejiang Zhongcai Building No. 68 Hangzhou 310051 Zhejiang province Binjiang District Tong Road 15

Patentee before:Dbappsecurity Co.,Ltd.

TR01Transfer of patent right
TR01Transfer of patent right

Effective date of registration:20240818

Address after:Buildings 1201, 1202, 1203, 1204, 12th Floor, Building 6, Zijin Research and Innovation Center, No. 89 Shengli Road, Jiangning District, Nanjing City, Jiangsu Province, China (Jiangning Development Zone)

Patentee after:Jiangsu Anheng Network Security Co.,Ltd.

Country or region after:China

Address before:310051 15-storey Zhejiang Zhongcai Building, No. 68 Tonghe Road, Binjiang District, Hangzhou City, Zhejiang Province

Patentee before:Dbappsecurity Co.,Ltd.

Country or region before:China


[8]ページ先頭

©2009-2025 Movatter.jp