CN108667840B - 注入漏洞检测方法及装置 - Google Patents
注入漏洞检测方法及装置 Download PDFInfo
- Publication number
- CN108667840B CN108667840B CN201810450905.7A CN201810450905A CN108667840B CN 108667840 B CN108667840 B CN 108667840B CN 201810450905 A CN201810450905 A CN 201810450905A CN 108667840 B CN108667840 B CN 108667840B
- Authority
- CN
- China
- Prior art keywords
- detection
- database
- webpage
- statement
- injection
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1441—Countermeasures against malicious traffic
- H04L63/1466—Active attacks involving interception, injection, modification, spoofing of data unit addresses, e.g. hijacking, packet injection or TCP sequence number attacks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1433—Vulnerability analysis
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及了一种注入漏洞检测方法及装置,所述注入漏洞检测方法包括:接收应用程序根据携带探测标记的参数发起的网页访问请求,所述网页访问请求指示所述应用程序请求访问的网页;响应所述网页访问请求,根据携带探测标记的参数对业务数据库进行注入式查询;监控所述业务数据库的查询过程,获取查询过程中生成的已执行数据库语句;对包含所述探测标记的已执行数据库语句进行语法分析,得到用于指示所述网页是否存在注入漏洞的检测结果。采用本发明所提供的注入漏洞检测方法及装置解决了现有技术中注入漏洞检测效率低下的问题。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种注入漏洞检测方法及装置。
背景技术
随着计算机技术的发展,终端中安装的应用程序能够为用户提供的线下服务越来越丰富,且随着用户需求的多元化,应用程序也会需要将一些服务部署在业务服务器中,使得应用程序通过网页访问请求的发起,而请求对业务服务器中部署的业务数据库进行查询,进而获得业务服务器返回的网页资源,以便于用户享受应用程序借由此网页资源所提供的线上服务。
对于业务数据库所进行的查询而言,可以是无参数的非注入式查询,也可以是含参数的注入式查询。如果业务服务器针对含参数的注入式查询未进行参数校验,则攻击者有机会通过参数注入导致业务服务器返回错误的网页资源,进而导致应用程序根据错误的网页资源所提供的线上服务出错。
目前,针对参数注入的注入漏洞检测方法主要包括:页面相似度、时间延迟、报错信息和联合查询等方法。然而,上述方法虽然能够准确地检测注入漏洞,但是需要向业务服务器发起上千次甚至更多次的网页访问请求,不仅会耗费大量的时间,并占用大量的传输带宽,而且还会造成业务服务器过高的任务处理压力。
由上可知,现有的注入漏洞检测方法仍存在检测效率低下的问题。
发明内容
为了解决上述技术问题,本发明的一个目的在于提供一种注入漏洞检测方法及装置。
其中,本发明所采用的技术方案为:
一种注入漏洞检测方法,包括:接收应用程序根据携带探测标记的参数发起的网页访问请求,所述网页访问请求指示所述应用程序请求访问的网页;响应所述网页访问请求,根据携带探测标记的参数对业务数据库进行注入式查询;监控所述业务数据库的查询过程,获取查询过程中生成的已执行数据库语句;对包含所述探测标记的已执行数据库语句进行语法分析,得到用于指示所述网页是否存在注入漏洞的检测结果。
一种注入漏洞检测装置,包括:请求接收模块,用于接收应用程序根据携带探测标记的参数发起的网页访问请求,所述网页访问请求指示所述应用程序请求访问的网页;请求响应模块,用于响应所述网页访问请求,根据携带探测标记的参数对业务数据库进行注入式查询;查询监控模块,用于监控所述业务数据库的查询过程,获取查询过程中生成的已执行数据库语句;语法分析模块,用于对包含所述探测标记的已执行数据库语句进行语法分析,得到用于指示所述网页是否存在注入漏洞的检测结果。
一种注入漏洞检测装置,包括处理器及存储器,所述存储器上存储有计算机可读指令,所述计算机可读指令被所述处理器执行时实现如上所述的注入漏洞检测方法。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的注入漏洞检测方法。
在上述技术方案中,通过接收应用程序根据携带探测标记的参数而发起的网页访问请求,进而通过此网页访问请求的响应,根据携带探测标记的参数对业务数据库进行注入式查询,并获取业务数据库查询过程中生成的已执行数据库语句,以通过对包含探测标记的已执行数据库语句进行语法分析,得到用于指示网页访问请求所指示的网页是否存在注入漏洞检测的检测结果。
也就是说,利用注入漏洞是因参数注入导致的特性,将携带探测标记的参数注入,进而通过对包含此探测标记的已执行数据库语句进行语法分析来判断网页是否存在注入漏洞,使得仅需要向业务服务器发起极少次数的网页访问请求即可准确地检测注入漏洞,避免大量时间的耗费以及大量传输带宽的占用,以此解决了现有技术中注入漏洞检测效率低下的问题,从而有效地降低了业务服务器过高的任务处理压力。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并于说明书一起用于解释本发明的原理。
图1是根据本发明所涉及的实施环境的示意图。
图2是根据一示例性实施例示出的一种服务器的硬件结构框图。
图3是根据一示例性实施例示出的一种注入漏洞检测方法的流程图。
图4是图3对应实施例中步骤330在一个实施例的流程图。
图5是图3对应实施例中步骤350在一个实施例的流程图。
图6是图3对应实施例中步骤370在一个实施例的流程图。
图7是图6对应实施例中步骤373在一个实施例的流程图。
图8是图6对应实施例中步骤375在一个实施例的流程图。
图9是一应用场景中一种注入漏洞检测方法的具体实现架构示意图。
图10是一应用场景中一种注入漏洞检测方法的具体实现时序图。
图11是根据一示例性实施例示出的一种注入漏洞检测装置的框图。
图12是图11对应实施例中请求响应模块在一个实施例的框图。
图13是图11对应实施例中查询监控模块在一个实施例的框图。
图14是图11对应实施例中语法分析模块在一个实施例的框图。
图15是图14对应实施例中目标确定单元在一个实施例的框图。
图16是图14对应实施例中漏洞检测单元在一个实施例的框图。
通过上述附图,已示出本发明明确的实施例,后文中将有更详细的描述,这些附图和文字描述并不是为了通过任何方式限制本发明构思的范围,而是通过参考特定实施例为本领域技术人员说明本发明的概念。
具体实施方式
这里将详细地对示例性实施例执行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
如前所述,注入漏洞是因参数注入导致的,即在对业务数据库的查询过程中,随着参数被注入业务数据库,可能造成查询过程中生成的已执行数据库语句不满足语法规则。
举例来说,当应用程序请求访问的网页不存在注入漏洞时,针对含参数的注入式查询,查询过程中生成的已执行数据库语句,例如,SQL=select*from xxx where artist=‘test’,或者,SQL=select*from xxx where artist=‘\’test’,其中,SQL表示已执行数据库语句,artist表示被注入的参数,test表示此参数的参数值。
简言之,对于已执行数据库语句而言,当参数值为字符串时,单引号字符“’”会成对出现,而其余单引号字符“’”则会通过添加转义字符“\”进行转义,来区别成对出现的单引号字符“’”,此时,已执行数据库语句满足语法规则。
假设应用程序请求访问的网页存在注入漏洞,则业务数据库查询过程中,转义字符“\”无法添加,导致已执行数据库语句除了成对出现的单引号字符“’”,将出现未进行转义的多余的单引号字符“’”,使得已执行数据库语句无法满足语法规则,进而造成业务服务器返回错误的网页资源,最终导致应用程序根据错误的网页资源所提供的线上服务出错。
基于此,目前针对参数注入的注入漏洞检测方法主要包括:页面相似度、时间延迟、报错信息和联合查询等方法。
具体地,(1)页面相似度方法,分别将满足语法规则的数据库语句(例如1=1)和不满足语法规则的数据库语句(例如1=2)传递至参数,并通过包含此参数的网页访问请求将此参数注入业务数据库,以此接收业务服务器返回的正确网页资源和错误网页资源。
通过比对根据错误网页资源显示的网页与原始网页之间的第一相似度,以及比对根据错误网页资源显示的网页与正确网页资源显示的网页之间的第二相似度,通过比较第一相似度和第二相似度来判断网页访问请求所指示的网页是否存在注入漏洞。
假设第一相似度与第二相似度接近,则认为正确网页资源显示的网页与原始网页一致,此时,网页访问请求所指示的网页不存在注入漏洞。
(2)时间延迟方法,分别将满足语法规则且包含sleep函数的数据库语句(例如1=1and sleep(5))和不满足语法规则且包含sleep函数的数据库语句(例如1=2and sleep(5))传递至参数,并通过包含此参数的网页访问请求将此参数注入业务数据库。其中,sleep(5)表示延迟5s返回网页资源。
假设数据库语句为1=1and sleep(5)时,业务服务器延迟5s返回网页资源,而数据库语句为1=2and sleep(5)时,业务服务器立即返回网页资源,则判定网页访问请求所指示的网页不存在注入漏洞。
或者,假设业务服务器总是立即返回网页资源,则判定网页访问请求所指示的网页存在注入漏洞。
(3)报错信息方法,将畸形字符串(例如’”`\)传递至参数,并通过包含此参数的网页访问请求将此参数注入业务数据库,进而通过检测业务服务器返回的网页资源是否包含数据库报错信息,来判断网页访问请求所指示的网页是否存在注入漏洞。
如果包含数据库报错信息,则网页访问请求所指示的网页不存在注入漏洞。
(4)联合查询方法,将order by数据库语句和union select数据库语句一并传递至参数,并通过包含此参数的网页访问请求将此参数注入业务数据库,使得业务服务器根据order by数据库语句和union select数据库语句对所查询字段数所对应的页面内容进行替换,进而通过查询所替换内容的正确性来判断网页访问请求所指示的网页是否存在注入漏洞。
如果所替换内容正确,则网页访问请求所指示的网页不存在注入漏洞。
然而,为了保证注入漏洞检测的准确性,上述方法需要维护大量的检测规则,以此向业务服务器发起上千次甚至更多次的网页访问请求,不仅会耗费大量的时间,并占用大量的传输带宽,而且还会造成业务服务器过高的任务处理压力。
即便如此,针对bool型注入漏洞,页面相似度方法和时间延迟方法仍不足以保证注入漏洞检测的准确性,尚存在注入漏洞漏检的风险。
为此,本发明特提出了一种注入漏洞检测方法,在保证注入漏洞检测准确性的同时,还有效地提高了注入漏洞检测效率,相应地,与之匹配的注入漏洞检测装置被部署在具备冯诺依曼体系架构的电子设备,例如,电子设备可以是计算机、服务器等,以实现注入漏洞检测方法。
图1为一种注入漏洞检测方法所涉及的实施环境的示意图。该实施环境包括终端100以及部署有安全漏洞检测装置200的业务服务器300。
其中,终端100可以是台式电脑、笔记本电脑、平板电脑、智能手机或者其他任何能够安装应用程序的电子设备,在此不进行限定。对于运行于终端100的应用程序而言,可以是app形式的应用程序,还可以是web形式的应用程序,在此也不加以限定。业务服务器300预先建立与终端100之间的无线或者有线网络连接,并通过网络连接接收终端100为所运行的应用程序发起的网页访问请求,进而通过响应网页访问请求进行业务服务器300中部署的业务数据库查询,以便于向终端100返回网页资源。
对于终端100而言,在接收到业务服务器300返回的网页资源之后,则控制应用程序根据此网页资源进行相应网页的显示,以使用户享受应用程序借由此网页所提供的线上服务。
注入漏洞检测装置200则针对业务服务器300中业务数据库的查询过程进行注入漏洞检测,以此保证业务服务器300能够正常的为用户提供线上服务。
值得一提的是,根据实际的营运需求,注入漏洞检测装置200不仅可以部署于业务服务器300中,还可以部署在区别于业务服务器300的其他服务器中,甚至于部署在多台其他服务器所构成的服务器集群中,以便于更好地对由海量网页访问请求所产生的业务数据库查询进行注入漏洞检测。
图2是根据一示例性实施例示出的一种服务器的硬件结构框图,此服务器可部署注入漏洞检测装置。
需要说明的是,该服务器只是一个适配于本发明的示例,不能认为是提供了对本发明的使用范围的任何限制。该服务器也不能解释为需要依赖于或者必须具有图2中示出的示例性的服务器200中的一个或者多个组件。
服务器的硬件结构可因配置或者性能的不同而产生较大的差异,如图2所示,服务器200包括:电源210、接口230、至少一存储器250、以及至少一中央处理器(CPU,CentralProcessing Units)270。
其中,电源210用于为服务器200上的各硬件设备提供工作电压。
接口230包括至少一有线或无线网络接口231、至少一串并转换接口233、至少一输入输出接口235以及至少一USB接口237等,用于与外部设备通信。
存储器250作为资源存储的载体,可以是只读存储器、随机存储器、磁盘或者光盘等,其上所存储的资源包括操作系统251、应用程序253及数据255等,存储方式可以是短暂存储或者永久存储。其中,操作系统251用于管理与控制服务器200上的各硬件设备以及应用程序253,以实现中央处理器270对海量数据255的计算与处理,其可以是WindowsServerTM、Mac OS XTM、UnixTM、LinuxTM、FreeBSDTM等。应用程序253是基于操作系统251之上完成至少一项特定工作的计算机程序,其可以包括至少一模块(图2中未示出),每个模块都可以分别包含有对服务器200的一系列计算机可读指令。数据255可以是存储于磁盘中的照片、图片等。
中央处理器270可以包括一个或多个以上的处理器,并设置为通过总线与存储器250通信,用于运算与处理存储器250中的海量数据255。
如上面所详细描述的,适用本发明的服务器200将通过中央处理器270读取存储器250中存储的一系列计算机可读指令的形式来完成注入漏洞检测方法。
此外,通过硬件电路或者硬件电路结合软件也能同样实现本发明,因此,实现本发明并不限于任何特定硬件电路、软件以及两者的组合。
请参阅图3,在一示例性实施例中,一种注入漏洞检测方法适用于图1所示实施环境的业务服务器,该业务服务器的结构可以如图2所示。
该种注入漏洞检测方法可以由部署了注入漏洞检测装置的业务服务器执行,可以包括以下步骤:
步骤310,接收应用程序根据携带探测标记的参数发起的网页访问请求。
首先说明的是,应用程序,可以是仅用于执行网页的注入漏洞检测的,例如,如果需要对某个网页进行注入漏洞检测,则在终端100中运行此应用程序,以便于此应用程序向部署了此网页所对应网页资源的业务服务器300发起网页访问请求,进而实现对此网页的注入漏洞检测。
当然,应用程序还可以是同时向用户提供其他服务的,例如,即时通讯类应用程序通过配置注入漏洞检测功能,不仅向用户提供网页的注入漏洞检测服务,还同时提供会话服务,即,在用户借由即时通讯类应用程序进行某个网页的在线访问时,即时通讯类应用程序还将对此网页进行注入漏洞检测。
基于此,业务服务器中将通过业务数据库的部署而相应地存储若干网页所对应的网页资源,以便于此应用程序能够根据标识网页的统一资源定位符(Uniform ResourceLocator,URL)对业务数据库中存储的网页资源进行查询。
针对含参数的注入式查询,应用程序将根据参数向业务服务器发起网页访问请求,以便于业务服务器根据此参数进行业务数据库的注入式查询,进而相应地返回网页资源。
其中,网页访问请求通过统一资源定位符指示了应用程序请求访问的网页,也可以理解为,统一资源定位符唯一地描述了应用程序请求访问的网页所对应网页资源在业务数据库中的存储位置。
进一步地,为了实现网页的注入漏洞检测,对于应用程序而言,将进行探测标记的配置,以便于后续能够通过探测标记进行网页的注入漏洞检测。其中,探测标记至少包括标记值和指定字符串。
例如,探测标记为’and TST_md5,则’表示指定字符串,TST_md5表示标记值,and表示和。
在一实施例的具体实现中,标记值是采用哈希算法对统一资源定位符和参数进行运算得到的,即标记值被表示为统一资源定位符和参数的哈希值。应当理解,标记值以数字的形式唯一地描述了统一资源定位符和参数,如果统一资源定位符和/或参数不同,则标记值也将有所区别。
例如,TST_md5=md5("http://testphp.vulnweb.com/artists.php?artist=1+artist"),其中,md5表示哈希算法,testphp.vulnweb.com/artists.php?artist=1表示统一资源定位符,artist表示参数,+表示和,TST_md5即表示为统一资源定位符和参数的哈希值。
更进一步地,针对同一个统一资源定位符以及相同的参数,探测标记可以配置多个,分别包括相同的标记值和不同的指定字符串。
例如,探测标记可以为”and TST_md5,则”表示指定字符串,TST_md5表示标记值,and表示和。
探测标记还可以为`and TST_md5,则`表示指定字符串,TST_md5表示标记值,and表示和。
在完成探测标记的配置之后,即可将配置的探测标记传递至参数,以便于通过携带探测标记参数向业务服务器发起网页访问请求。
例如,探测标记为'and TST_md5,携带此探测标记的参数为artists=1'and TST_md5,则根据此携带探测标记的参数所发起的网页访问请求被表示为http://testphp.vulnweb.com/artists.php?artists='1'and TST_md5'。
在此补充说明的是,针对多个探测标记,被传递了此多个探测标记的参数可以相应地存在多个,则网页访问请求能够通过此多个携带了探测标记的参数的动态替换而轮询发起的,或者,同一个参数中传递了此多个探测标记,此时,网页访问请求通过此携带了多个探测标记的同一个参数发起,以此充分地保证注入漏洞检测的准确性。
由上可知,通过终端与业务服务器之间的交互,运行于终端的应用程序便能够通过网页访问请求的发起而获得业务服务器返回的网页资源,进而在终端所配置的屏幕中进行此网页资源对应网页的显示,使得用户借由显示的网页享受此应用程序部署在业务服务器中的线上服务。
相应地,对于业务服务器而言,为应用程序提供线上服务时,将接收到应用程序根据携带探测标记的参数所发起的网页访问请求,以便于后续能够根据此参数进行业务数据库的注入式查询,并在查询过程中通过此参数携带的探测标记执行网页的注入漏洞检测。
步骤330,响应网页访问请求,根据携带探测标记的参数对业务数据库进行注入式查询。
如前所述,对于业务服务器而言,响应网页访问请求,即是根据携带探测标记的参数对业务数据库进行注入式查询。
注入式查询,指的是将携带探测标记的参数注入业务数据库,进而根据统一资源定位符在注入此参数的业务数据库中进行网页资源的查找,以便于返回网页访问请求所指示网页对应的网页资源。
由此,如果网页访问请求指示的网页存在注入漏洞,随着注入式查询的执行,将导致业务数据库返回错误的网页资源,那么,在查询过程中,便能够通过参数所携带的探测标记发现网页所存在的注入漏洞。
步骤350,监控业务数据库的查询过程,获取查询过程中生成的已执行数据库语句。
本实施例中,对业务数据库的查询过程进行监控,以便于查询过程中根据参数所携带的探测标记发现网页所存在的注入漏洞。
应当理解,随着参数的注入,此参数所携带的探测标记也一并注入业务数据库中,那么,查询过程中所生成的已执行数据库语句则可能包含了此探测标记。
例如,探测标记为\'and TST_md5,携带此探测标记的参数artist为artist=1\'and TST_md5,随着参数的注入,则包含此探测标记的已执行数据库语句为SQL=select*from xxx where artist='1\'and TST_md5'。
基于此,根据参数所携带的探测标记发现网页所存在的注入漏洞,实质上是检测包含此探测标记的已执行数据库语句是否满足语法规则,如果不满足,则判定网页存在注入漏洞。
为此,在针对包含此探测标记的已执行数据库语句进行语法规则检测之前,首先需要获取查询过程中生成的已执行数据库语句。
步骤370,对包含探测标记的已执行数据库语句进行语法分析,得到用于指示网页是否存在注入漏洞的检测结果。
在获得查询过程中生成的已执行数据库语句之后,即可针对包含探测标记的已执行数据库语句进行语法分析,以此判断网页是否存在注入漏洞。
具体地,语法分析,实质是检测包含探测标记的已执行数据库语句是否满足语法规则。
例如,探测标记为\'and TST_md5,包含此探测标记的已执行数据库语句SQL=select*from xxx where artist='1\'and TST_md5'视为满足语法规则。
如果存在至少一个包含探测标记的已执行数据库语句不满足语法规则,则检测结果指示网页存在注入漏洞,反之,如果所有包含探测标记的已执行数据库语句都满足语法规则,则检测结果指示网页不存在注入漏洞。
通过如上所述的过程,实现了业务服务器在进行业务数据库注入式查询的同时,并行执行网页的注入漏洞检测,通过对查询过程中生成的已执行数据库语句进行审计,大大减少了因注入漏洞检测而发起的网页访问请求的数量,节省了检测时间并节省了传输带宽,从而有效地提高了注入漏洞检测效率,且有效地降低了业务服务器过高的任务处理压力。
此外,无论是何种类型的注入漏洞,例如bool型,都能够充分地保证注入漏洞检测的准确性,避免出现注入漏洞漏检的现象。
请参阅图4,在一示例性实施例中,步骤330可以包括以下步骤:
步骤331,从网页访问请求中提取得到携带探测标记的参数。
如前所述,网页访问请求通过统一资源定位符指示了应用程序请求访问的网页,还通过参数指示业务服务器如何返回业务资源,例如,参数可以指示业务服务器延迟返回业务资源,还可以指示业务服务器按照何种字体返回业务资源等等。
由此,在接收到网页访问请求之后,便可以由网页访问请求中提取得到参数,此参数携带有用于注入漏洞检测的探测标记。
步骤333,将携带探测标记的参数注入业务数据库,通过注入的参数进行业务数据库的查询。
随着业务数据库中注入携带探测标记的参数,此参数将参与至业务数据库的查询,进而使得查询过程中生成的已执行数据库语句可能包含此参数所携带的探测标记,进而有利于后续根据包含探测标记的已执行数据库语句进行语法分析。
请参阅图5,在一示例性实施例中,步骤350可以包括以下步骤:
步骤351,对业务数据库的查询过程进行监控,生成描述查询过程的行为日志。
步骤353,从行为日志中提取得到已执行数据库语句。
行为日志,描述了业务数据库在查询过程中所执行的查询行为,也可以理解为,业务数据库在查询过程中所生成的已执行数据库语句将通过行为日志的形式记录,即,查询行为是以已执行数据库语句的方式存在于行为日志中的。
在一实施例的具体实现中,对于业务数据库而言,通过其部署在业务服务器中的数据库内核,即可将查询过程中生成的已执行数据库语句记录在行为日志中。
由此,通过监控业务数据库的查询过程,便能够由描述查询过程的行为日志中提取得到已执行数据库语句。
通过上述实施例的配合,为注入漏洞检测提供了数据依据,即业务数据库查询过程中生成的已执行数据库语句,从而保证网页的注入漏洞检测得以实现。
请参阅图6,在一示例性实施例中,步骤370可以包括以下步骤:
步骤371,根据探测标记进行已执行数据库语句的过滤,得到包含探测标记的已执行数据库语句。
应当理解,业务数据库查询过程中,生成的已执行数据库语句不止一条,随着携带探测标记的参数的注入,势必存在包含探测标记的已执行数据库语句,也可能存在不包含探测标记的已执行数据库语句。
为此,在根据探测标记进行网页的注入漏洞检测之前,需要对已执行数据库语句进行过滤,即仅包含探测标记的已执行数据库语句方可用于执行网页的注入漏洞检测。
步骤373,由包含探测标记的已执行数据库语句中获得目标数据库语句。
目标数据库语句,指的是待进行语法分析的已执行数据库语句。
可以理解,探测标记是为了业务服务器能够唯一地识别,并以此作为网页注入漏洞检测的依据,即,对于已执行数据库语句所包含的字符串来说,探测标记作为网页注入漏洞检测的分水岭,即已执行数据库语句中探测标记之后的字符串不会参与网页的注入漏洞检测。
由此,取决于探测标记在其所在已执行数据库语句中的语句位置,目标数据库语句,可以是包含探测标记的已执行数据库语句的全部,也可以仅是包含探测标记的已执行数据库语句的一部分。
在一实施例的具体实现中,如图7所示,步骤373可以包括以下步骤:
步骤3731,对包含探测标记的已执行数据库语句进行起始语句位置查找。
步骤3733,在包含探测标记的已执行数据库语句中确定探测标记的语句位置。
步骤3735,将起始语句位置与探测标记的语句位置之间的字符串作为目标数据库语句。
也就是说,目标数据库语句中的最后一个字符串为探测标记。
例如,包含探测标记的已执行数据库语句SQL=select*from xxx where artist='1 and TST_md5#',其中,探测标记为and TST_md5#。
由此,目标数据库语句SQL’=select*from xxx where artist='1 and TST_md5。
应当说明的是,#表示注释符,即#之后的字符串(例如')被视为代码注释,而不会被视为是已执行数据库语句所包含字符串的一部分,进而不会参与网页的注入漏洞检测,以此防止探测标记之后的字符串参与注入漏洞检测,进一步充分地保证了注入漏洞检测的准确性。
步骤375,在目标数据库语句中检测探测标记是否存在于指定字符串之外,得到检测结果。
其中,检测结果指示了网页是否存在注入漏洞。
以指定字符串为“’”进行说明,如前所述,由于应用程序请求访问的网页存在注入漏洞,业务数据库查询过程中,转义字符“\”无法添加,因此,探测标记之前的字符串可能出现未进行转义的多余的单引号字符“’”,此时,即可检测到探测标记存在于指定字符串“’”之外,即目标数据库语句不满足语法规则,进而得到指示网页存在注入漏洞的检测结果。
具体而言,如图8所示,步骤375可以包括以下步骤:
步骤3751,对目标数据库语句中指定字符串以及指定字符串相关联的字符串进行数量统计。
指定字符串相关联的字符串,是指此字符串包含指定字符串且符合语法规则。
例如,指定字符串为“’”,则与此指定字符串相关联的字符串包括“\’”、“%’”等等。其中,“\”或者“%”均表示转义字符,以此来区别其紧挨的字符串与指定字符串的区别,例如,“\’”与“’”,进而方便于语法规则由此识别出二者的区别并执行不同的处理。
如前所述,由于网页存在注入漏洞,将导致转义字符无法添加,进而使得目标数据库语句中因出现未进行转义的多余的指定字符串,而无法满足语法规则。
为此,本实施例中,目标数据库语句是否满足语法规则,是通过统计目标数据库语句中指定字符串以及指定字符串相关联的字符串的数量实现的。
步骤3753,根据数量统计结果判断目标数据库语句是否满足语法规则。
如果为否,则检测结果指示网页存在注入漏洞。
举例来说,探测标记为’and TST_md5#,随着携带此探测标记的参数的注入,在业务数据库的查询过程中,探测标记可能被包含于已执行数据库语句。
假设包含此探测标记的已执行数据库语句本身已包含指定字符串“’”,按照语法规则,此已执行数据库语句所包含字符串中势必存在一对“‘’”,由于探测标记本身也包含了指定字符串“’”,因此,如果网页不存在注入漏洞,此探测标记本身所包含的指定字符串“’”会进行转义,即转义为“\’”,此时,对探测标记之前指定字符串“’”数量进行统计的数量统计结果为单数。
即,包含此探测标记’and TST_md5#的已执行数据库语句SQL=select*from xxxwhere artist='1and\'TST_md5#'。
也就是说,如果网页不存在注入漏洞,则“\’”中的单引号字符“’”不会被视为指定字符串“’”而参与数量统计。
由此可知,如果指定字符串的数量统计结果为双数,则能够初步判定网页存在注入漏洞。
即,转义字符“\”无法添加,此时,包含此探测标记’and TST_md5#的已执行数据库语句SQL=select*from xxx where artist='1 and'TST_md5#'。
进一步地,可以理解,已执行数据库语句所包含字符串中,单引号字符“’”还有可能是因为指定字符串相关联的字符串(例如“\’”)所引入的,为此,在获得指定字符串的数量统计结果为双数之后,还需要进一步地对指定字符串“\’”相关联的字符串“\’”数量进行统计。
如果指定字符串相关联的字符串的数量统计结果为零,则确定网页存在注入漏洞,以此充分地保证了注入漏洞检测的准确性。
例如,当指定字符串“’”的数量统计结果为双数时,已执行数据库语句SQL=select*from xxx where artist='1and\'TST_md5#',包含一个“\’”,则确定网页不存在注入漏洞。
反之,已执行数据库语句SQL=select*from xxx where artist='1 and'TST_md5#',未包含任何的“\’”,则确定网页存在注入漏洞。
在上述过程中,将对网页的注入漏洞检测转变为对已执行数据库语句的语法分析,使得业务数据库查询过程中,即可进行网页的注入漏洞检测,而不必等待业务服务器返回网页资源,且随着查询过程的持续进行,网页的注入漏洞检测也随之持续进行,以此保证注入漏洞检测的准确性,避免向业务服务器发起多次网页访问请求,从而有效地提高了注入漏检侧的效率。
图9~10是一应用场景中一种注入漏洞检测方法的具体实现示意图。
该应用场景中,如图9所示,由扫描器601作为网页访问请求的发起方,此网页访问请求指示了请求访问的业务网站602,此业务网站602对应的网页资源存储于业务数据库603,由此,在此业务数据库603的查询过程中,作为注入漏洞检测装置的数据库监控系统604将对业务网站602是否存在注入漏洞进行检测。
其中,扫描器601实质是运行于终端中的应用程序,此应用程序仅用于执行网页的注入漏洞检测。
具体地,如图10所示,通过执行步骤701,检测已执行数据库语句中是否存在探测标记,如果不存在,则网页视为不存在注入漏洞,即步骤709。
反之,如果存在,则通过执行步骤702~707,对指定字符串以及指定字符串相关联的字符串的数量进行统计,进而根据数量统计结果判断已执行数据库语句是否满足语法规则,如果满足,则网页视为不存在注入漏洞,即步骤709。
否则,网页视为存在注入漏洞,即步骤708。
由此,便能够及时地发现业务网站是否存在注入漏洞,进而及时地进行注入漏洞攻击防御,避免提供错误的线上服务。
在本应用场景中,不仅精确地识别了网页所存在的注入漏洞,充分地保证了注入漏洞检测的准确性,而且减少扫描器网页访问请求的发起次数,既节约了时间成本,还节省了传输带宽,有效地提高了注入漏洞检测的效率。
下述为本发明装置实施例,可以用于执行本发明所涉及的注入漏洞检测方法。对于本发明装置实施例中未披露的细节,请参照本发明所涉及的注入漏洞检测方法的方法实施例。
请参阅图11,在一示例性实施例中,一种注入漏洞检测装置900包括但不限于:请求接收模块910、请求响应模块930、查询监控模块950和语法分析模块970。
其中,请求接收模块910用于接收应用程序根据携带探测标记的参数发起的网页访问请求,网页访问请求指示应用程序请求访问的网页。
请求响应模块930用于响应网页访问请求,根据携带探测标记的参数对业务数据库进行注入式查询。
查询监控模块950用于监控业务数据库的查询过程,获取查询过程中生成的已执行数据库语句。
语法分析模块970用于对包含探测标记的已执行数据库语句进行语法分析,得到用于指示网页是否存在注入漏洞的检测结果。
请参阅图12,在一示例性实施例中,请求响应模块930包括但不限于:参数提取单元931和参数注入单元933。
其中,参数提取单元931用于从网页访问请求中提取得到携带探测标记的参数。
参数注入单元933用于将携带探测标记的参数注入业务数据库,通过注入的参数进行业务数据库的查询。
请参阅图13,在一示例性实施例中,查询监控模块950包括但不限于:日志生成单元951和语句提取单元953。
其中,日志生成单元951用于对业务数据库的查询过程进行监控,生成描述查询过程的行为日志。
语句提取单元953用于从行为日志中提取得到已执行数据库语句。
请参阅图14,在一示例性实施例中,语法分析模块970包括但不限于:语句过滤单元971、目标确定单元973和漏洞检测单元975。
其中,语句过滤单元971用于根据探测标记进行已执行数据库语句的过滤,得到包含探测标记的已执行数据库语句。
目标确定单元973用于由包含探测标记的已执行数据库语句中获得目标数据库语句。
漏洞检测单元975用于在目标数据库语句中检测探测标记是否存在于指定字符串之外,得到检测结果,检测结果指示了网页是否存在注入漏洞。
请参阅图15,在一示例性实施例中,目标确定单元973包括但不限于:位置查找子单元9731、位置确定子单元9733和目标定义子单元9735。
其中,位置查找子单元9731用于对包含探测标记的已执行数据库语句进行起始语句位置查找。
位置确定子单元9733用于在包含探测标记的已执行数据库语句中确定探测标记的语句位置。
目标定义子单元9735用于将起始语句位置与探测标记的语句位置之间的字符串作为目标数据库语句。
请参阅图16,在一示例性实施例中,漏洞检测单元975包括但不限于:数量统计子单元9751和语法规则检测子单元9753。
其中,数量统计子单元9751用于对目标数据库语句中指定字符串以及指定字符串相关联的字符串进行数量统计。
语法规则检测子单元9753用于根据数量统计结果判断目标数据库语句是否满足语法规则。
如果为否,则检测结果指示业务数据库存在注入漏洞。
需要说明的是,上述实施例所提供的注入漏洞检测装置在进行注入漏洞检测处理时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即注入漏洞检测装置的内部结构将划分为不同的功能模块,以完成以上描述的全部或者部分功能。
另外,上述实施例所提供的注入漏洞检测装置与注入漏洞检测方法的实施例属于同一构思,其中各个模块执行操作的具体方式已经在方法实施例中进行了详细描述,此处不再赘述。
在一示例性实施例中,一种注入漏洞检测装置,包括处理器及存储器。
其中,存储器上存储有计算机可读指令,该计算机可读指令被处理器执行时实现上述各实施例中的注入漏洞检测方法。
在一示例性实施例中,一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各实施例中的注入漏洞检测方法。
上述内容,仅为本发明的较佳示例性实施例,并非用于限制本发明的实施方案,本领域普通技术人员根据本发明的主要构思和精神,可以十分方便地进行相应的变通或修改,故本发明的保护范围应以权利要求书所要求的保护范围为准。
Claims (12)
1.一种注入漏洞检测方法,其特征在于,包括:
接收应用程序根据携带探测标记的参数发起的网页访问请求,所述网页访问请求指示所述应用程序请求访问的网页;
从所述网页访问请求中提取得到携带所述探测标记的参数;
将携带所述探测标记的参数注入所述业务数据库,通过注入的参数进行所述业务数据库的查询;
监控所述业务数据库的查询过程,获取查询过程中生成的已执行数据库语句;
对包含所述探测标记的已执行数据库语句进行语法分析,得到用于指示所述网页是否存在注入漏洞的检测结果。
2.如权利要求1所述的方法,其特征在于,所述监控所述业务数据库的查询过程,获取查询过程中生成的已执行数据库语句,包括:
对所述业务数据库的查询过程进行监控,生成描述所述查询过程的行为日志;
从所述行为日志中提取得到所述已执行数据库语句。
3.如权利要求1所述的方法,其特征在于,所述对包含所述探测标记的已执行数据库语句进行语法分析,得到用于指示所述网页是否存在注入漏洞的检测结果,包括:
根据所述探测标记进行所述已执行数据库语句的过滤,得到包含所述探测标记的已执行数据库语句;
由包含所述探测标记的已执行数据库语句中获得目标数据库语句;
在所述目标数据库语句中检测所述探测标记是否存在于指定字符串之外,得到所述检测结果,所述检测结果指示了所述网页是否存在注入漏洞。
4.如权利要求3所述的方法,其特征在于,所述由包含所述探测标记的已执行数据库语句中获得目标数据库语句,包括:
对包含所述探测标记的已执行数据库语句进行起始语句位置查找;
在包含所述探测标记的已执行数据库语句中确定所述探测标记的语句位置;
将所述起始语句位置与所述探测标记的语句位置之间的字符串作为所述目标数据库语句。
5.如权利要求3所述的方法,其特征在于,所述在所述目标数据库语句中检测所述探测标记是否存在于指定字符串之外,得到所述检测结果,包括:
对所述目标数据库语句中指定字符串以及所述指定字符串相关联的字符串进行数量统计;
根据数量统计结果判断所述目标数据库语句是否满足语法规则;
如果为否,则所述检测结果指示所述网页存在注入漏洞。
6.一种注入漏洞检测装置,其特征在于,包括:
请求接收模块,用于接收应用程序根据携带探测标记的参数发起的网页访问请求,所述网页访问请求指示所述应用程序请求访问的网页;
参数提取模块,用于从所述网页访问请求中提取得到携带所述探测标记的参数;
参数注入模块,用于将携带所述探测标记的参数注入所述业务数据库,通过注入的参数进行所述业务数据库的查询;
查询监控模块,用于监控所述业务数据库的查询过程,获取查询过程中生成的已执行数据库语句;
语法分析模块,用于对包含所述探测标记的已执行数据库语句进行语法分析,得到用于指示所述网页是否存在注入漏洞的检测结果。
7.如权利要求6所述的装置,其特征在于,所述查询监控模块包括:
日志生成单元,用于对所述业务数据库的查询过程进行监控,生成描述所述查询过程的行为日志;
语句提取单元,用于从所述行为日志中提取得到所述已执行数据库语句。
8.如权利要求6所述的装置,其特征在于,所述语法分析模块包括:
语句过滤单元,用于根据所述探测标记进行所述已执行数据库语句的过滤,得到包含所述探测标记的已执行数据库语句;
目标确定单元,用于由包含所述探测标记的已执行数据库语句中获得目标数据库语句;
漏洞检测单元,用于在所述目标数据库语句中检测所述探测标记是否存在于指定字符串之外,得到所述检测结果,所述检测结果指示了所述网页是否存在注入漏洞。
9.如权利要求8所述的装置,其特征在于,所述目标确定单元包括:
位置查找子单元,用于对包含所述探测标记的已执行数据库语句进行起始语句位置查找;
位置确定子单元,用于在包含所述探测标记的已执行数据库语句中确定所述探测标记的语句位置;
目标定义子单元,用于将所述起始语句位置与所述探测标记的语句位置之间的字符串作为所述目标数据库语句。
10.如权利要求8所述的装置,其特征在于,所述漏洞检测单元包括:
数量统计子单元,用于对所述目标数据库语句中指定字符串以及所述指定字符串相关联的字符串进行数量统计;
语法规则检测子单元,用于根据数量统计结果判断所述目标数据库语句是否满足语法规则;
如果为否,则所述检测结果指示所述网页存在注入漏洞。
11.一种注入漏洞检测装置,其特征在于,包括:
处理器;及
存储器,所述存储器上存储有计算机可读指令,所述计算机可读指令被所述处理器执行时实现如权利要求1至5中任一项所述的注入漏洞检测方法。
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至5中任一项所述的注入漏洞检测方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810450905.7A CN108667840B (zh) | 2018-05-11 | 2018-05-11 | 注入漏洞检测方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810450905.7A CN108667840B (zh) | 2018-05-11 | 2018-05-11 | 注入漏洞检测方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108667840A CN108667840A (zh) | 2018-10-16 |
CN108667840B true CN108667840B (zh) | 2021-09-10 |
Family
ID=63779172
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810450905.7A Active CN108667840B (zh) | 2018-05-11 | 2018-05-11 | 注入漏洞检测方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108667840B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110515808B (zh) * | 2019-09-02 | 2023-03-14 | 北京博睿宏远数据科技股份有限公司 | 数据库监控方法、装置、计算机设备及存储介质 |
CN110995684B (zh) * | 2019-11-26 | 2022-06-28 | 西安四叶草信息技术有限公司 | 漏洞检测方法及装置 |
CN111770079B (zh) * | 2020-06-24 | 2022-09-02 | 绿盟科技集团股份有限公司 | 一种web框架注入漏洞检测方法及装置 |
CN112000984A (zh) * | 2020-08-24 | 2020-11-27 | 杭州安恒信息技术股份有限公司 | 一种数据泄露检测方法、装置、设备及可读存储介质 |
CN113254942A (zh) * | 2021-05-24 | 2021-08-13 | 浙江网商银行股份有限公司 | 数据处理方法、系统及装置 |
CN114297662B (zh) * | 2021-12-24 | 2023-02-03 | 深圳开源互联网安全技术有限公司 | 一种sql注入漏洞检测方法、装置及可读存储介质 |
CN114500033B (zh) * | 2022-01-24 | 2023-12-05 | 北京华云安信息技术有限公司 | 一种验证应用服务器的方法、装置、计算机设备和介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012102740A1 (en) * | 2011-01-25 | 2012-08-02 | Intuit Inc. | Methods systems and computer program products for generating financial statement complying with accounting standard |
CN103338208A (zh) * | 2013-07-16 | 2013-10-02 | 五八同城信息技术有限公司 | 一种sql注入防御的方法和系统 |
CN104008349A (zh) * | 2014-04-28 | 2014-08-27 | 国家电网公司 | 数据库安全访问控制方法和系统 |
CN106991322A (zh) * | 2016-01-21 | 2017-07-28 | 北京启明星辰信息安全技术有限公司 | 一种结构化查询语言sql注入攻击的检测方法和装置 |
CN107657174A (zh) * | 2016-07-26 | 2018-02-02 | 北京计算机技术及应用研究所 | 一种基于协议指纹的数据库入侵检测方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101312393B (zh) * | 2007-05-24 | 2011-08-31 | 北京启明星辰信息技术股份有限公司 | 一种sql注入漏洞检测方法及系统 |
CN106101145B (zh) * | 2016-08-10 | 2019-11-15 | 北京神州绿盟信息安全科技股份有限公司 | 一种网站漏洞检测方法及装置 |
CN106407803B (zh) * | 2016-08-30 | 2019-06-14 | 北京奇虎科技有限公司 | Sql注入漏洞的检测方法及装置 |
CN107590387A (zh) * | 2017-09-04 | 2018-01-16 | 杭州安恒信息技术有限公司 | El表达式注入漏洞检测方法、装置及电子设备 |
-
2018
- 2018-05-11 CN CN201810450905.7A patent/CN108667840B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012102740A1 (en) * | 2011-01-25 | 2012-08-02 | Intuit Inc. | Methods systems and computer program products for generating financial statement complying with accounting standard |
CN103338208A (zh) * | 2013-07-16 | 2013-10-02 | 五八同城信息技术有限公司 | 一种sql注入防御的方法和系统 |
CN104008349A (zh) * | 2014-04-28 | 2014-08-27 | 国家电网公司 | 数据库安全访问控制方法和系统 |
CN106991322A (zh) * | 2016-01-21 | 2017-07-28 | 北京启明星辰信息安全技术有限公司 | 一种结构化查询语言sql注入攻击的检测方法和装置 |
CN107657174A (zh) * | 2016-07-26 | 2018-02-02 | 北京计算机技术及应用研究所 | 一种基于协议指纹的数据库入侵检测方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108667840A (zh) | 2018-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108667840B (zh) | 注入漏洞检测方法及装置 | |
EP3347814B1 (en) | Identifying software components in a software codebase | |
TWI659300B (zh) | 一種設備標識提供方法及裝置 | |
CN107239701B (zh) | 识别恶意网站的方法及装置 | |
CN108090351B (zh) | 用于处理请求消息的方法和装置 | |
CN107341395B (zh) | 一种拦截爬虫的方法 | |
WO2019076014A1 (zh) | 网页生成方法、装置、终端设备及介质 | |
CN110035075A (zh) | 钓鱼网站的检测方法、装置、计算机设备及存储介质 | |
CN103248677B (zh) | 互联网行为分析系统及其工作方法 | |
CN109413016B (zh) | 一种基于规则的报文检测方法和装置 | |
CN109815112B (zh) | 基于功能测试的数据调试方法、装置及终端设备 | |
CN109245928A (zh) | 配置信息的设置方法和装置、终端管理系统 | |
US20130179421A1 (en) | System and Method for Collecting URL Information Using Retrieval Service of Social Network Service | |
CN112671727B (zh) | 一种信息泄露检测方法及装置、设备、存储介质 | |
CN103036910A (zh) | 一种用户Web访问行为控制方法及装置 | |
CN115150261A (zh) | 告警分析的方法、装置、电子设备及存储介质 | |
CN115640578A (zh) | 应用程序的漏洞可达性分析方法、装置、设备及介质 | |
CN113467823B (zh) | 一种配置信息的获取方法、装置、系统及存储介质 | |
CN113448985A (zh) | 一种api接口生成方法、调用方法、装置及电子设备 | |
CN113810375A (zh) | webshell检测方法、装置、设备及可读存储介质 | |
CN117540374A (zh) | 文件扫描方法和装置 | |
CN115002211B (zh) | 基于云原生的售后微服务实现方法、装置、设备及介质 | |
CN116800518A (zh) | 一种网络防护策略的调整方法及装置 | |
CN116451071A (zh) | 样本标注方法、设备及可读存储介质 | |
CN107977381B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |