CN113138913A - Java代码注入检测方法、装置、设备及存储介质 - Google Patents
Java代码注入检测方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN113138913A CN113138913A CN202010055403.1A CN202010055403A CN113138913A CN 113138913 A CN113138913 A CN 113138913A CN 202010055403 A CN202010055403 A CN 202010055403A CN 113138913 A CN113138913 A CN 113138913A
- Authority
- CN
- China
- Prior art keywords
- java
- code injection
- language
- data
- request data
- 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.)
- Pending
Links
- 238000002347 injection Methods 0.000 title claims abstract description 132
- 239000007924 injection Substances 0.000 title claims abstract description 132
- 238000001514 detection method Methods 0.000 title claims abstract description 94
- 230000014509 gene expression Effects 0.000 claims abstract description 37
- 238000012216 screening Methods 0.000 claims abstract description 18
- 239000012634 fragment Substances 0.000 claims description 9
- 230000011218 segmentation Effects 0.000 claims description 5
- 238000004458 analytical method Methods 0.000 abstract description 12
- 238000001914 filtration Methods 0.000 abstract description 3
- 230000009286 beneficial effect Effects 0.000 abstract description 2
- 238000000034 method Methods 0.000 description 17
- 230000007123 defense Effects 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 239000000243 solution Substances 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 3
- 238000000605 extraction Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000007637 random forest analysis Methods 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012706 support-vector machine Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3608—Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种Java代码注入检测方法,该方法首先过滤出可能含有Java代码注入的数据,筛选出来的请求数据为可能含有Java代码注入的任意语言类型的数据,过滤掉无关流量数据,再从请求数据中筛选出含有Java或Java表达式的文本片段,依据Java或Java表达式进行筛选,筛选出来的目标片段中payload可以为任意语言类型,将含有payload的目标片段送进支持多语言解析的代码注入识别引擎快速进行语义识别,可以提高各种语言场景下的Java代码注入的检出能力,实现多语言类型下的Java代码注入高效检测。本发明还提供了一种Java代码注入检测装置、计算机设备及可读存储介质,具有上述有益效果。
Description
技术领域
本发明涉及网络安全领域,特别涉及一种Java代码注入检测方法、装置、计算机设备及可读存储介质。
背景技术
我们需要在不修改源代码的前提下往一个第三方的Java程序里注入自己的代码逻辑。一种情况是拿不到它的源代码,另一种情况是即使有源代码也不想修改,想让注入的代码与第三方程序代码保持相对独立。为达到这样的目标,需要Java代码注入,即通过可以控制和调用Java对象的脚本语言进行Java的代码的注入。
目前,很多框架都使用一些可以控制Java对象的表达式语言来给开发人员提供便利,这同时也给代码注入带来了可乘之机。攻击者利用框架的部分接口会解析执行表达式语言的特性,往数据中掺杂恶意代码让框架执行,进而实现攻击。Java代码注入检测通过检测网络流量中是否包含恶意代码,对含有恶意代码的数据包及时拦来实现防御。随着JavaWeb框架发展,Java代码注入的安全攻防也越来越复杂,Java代码注入检测是当前Web应用防护的重点。
传统的检测技术主要有两种,一是依靠人工提取本文特征,编写相应的规则来过滤掉这些含有攻击的流量。但是Java代码注入可以利用语法的灵活性,设计出多种混淆绕过方式,对此,规则库难以表达,容易导致漏报。而且,规则库对于0day漏洞的防御能力较差,响应上也存一定延迟。二是依靠语法引擎根据提取出的特征综合判断payload(指数据中能造成攻击的代码片段)是否为攻击代码。该方法通过对payload做词法、语法和语义分析,可以对抗绝大部分的绕过手段,甚至对一些0day漏洞也有较好的防御能力,检测精准度较高。而过去几年Java代码注入以OGNL注入为主,OGNL的攻击占比和漏洞数量远远超过其它类型的语言注入的之和,所以出于安全防护效果,研发成本和多引擎性能的性能开销等多方面综合考虑安全厂商们只针对OGNL开发了相应的语法引擎,其它语言依旧通过规则防护。但近年来随着其它Java web框架的兴起,原本单一OGNL引擎的方案早已不能适应如今众多Java Web框架自带语言的注入。
因此,如何实现多语言类型下的Java代码注入检测,是本领域技术人员需要解决的技术问题。
发明内容
本发明的目的是提供一种Java代码注入检测方法,该方法可以实现多语言类型下的Java代码注入高效检测;本发明的另一目的是提供一种Java代码注入检测装置、计算机设备及可读存储介质。
为解决上述技术问题,本发明提供一种Java代码注入检测方法,包括:
确定请求流量中包含Java代码注入的请求数据;
从所述请求数据中筛选出含有Java或Java表达式的文本片段,作为目标片段;
调用多语言代码注入识别引擎对所述目标片段进行Java代码注入语义检测,并根据所述多语言代码注入识别引擎的输出结果生成检测结果。
可选地,确定请求流量中为Java代码注入的请求数据,包括:
识别所述请求流量中各请求数据是否含有预设Java Web组件的数据包特征;
若含有,将含有预设Java Web组件的数据包特征的请求数据作为所述Java代码注入的请求数据。
可选地,所述Java代码注入检测方法还包括:
识别所述请求流量中各请求数据是否含有预设Java和/或Java表达式的语言特征;
若含有,将含有预设Java和/或Java表达式的语言特征的请求数据作为所述Java代码注入的请求数据。
可选地,从所述请求数据中筛选出含有Java或Java表达式的文本片段,包括:
根据所述请求数据的数据格式对所述请求数据进行数据分割,得到若干数据片段;
对所述数据片段进行数据筛选,以筛选出含有Java或Java表达式的文本片段。
可选地,在调用多语言代码注入识别引擎对所述目标片段进行Java代码注入语义检测之前,还包括:
筛选出所述请求数据中指定定界符内的数据,作为定界符数据;
将所述定界符数据以及所述含有Java或Java表达式的文本片段作为所述目标片段。
可选地,根据所述多语言代码注入识别引擎的输出结果生成检测结果,包括:
获取所述多语言代码注入识别引擎对所述目标片段提取语义特征进行语义检测得到的输出结果;
调用预训练的二分类器对所述输出结果进行类别判定,并将所述类别判定的结果作为所述检测结果。
可选地,所述调用多语言代码注入识别引擎对所述目标片段进行Java代码注入语义检测,包括:
根据预设各语言对应的特征规则对所述目标片段进行语言类型识别,得到目标语言类型;
匹配所述目标语言类型对应的识别引擎,并调用所述识别引擎对所述目标片段进行Java代码注入检测,生成检测结果。
本发明公开一种Java代码注入检测装置,包括:
请求数据确定单元,用于确定请求流量中包含Java代码注入的请求数据;
目标片段确定单元,用于从所述请求数据中筛选出含有Java或Java表达式的文本片段,作为目标片段;
语义检测单元,用于调用多语言代码注入识别引擎对所述目标片段进行Java代码注入语义检测,并根据所述多语言代码注入识别引擎的输出结果生成检测结果。
本发明公开一种计算机设备,包括:
存储器,用于存储程序;
处理器,用于执行所述程序时实现所述Java代码注入检测方法的步骤。
本发明公开一种可读存储介质,所述可读存储介质上存储有程序,所述程序被处理器执行时实现所述Java代码注入检测方法的步骤。
本发明提出一种Java代码注入检测方法,该方法首先过滤出可能含有Java代码注入的数据,筛选出来的请求数据为可能含有Java代码注入的任意语言类型的数据,过滤掉无关流量数据,再从请求数据中筛选出含有Java或Java表达式的文本片段,由于依据Java或Java表达式进行筛选,筛选出来的目标片段中payload可以为任意语言类型,适用于OGNL、SpEL等多种语言攻击场景,过滤掉与Java代码注入无关的片段,实现payload的有效定位,然后将含有payload的目标片段送进支持多语言解析的代码注入识别引擎快速进行语义识别,调用适用于多语言的识别引擎进行语义识别,快速进行词法、语法和语义分析,可以大幅度提高各种语言场景下的Java代码注入的检出能力,因此该方法可以实现多语言类型下的Java代码注入高效检测。
本发明还提供了一种Java代码注入检测装置、计算机设备及可读存储介质,具有上述有益效果,在此不再赘述。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例提供的一种Java代码注入检测方法的流程图;
图2为本发明实施例提供的一种Java代码注入检测装置的结构框图;
图3为本发明实施例提供的一种计算机设备的结构示意图。
具体实施方式
本发明的核心是提供一种Java代码注入检测方法,该方法可以实现多语言类型下的Java代码注入高效检测;本发明的另一核心是提供一种Java代码注入检测装置、计算机设备及可读存储介质。
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
请参考图1,图1为本实施例提供的一种Java代码注入检测方法的流程图;该方法主要包括:
步骤s110、确定请求流量中包含Java代码注入的请求数据;
确定目标语言模块先对数据进行解码,再使用规则库去匹配文本中特定模式的字符串来判断是否可能含有Java代码注入攻击。因为Java代码注入在流量中只占很小比例,为了提高性能,首先需要确定数据中可能含有的语言类型,去除和Java代码注入不相关的数据。
本实施例中对具体的Java代码注入的筛选规则不做限定,一种确定请求流量中为Java代码注入的请求数据的方式如下:
(1)识别请求流量中各请求数据是否含有预设Java Web组件的数据包特征;
(2)若含有,将含有预设Java Web组件的数据包特征的请求数据作为Java代码注入的请求数据。
传统方案只关注代码本身,因为对于OGNL语言关注代码本身就足够了,但对于其它语法更为多变的语言,还需要关注数据包中可用传输于代码的载体,以免出现绕过语言特征的情况。发明人经过分析发现Web组件的数据传输都遵循一定格式,因此可以通过检测其是否含有与传输代码有关的字段,来判断数据包是否需要进行Java代码注入检测,实现方式简单且识别准确率高。
进一步地,为提升Java代码注入的识别准确率,可以在上述步骤(1)以及(2)之外,进一步执行以下步骤:
(3)识别请求流量中各请求数据是否含有预设Java和/或Java表达式的语言特征;
含有Java和Java表达式自身的语言特征,例如forName,getRutime等Java中经常用到的函数名。
(4)若含有,将含有预设Java和/或Java表达式的语言特征的请求数据作为Java代码注入的请求数据。
本实施例中对(1)和(3)的执行先后顺序不做限定,可以首先执行(1)和(2),也可以首先执行(3)和(4),也可以并列或同时进行,当同时以上述两种识别方式作为判定条件时,可以只要满足其中一点就认为这个请求数据可能含有Java代码注入攻击,以保证识别的全面性,避免有用信息的丢失。
而若请求流量中各请求数据不含有预设Java Web组件的数据包特征,和/或,请求流量中各请求数据不含有预设Java和/或Java表达式的语言特征,可以直接判定其非包含Java代码注入的请求数据,也可以进一步将其输入至其他判别器中,进一步进行Java代码注入的判定,本实施例中对此不做限定。
步骤s120、从请求数据中筛选出含有Java或Java表达式的文本片段,作为目标片段;
现有实现方案的定位主要是针对OGNL的,而OGNL本身有比较明显的界定符,比较容易实现对payload的定位和提取,而这种方式对于其它类型语言基本没有防御能力。本实施例中考虑了其它语言的情况,能对更多类型的语言进行payload的定位和提取。能准确定位多种Java表达式语言的攻击片段。通过筛选出含有Java和Java表达式自身的语言特征实现Java代码注入的有效判定。其中具体的Java或Java表达式可以实际应用场景以及使用需求进行相应设定,本实施例对此不再赘述。
而由于各种语言的代码出现位置多种多样,边界情况较为复杂,因此可选地,从请求数据中筛选出含有Java或Java表达式的文本片段的过程具体可以按如下步骤执行:
a.根据请求数据的数据格式对请求数据进行数据分割,得到若干数据片段;
b.对数据片段进行数据筛选,以筛选出含有Java或Java表达式的文本片段。
针对不同的数据格式,先将数据分割成片段,再逐一检查每个片段是否含有Java和Java表达式自身的语言特征。分多种情况对文本进行分割,从而逐一确定边界,可以提升检测效率。
需要说明的是,在实现多语言下的Java或Java表达式的文本片段的精准分割的同时,为进一步保障OGNL等语言的分割准确率,可以进一步匹配语言特有定界符,筛选出请求数据中指定定界符内的数据,作为定界符数据,例如OGNL语言就经常使用“%{”和“}”对作为其代码的定界符;将定界符数据以及含有Java或Java表达式的文本片段作为目标片段。基于定界符的筛选与基于Java或Java表达式的文本片段筛选过程执行先后顺序不做限定。
步骤s130、调用多语言代码注入识别引擎对目标片段进行Java代码注入语义检测,并根据多语言代码注入识别引擎的输出结果生成检测结果。
调用兼容多语法的代码注入识别引擎对定位到的目标片段进行语义检测,具体地包括词法分析(指计算机科学中将字符序列转换为单词(Token)序列的过程)、语法分析(指在词法分析的基础上将单词序列组合成各类语法短语,如“程序”、“语句”、“表达式”等等,具体地调用识别引擎进行语义检测识别的具体实现过程可以参照现有检测引擎的相关实现方式,在此不做限定。语法分析程序判断源程序在结构上是否正确,源程序的结构由上下文无关文法描述)和语义分析(指在语法分析的基础上,对结构上正确的源程序进行上下文有关性质的检查和类型检查等),可以实现对于多语言应用场景下的Java代码注入检测。
多语言代码注入识别引擎可以指单一的可以用于识别多语言类型的代码注入识别引擎,也可以指多个分别用于识别各相应的单一语言类型的代码注入识别引擎,本实施例对此不作限定,可以根据实际使用需要进行识别引擎的设置。
由于Java代码注入涉及的语言近10种,各语言类型间内容相似难以识别语言类别,在配置多个单语言引擎时,多数情况下对于配置的各语言引擎要都尝试调用一次,逐个调用引擎直至判黑,才知道是哪个引擎可以解析这段代码。而为了提升多语言引擎下提升检测效率,可选地,调用多语言代码注入识别引擎对目标片段进行Java代码注入语义检测的过程具体可以包括以下步骤:
(1)根据预设各语言对应的特征规则对目标片段进行语言类型识别,得到目标语言类型;
可以根据语言特有的语法和payload边界特征,排除掉不可能的语言类型,避免每次调用无关的语法引擎。其中,对于各语言类型下的规则库匹配过程实现方式不做限定,可以参照现有实现方式,比如可以基于自动机实现。
另外,本实施例中对语言类型识别的判定方式不做限定,不同的判定方式下得到的目标语言类型可能不止一个,比如可以.估算payload是某种语言的概率,概率值高于某个阈值时判定为目标语言类型,对概率高的引擎优先调用,降低引擎调用次数的期望。
(2)匹配目标语言类型对应的识别引擎,并调用识别引擎对目标片段进行Java代码注入检测,将引擎输出结果作为检测结果。
将语法相近且冲突较少的语言兼容到一个引擎解析,减少所需引擎的数量,可以有效解决多引擎带来的性能问题,提升检测效率,避免无关检测引擎对于性能的过多占用。
确定目标语言过程除了关注代码本身的内容特征外,还关注作为载体的数据包自身存在的特征。能更好的应对代码中语言特征的绕过,能以较高的性能和准确率,确定含有Java代码注入的数据。
多语言代码注入识别引擎的输出既可以是对目标片段黑白程度的度量,此时可以直接将该度量值作为检测结果进行输出,也可以是为包含多种信息类型的综合分析结果,对输出的该综合分析结果经过进一步的数据分析后再作为检测结果输出。可选地,一种根据多语言代码注入识别引擎的输出结果生成检测结果的实现方式如下:获取多语言代码注入识别引擎对目标片段提取语义特征进行语义检测得到的输出结果;调用预训练的二分类器对所述输出结果进行类别判定,并将所述类别判定的结果作为所述检测结果。类别可以包括:黑、白以及无法确定三种,当然,也可以为黑或白,本实施例中对此不做限定。各类别间设定的划分边界值与类别划分结果有注解关系,若边界值设置不精准,则可能导致整体识别结果的错误。一般边界值由人工设定,精准度较低,本实施例中可以借助于机器学习方法,通过支持向量机,随机森林和神经网络等分类器等方法来学习得到一个更好的类别判定边界,从而可以实现类别的精准识别,提升用户体验。更进一步的,还可以使用一下模型融合算法组合上述二分类器得到强分类器,本实施例中对此不做限定。
需要说明的是,本实施例中对应用的语言场景不做限定,本实施例可以支持对OGNL,SpEL等多种语言做语义分析,而仅以上述两种语言类型为例,当然,也可以为其它语言类型,本实施例中对此不做限定,可以根据语言的相似度、流行程度、在当前网络上的攻击数量以及可利用漏洞数量等来设置语言类型。而本实施例适用于php注入,sql注入和命令注入等场景,对于应用场景不做限定。
基于上述介绍,本实施例提供的Java代码注入检测方法首先过滤出可能含有Java代码注入的数据,筛选出来的请求数据为可能含有Java代码注入的任意语言类型的数据,过滤掉无关流量数据,再从请求数据中筛选出含有Java或Java表达式的文本片段,由于依据Java或Java表达式进行筛选,筛选出来的目标片段中payload可以为任意语言类型,适用于OGNL、SpEL等多种语言攻击场景,过滤掉与Java代码注入无关的片段,实现payload的有效定位,然后将含有payload的目标片段送进支持多语言解析的代码注入识别引擎快速进行语义识别,调用适用于多语言的识别引擎进行语义识别,快速进行词法、语法和语义分析,可以大幅度提高各种语言场景下的Java代码注入的检出能力,因此该方法可以实现多语言类型下的Java代码注入高效检测。
实施例二
请参考图2,图2为本实施例提供的一种Java代码注入检测装置的结构框图;该装置主要包括:请求数据确定单元210、目标片段确定单元220以及语义检测单元230。本实施例提供的Java代码注入检测装置可与上述Java代码注入检测方法相互对照。
其中,请求数据确定单元210主要用于确定请求流量中包含Java代码注入的请求数据;
目标片段确定单元220主要用于从请求数据中筛选出含有Java或Java表达式的文本片段,作为目标片段;
语义检测单元230主要用于调用多语言代码注入识别引擎对目标片段进行Java代码注入语义检测,并根据多语言代码注入识别引擎的输出结果生成检测结果。
实施例三
本实施例提供一种计算机设备,包括:存储器以及处理器。
其中,存储器用于存储程序;
处理器用于执行程序时实现如上述Java代码注入检测方法的步骤,具体可参照上述实施例中对Java代码注入检测方法的介绍,在此不再赘述。
请参考图3,为本实施例提供的一种计算机设备的结构示意图,该计算机设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(centralprocessing units,CPU)322(例如,一个或一个以上处理器)和存储器332,一个或一个以上存储应用程序342或数据344的存储介质330(例如一个或一个以上海量存储设备)。其中,存储器332和存储介质330可以是短暂存储或持久存储。存储在存储介质330的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对数据处理设备中的一系列指令操作。更进一步地,中央处理器322可以设置为与存储介质330通信,在计算机设备301上执行存储介质330中的一系列指令操作。
计算机设备301还可以包括一个或一个以上电源326,一个或一个以上有线或无线网络接口350,一个或一个以上输入输出接口358,和/或,一个或一个以上操作***341,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
上面图1所描述的Java代码注入检测方法中的步骤可以由本实施例中计算机设备的结构实现。
实施例四
本实施例公开一种可读存储介质,其上存储有程序,程序被处理器执行时实现如Java代码注入检测方法的步骤,具体可参照上述实施例中对Java代码注入检测方法的介绍。
该可读存储介质具体可以为U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可存储程序代码的可读存储介质。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上对本发明所提供的Java代码注入检测方法、装置、计算机设备及可读存储介质进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
Claims (10)
1.一种Java代码注入检测方法,其特征在于,包括:
确定请求流量中包含Java代码注入的请求数据;
从所述请求数据中筛选出含有Java或Java表达式的文本片段,作为目标片段;
调用多语言代码注入识别引擎对所述目标片段进行Java代码注入语义检测,并根据所述多语言代码注入识别引擎的输出结果生成检测结果。
2.如权利要求1所述的Java代码注入检测方法,其特征在于,确定请求流量中为Java代码注入的请求数据,包括:
识别所述请求流量中各请求数据是否含有预设Java Web组件的数据包特征;
若含有,将含有预设Java Web组件的数据包特征的请求数据作为所述Java代码注入的请求数据。
3.如权利要求2所述的Java代码注入检测方法,其特征在于,还包括:
识别所述请求流量中各请求数据是否含有预设Java和/或Java表达式的语言特征;
若含有,将含有预设Java和/或Java表达式的语言特征的请求数据作为所述Java代码注入的请求数据。
4.如权利要求1所述的Java代码注入检测方法,其特征在于,从所述请求数据中筛选出含有Java或Java表达式的文本片段,包括:
根据所述请求数据的数据格式对所述请求数据进行数据分割,得到若干数据片段;
对所述数据片段进行数据筛选,以筛选出含有Java或Java表达式的文本片段。
5.如权利要求1所述的Java代码注入检测方法,其特征在于,在调用多语言代码注入识别引擎对所述目标片段进行Java代码注入语义检测之前,还包括:
筛选出所述请求数据中指定定界符内的数据,作为定界符数据;
将所述定界符数据以及所述含有Java或Java表达式的文本片段作为所述目标片段。
6.如权利要求1所述的Java代码注入检测方法,其特征在于,根据所述多语言代码注入识别引擎的输出结果生成检测结果,包括:
获取所述多语言代码注入识别引擎对所述目标片段提取语义特征进行语义检测得到的输出结果;
调用预训练的二分类器对所述输出结果进行类别判定,并将所述类别判定的结果作为所述检测结果。
7.如权利要求1至6任一项所述的Java代码注入检测方法,其特征在于,所述调用多语言代码注入识别引擎对所述目标片段进行Java代码注入语义检测,包括:
根据预设各语言对应的特征规则对所述目标片段进行语言类型识别,得到目标语言类型;
匹配所述目标语言类型对应的识别引擎,并调用所述识别引擎对所述目标片段进行Java代码注入检测,生成检测结果。
8.一种Java代码注入检测装置,其特征在于,包括:
请求数据确定单元,用于确定请求流量中包含Java代码注入的请求数据;
目标片段确定单元,用于从所述请求数据中筛选出含有Java或Java表达式的文本片段,作为目标片段;
语义检测单元,用于调用多语言代码注入识别引擎对所述目标片段进行Java代码注入语义检测,并根据所述多语言代码注入识别引擎的输出结果生成检测结果。
9.一种计算机设备,其特征在于,包括:
存储器,用于存储程序;
处理器,用于执行所述程序时实现如权利要求1至7任一项所述Java代码注入检测方法的步骤。
10.一种可读存储介质,其特征在于,所述可读存储介质上存储有程序,所述程序被处理器执行时实现如权利要求1至7任一项所述Java代码注入检测方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010055403.1A CN113138913A (zh) | 2020-01-17 | 2020-01-17 | Java代码注入检测方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010055403.1A CN113138913A (zh) | 2020-01-17 | 2020-01-17 | Java代码注入检测方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113138913A true CN113138913A (zh) | 2021-07-20 |
Family
ID=76808553
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010055403.1A Pending CN113138913A (zh) | 2020-01-17 | 2020-01-17 | Java代码注入检测方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113138913A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114297640A (zh) * | 2021-12-29 | 2022-04-08 | 中国电信股份有限公司 | 攻击检测方法、装置、介质及设备 |
CN114500053A (zh) * | 2022-01-27 | 2022-05-13 | 安徽华云安科技有限公司 | 一种代码注入检测方法、装置、电子设备及可读存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030028364A1 (en) * | 2001-07-10 | 2003-02-06 | Borland Software Corp. | Development assistance for mixed-language sources |
US20120023395A1 (en) * | 2010-07-22 | 2012-01-26 | International Business Machines Corporation | Method and apparatus for dynamic content marking to facilitate context-aware output escaping |
CN104021084A (zh) * | 2014-06-19 | 2014-09-03 | 国家电网公司 | 一种Java源代码缺陷检测方法及装置 |
CN106250769A (zh) * | 2016-07-30 | 2016-12-21 | 北京明朝万达科技股份有限公司 | 一种多级过滤的源代码数据检测方法及装置 |
CN106354632A (zh) * | 2016-08-24 | 2017-01-25 | 北京奇虎测腾科技有限公司 | 一种基于静态分析技术的源代码检测***及方法 |
CN107133518A (zh) * | 2017-04-10 | 2017-09-05 | 中国民生银行股份有限公司 | 基于参数和信息流的源代码越权检测方法及装置 |
CN107659555A (zh) * | 2016-08-30 | 2018-02-02 | 北京长亭科技有限公司 | 网络攻击的检测方法及装置、终端设备和计算机存储介质 |
CN109818954A (zh) * | 2019-01-22 | 2019-05-28 | 深信服科技股份有限公司 | Web注入型攻击检测方法、装置、电子设备及存储介质 |
CN110266669A (zh) * | 2019-06-06 | 2019-09-20 | 武汉大学 | 一种Java Web框架漏洞攻击通用检测与定位的方法及*** |
-
2020
- 2020-01-17 CN CN202010055403.1A patent/CN113138913A/zh active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030028364A1 (en) * | 2001-07-10 | 2003-02-06 | Borland Software Corp. | Development assistance for mixed-language sources |
US20120023395A1 (en) * | 2010-07-22 | 2012-01-26 | International Business Machines Corporation | Method and apparatus for dynamic content marking to facilitate context-aware output escaping |
CN104021084A (zh) * | 2014-06-19 | 2014-09-03 | 国家电网公司 | 一种Java源代码缺陷检测方法及装置 |
CN106250769A (zh) * | 2016-07-30 | 2016-12-21 | 北京明朝万达科技股份有限公司 | 一种多级过滤的源代码数据检测方法及装置 |
CN106354632A (zh) * | 2016-08-24 | 2017-01-25 | 北京奇虎测腾科技有限公司 | 一种基于静态分析技术的源代码检测***及方法 |
CN107659555A (zh) * | 2016-08-30 | 2018-02-02 | 北京长亭科技有限公司 | 网络攻击的检测方法及装置、终端设备和计算机存储介质 |
CN107133518A (zh) * | 2017-04-10 | 2017-09-05 | 中国民生银行股份有限公司 | 基于参数和信息流的源代码越权检测方法及装置 |
CN109818954A (zh) * | 2019-01-22 | 2019-05-28 | 深信服科技股份有限公司 | Web注入型攻击检测方法、装置、电子设备及存储介质 |
CN110266669A (zh) * | 2019-06-06 | 2019-09-20 | 武汉大学 | 一种Java Web框架漏洞攻击通用检测与定位的方法及*** |
Non-Patent Citations (1)
Title |
---|
陈玮: "Java程序静态分析中的漏洞检测技术研究", 《中国优秀硕士论文 信息科技辑》, pages 55 - 56 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114297640A (zh) * | 2021-12-29 | 2022-04-08 | 中国电信股份有限公司 | 攻击检测方法、装置、介质及设备 |
CN114297640B (zh) * | 2021-12-29 | 2023-10-27 | 中国电信股份有限公司 | 攻击检测方法、装置、介质及设备 |
CN114500053A (zh) * | 2022-01-27 | 2022-05-13 | 安徽华云安科技有限公司 | 一种代码注入检测方法、装置、电子设备及可读存储介质 |
CN114500053B (zh) * | 2022-01-27 | 2023-12-05 | 安徽华云安科技有限公司 | 一种代码注入检测方法、装置、电子设备及可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20040205411A1 (en) | Method of detecting malicious scripts using code insertion technique | |
CN108427731B (zh) | 页面代码的处理方法、装置、终端设备及介质 | |
US20120130977A1 (en) | Dynamic language checking | |
CN111988265A (zh) | 一种网络流量攻击识别方法、防火墙***及相关组件 | |
US10579799B2 (en) | System and method for execution of objects lacking rules of interpretation | |
CN113138913A (zh) | Java代码注入检测方法、装置、设备及存储介质 | |
CN111079408A (zh) | 一种语种识别方法、装置、设备及存储介质 | |
CN113194058A (zh) | Web攻击检测方法、设备、网站应用层防火墙及介质 | |
CN113127862B (zh) | 一种xxe攻击检测方法、装置、电子设备及存储介质 | |
CN110489124B (zh) | 源代码执行方法、装置、存储介质及计算机设备 | |
CN110688369B (zh) | 解析db2报文的方法、装置、存储介质及电子设备 | |
CN115659340B (zh) | 一种仿冒小程序识别方法、装置、存储介质及电子设备 | |
CN116821903A (zh) | 检测规则确定及恶意二进制文件检测方法、设备及介质 | |
US9871807B2 (en) | Generic protocol decoder for generic application-level protocol signatures | |
CN109995605B (zh) | 一种流量识别方法、装置以及计算机可读存储介质 | |
CN116257850A (zh) | 一种病毒文件识别方法、装置、存储介质及电子设备 | |
CN113779589B (zh) | 一种安卓智能手机应用误配置检测方法 | |
CN115913655A (zh) | 一种基于流量分析和语义分析的Shell命令注入检测方法 | |
CN114065197A (zh) | 调用序列生成方法、装置、电子设备、存储介质及产品 | |
CN113946516A (zh) | 代码覆盖率确定方法、装置及存储介质 | |
CN113392016A (zh) | 对程序异常情况处理的规约生成方法、装置、设备及介质 | |
CN110377499A (zh) | 一种对应用程序进行测试的方法及装置 | |
CN112162738B (zh) | 数据转化方法、装置、终端设备及存储介质 | |
CN114301672B (zh) | 网络风险检测方法、装置及电子设备 | |
CN115587364B (zh) | 基于前后端关联性分析的固件漏洞输入点定位方法及装置 |
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 |