CN111353151B - 一种网络应用的漏洞检测方法和装置 - Google Patents
一种网络应用的漏洞检测方法和装置 Download PDFInfo
- Publication number
- CN111353151B CN111353151B CN202010124415.5A CN202010124415A CN111353151B CN 111353151 B CN111353151 B CN 111353151B CN 202010124415 A CN202010124415 A CN 202010124415A CN 111353151 B CN111353151 B CN 111353151B
- Authority
- CN
- China
- Prior art keywords
- network
- data packet
- data
- sub
- server
- 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
-
- 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/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/955—Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
- G06F16/9566—URL specific, e.g. using aliases, detecting broken or misspelled links
-
- 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/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Data Mining & Analysis (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供了一种网络应用的漏洞检测方法、装置、电子设备及计算机可读存储介质;该方法包括:采集数据包,其中,所述数据包中包括网络应用发送至服务器的多个网络请求,且所述网络请求中注入有数据操作指令;将所述数据包进行分割处理,以获得能够用于进行漏洞检测的多个子数据包;依次检测每个所述子数据包中包括的网络请求,以确定所述网络请求在所述网络应用中的注入点、以及所述网络请求在所述注入点注入的数据操作指令的安全威胁。通过本发明,能够高效且准确的检测网络应用中存在的漏洞。
Description
技术领域
本发明涉及互联网技术领域,尤其涉及一种网络应用的漏洞检测方法、装置、电子设备及计算机可读存储介质。
背景技术
随着近期爆发的各种高危漏洞,网络应用的安全问题引起了越来越多的关注。注入漏洞,就是攻击者把数据操作指令插入到网页(WEB,World Wide Web)表单的输入域或页面请求的查询字符串中,在网络应用的服务器执行该查询字符串时,欺骗服务器执行混在查询字符串中的恶意的数据操作指令。在某些表单中,由于用户输入的内容本身就是用来构建动态数据操作指令的,而此时攻击者却将一些“非法”输入混入用户输入的合法输入中,或者将这些“非法”的输入作为存储过程的输入参数,以查询数据库,从而获得一些敏感的信息或者控制网络应用的服务器,给网络应用系统造成不可预估的影响。
目前,相关技术对于注入漏洞的检测基本都是人工检测,如测试人员对服务器程序进行注入测试,人工测试耗费时间长,效率低。
发明内容
本发明实施例提供一种网络应用的漏洞检测方法、装置、电子设备及计算机可读存储介质,能够高效且准确的检测网络应用中存在的漏洞。
本发明实施例的技术方案是这样实现的:
本发明实施例提供一种网络应用的漏洞检测方法,所述方法包括:
采集数据包,其中,所述数据包中包括网络应用发送至服务器的多个网络请求,且所述网络请求中注入有数据操作指令;
将所述数据包进行分割处理,以获得能够用于进行漏洞检测的多个子数据包;
依次检测每个所述子数据包中包括的网络请求,以确定所述网络请求在所述网络应用中的注入点、以及所述网络请求在所述注入点注入的数据操作指令的安全威胁。
本发明实施例提供一种网络应用的漏洞检测装置,包括:
采集模块,用于采集数据包,其中,所述数据包中包括网络应用发送至服务器的多个网络请求,且所述网络请求中注入有数据操作指令;
分割模块,用于将所述数据包进行分割处理,以获得能够用于进行漏洞检测的多个子数据包;
检测模块,用于依次检测每个所述子数据包中包括的网络请求,以确定所述网络请求在所述网络应用中的注入点、以及所述网络请求在所述注入点注入的数据操作指令的安全威胁。
上述方案中,所述采集模块,还用于调用渗透测试工具以执行以下处理:拦截所述网络应用发送至所述服务器的注入有数据操作指令的多个网络请求;将拦截的多个网络请求以日志的方式进行记录,以得到所述数据包。
上述方案中,所述分割模块,还用于确定所述数据包中包括的多个分界线;根据所述多个分界线将所述数据包分割为多个子数据包,以使每个所述子数据包中包含的网络请求的数量不超出漏洞检测工具的处理能力。
上述方案中,所述检测模块,还用于向漏洞检测工具发送所述多个子数据包中的任意一个子数据包,以通过所述漏洞检测工具检测所发送的子数据包中包括的网络请求:当查询到所述漏洞检测工具检测完成时,继续向所述漏洞检测工具发送下一个子数据包,直至所述漏洞检测工具检测完毕每个所述子数据包中包括的网络请求,并存储检测结果。
上述方案中,所述检测模块,还用于通过所述漏洞检测工具执行以下处理:将所述网络请求中能够注入数据操作指令的位置确定为所述注入点;向所述服务器发送在所述注入点注入数据操作指令的网络请求,并接收所述服务器响应所述网络请求而返回的第一响应结果;当所述第一响应结果表征所述服务器响应成功时,修改所述数据操作指令,并在所述注入点注入修改后的数据操作指令,以得到测试网络请求;向所述服务器发送所述测试网络请求,并接收所述服务器响应所述测试网络请求而返回的第二响应结果;根据所述第二响应结果,确定所述网络请求在所述注入点注入的数据操作指令是否会构成安全漏洞。
上述方案中,所述检测模块,还用于当所述第二响应结果表征所述服务器响应失败时,确定所述网络请求在所述注入点注入的数据操作指令会构成安全漏洞;当所述第二响应结果表征所述服务器响应成功时,确定所述网络请求在所述注入点注入的数据操作指令不会构成安全漏洞。
上述方案中,所述检测模块,还用于将所述子数据包导入至虚拟机,其中,所述虚拟机中运行有所述漏洞检测工具;通过所述虚拟机中的所述漏洞检测工具,检测所述子数据包中包括的网络请求。
上述方案中,所述网络应用的漏洞检测装置还包括:发送模块,用于将邮件提醒脚本导入至所述虚拟机中,以使所述漏洞检测工具检测完成后,执行所述邮件提醒脚本以发送所述检测结果。
上述方案中,所述发送模块,还用于获取检测结果,其中,所述检测结果包括存在安全漏洞的注入点以及被注入的数据操作指令;根据所述检测结果确定存在安全威胁的网络应用,并生成相应的测试报告;将所述测试报告以邮件的形式进行发送。
上述方案中,所述发送模块,还用于获取检测结果,其中,所述检测结果包括存在安全漏洞的注入点以及被注入的数据操作指令;根据所述检测结果确定存在安全威胁的网络应用,并生成相应的测试报告;将所述测试报告存储到区块链网络中,以使所述区块链网络根据存储的测试报告响应针对所述网络应用的漏洞查询请求。
上述方案中,所述发送模块,还用于开启收发邮件的服务,并配置收件邮箱的账号;将所述测试报告以邮件的形式发送至所述收件邮箱。
本发明实施例提供一种电子设备,包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现本发明实施例提供的网络应用的漏洞检测方法。
本发明实施例提供一种计算机可读存储介质,存储有可执行指令,用于引起处理器执行时,实现本发明实施例提供的网络应用的漏洞检测方法。
本发明实施例具有以下有益效果:
通过将采集的数据包进行分割处理,可以获得能够用于进行漏洞检测的多个子数据包;通过对多个子数据包中包括的网络请求进行批量检测,可以快速且准确检测多个子数据包中包含的网络请求,从而提高检测效率。
附图说明
图1是本发明实施例提供的网络应用的漏洞检测系统100的架构示意图;
图2是本发明实施例提供的电子设备500的结构示意图;
图3A是本发明实施例提供的网络应用的漏洞检测方法的流程示意图;
图3B是本发明实施例提供的网络请求的结构示意图;
图4A是本发明实施例提供的网络应用的漏洞检测方法的流程示意图;
图4B是本发明实施例提供的开启收发邮件的服务的应用场景示意图;
图4C是本发明实施例提供的收发邮件的应用场景示意图;
图5是本发明实施例提供的网络应用的漏洞检测方法的应用示意图;
图6A是本发明实施例提供的网络应用的漏洞检测方法的流程示意图;
图6B是本发明实施例提供的响应结果的结构示意图;
图7是本发明实施例提供的网络应用的漏洞检测方法的流程示意图;
图8A和图8B是Burp Suite的界面示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,所描述的实施例不应视为对本发明的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本发明实施例的目的,不是旨在限制本发明。
对本发明实施例进行进一步详细说明之前,对本发明实施例中涉及的名词和术语进行说明,本发明实施例中涉及的名词和术语适用于如下的解释。
1)网络请求,也称请求报文,是客户端向服务器获取数据响应的手段。网络请求的结构包括:请求方法(例如GET请求和POST请求)、接口/网络地址,用于表示需要获取的资源(例如网页数据)、协议版本、以及请求正文(即实体主体/数据体)等字段。
2)网络响应,也称为响应报文、响应结果、响应或返回结果,是指服务器根据网络请求向客户端返回的应答,返回的报文实体主体中携带客户端所请求的资源。
3)数据操作指令,由结构化查询语言(SQL,Structured Query Language)或非结构化查询语言(例如Cypher等)构成,是用于存取数据以及查询、更新和管理关系数据库系统的指令。
4)结构化查询语言,即SQL语言。SQL语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;SQL语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统可以使用相同的结构化查询语言作为数据输入与管理的接口。
5)SQL注入,或称SQL注入漏洞,是WEB漏洞中的一种,WEB漏洞的类型主要有SQL注入、越权以及远程命令执行等类型。SQL注入是WEB应用中存在的漏洞而不是WEB服务器或操作系统本身存在的漏洞。
SQL注入具体是指WEB应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在WEB应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。通俗来说,SQL注入是攻击者利用现有应用程序,将恶意SQL命令注入到后台数据库执行的能力,它可以通过在WEB表单中输入恶意SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行正常SQL语句。
6)脚本(Script),是一种批处理文件的延伸,是一种纯文本保存的程序,一般来说的计算机脚本程序是确定的一系列控制计算机进行运算操作动作的组合,在其中可以实现一定的逻辑分支等。脚本通常可以由应用程序临时调用并执行。各类脚本被广泛地应用于网页设计中,因为脚本不仅可以减小网页的规模和提高网页浏览速度,而且可以丰富网页的表现,如动画、声音等。
举例来说,当点击网页上的电子邮箱地址时能自动调用邮箱软件,就是通过脚本功能来实现的。
7)注入点,也称URL注入点,是可以实行注入数据操作指令的位置,通常是一个访问数据库的连接。根据注入点数据库的运行帐号的权限的不同,所得到的权限也不同,可以理解为网络应用中可触发SQL注入的参数。
8)POST请求,是网络请求所使用的请求方法的一种,规定网络请求提交的数据必须放在实体主体中。
9)接口,与服务器的网络地址对应,是服务器用于识别、定位和处理客户端所请求的资源(例如网页)的一种方式,服务器可以向客户端暴露多个可供访问的接口,每个接口与服务器的一个资源对应,资源可以使用统一资源定位符(URL,Uniform ResourceLocator)的方式来表示。
10)身份信息,也称为认证信息或登录态信息,是服务器为了辨别客户端的用户身份以跟踪会话,在客户端登录服务器并与服务器建立会话后由服务器存在客户端上的数据,由客户端暂时或永久保存,例如典型的用户信息的实现形式是储存在用户本地终端上的数据(cookie),包括:用户ID、会话ID(sid)和会话密钥(skey)等。
11)流量,客户端向服务器发送网络请求以请求服务器返回响应的行为。
12)流量重放,也称重放或回放,向待测试的服务器重新发送所采集的网络请求,以根据服务器返回的响应来检测是否存在漏洞。
13)网络应用,是通过客户端和后台的架构实现的服务,客户端提供服务的人机交互界面,后台运行与服务相关的服务。
14)数据包,相当于超文本传输协议(HTTP,Hypertext Transfer Protocol)网络请求;数据包中包含请求方式、用户访问的站点和路径、用户身份认证信息(例如,cookie)以及一些用户提交数据的信息。
15)区块链(Blockchain),是由区块(Block)形成的加密的、链式的交易的存储结构。
16)区块链网络(Blockchain Network),通过共识的方式将新区块纳入区块链的一系列的节点的集合。
17)账本(Ledger),是区块链(也称为账本数据)和与区块链同步的状态数据库的统称。其中,区块链是以文件系统中的文件的形式来记录交易;状态数据库是以不同类型的键(Key)值(Value)对的形式来记录区块链中的交易,用于支持对区块链中交易数据的快速查询。
18)智能合约(Smart Contracts),也称为链码(Chaincode)或应用代码,部署在区块链网络的节点中的程序,节点执行接收的交易中所调用的智能合约,来对状态数据库的键值对数据进行更新或查询的操作。
19)共识(Consensus),是区块链网络中的一个过程,用于在涉及的多个节点之间对区块中的交易达成一致,达成一致的区块将被追加到区块链的尾部,并被用于更新状态数据库。
本发明实施例提供一种网络应用的漏洞检测方法、装置、电子设备及计算机可读存储介质,能够高效且准确的检测网络应用中存在的漏洞。下面说明本发明实施例提供的网络应用的漏洞检测方法的示例性应用,本发明实施例提供的网络应用的漏洞检测方法可以由服务器实施,例如可以由一个服务器单独实施,也可以由多个服务器(即服务器集群)协同实施。
下面,以由一个服务器单独实施为例说明本发明实施例,参见图1,图1是本发明实施例提供的网络应用的漏洞检测系统100的架构示意图。其中,网络应用的漏洞检测系统100包括有:终端200、后台服务器300、数据库310、以及检测服务器400,将分别进行说明。
终端200用于运行客户端210,客户端210用于向用户提供网络应用服务的人机交互界面,可以响应于用户的操作,以向后台服务器300发送网络请求,并获得对应于网络请求的响应结果。
后台服务器300,是客户端210的后台服务器,用于接收客户端210发送的网络请求,并根据网络请求中的数据操作指令查询或修改与其对应的数据库310中存储的数据,从而获得数据库310返回的数据库信息,并将返回的数据库信息携带于响应结果中发送至客户端210。
检测服务器400,用于采集客户端210向后台服务器300发送的多个网络请求,并依次检测采集的多个网络请求,以确定每个网络请求在网络应用中的注入点、以及网络请求在注入点注入的数据操作指令的安全威胁。
下面将结合图1说明检测服务器400检测网络请求的具体过程。
在一些实施例中,首先检测服务器400将采集的包括多个网络请求的数据包进行分割,以得到不超出漏洞检测工具的处理能力的多个子数据包(将在下文详细说明对数据包进行分割的具体过程);然后检测服务器400将多个子数据包导入至漏洞检测工具中依次对每个子数据包进行检测,以获得检测结果;最后检测服务器400将检测结果以邮件的形式发送至测试人员,测试人员收到检测结果后,可以根据检测结果确定存在安全威胁的网络应用,并对存在安全威胁的网络应用进行修复。
在一些实施例中,检测服务器400中的漏洞检测工具对子数据包的检测过程是:检测服务器400将网络请求中能够注入数据操作指令的位置确定为注入点,向后台服务器300发送在注入点注入数据操作指令的网络请求,并接收后台服务器300响应网络请求而返回的第一响应结果;当第一响应结果表征后台服务器300响应成功时,修改数据操作指令,并在注入点注入修改后的数据操作指令,以得到测试网络请求;向后台服务器300发送测试网络请求,并接收后台服务器300响应测试网络请求而返回的第二响应结果;根据第二响应结果,确定网络请求在注入点注入的数据操作指令是否会构成安全漏洞。
接下来说明本发明实施例提供的用于进行网络应用的漏洞检测的电子设备的结构,电子设备可以是图1所示的检测服务器400,参见图2,图2是本发明实施例提供的电子设备500的结构示意图,图2所示的电子设备500包括:至少一个处理器510、存储器530和至少一个网络接口520。电子设备500中的各个组件通过总线系统540耦合在一起。可理解,总线系统540用于实现这些组件之间的连接通信。总线系统540除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图2中将各种总线都标为总线系统540。
处理器510可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
存储器530包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(ROM,Read Only Memory),易失性存储器可以是随机存取存储器(RAM,Random Access Memory)。本发明实施例描述的存储器530旨在包括任意适合类型的存储器。存储器530可选地包括在物理位置上远离处理器510的一个或多个存储设备。
在一些实施例中,存储器530能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。
操作系统531,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;
网络通信模块532,用于经由一个或多个(有线或无线)网络接口520到达其他计算设备,示例性的网络接口520包括:蓝牙、无线相容性认证(WiFi)、和通用串行总线(USB,Universal Serial Bus)等;
在一些实施例中,本发明实施例提供的网络应用的漏洞检测装置可以采用软硬件结合的方式实现,作为示例,本发明实施例提供的网络应用的漏洞检测装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本发明实施例提供的网络应用的漏洞检测方法,例如,硬件译码处理器形式的处理器可以采用一个或多个应用专用集成电路(ASIC,Application Specific Integrated Circuit)、DSP、可编程逻辑器件(PLD,ProgrammableLogic Device)、复杂可编程逻辑器件(CPLD,Complex Programmable Logic Device)、现场可编程门阵列(FPGA,Field-Programmable Gate Array)或其他电子元件。
在另一些实施例中,本发明实施例提供的网络应用的漏洞检测装置可以采用软件方式实现,图2示出了存储在存储器530中的网络应用的漏洞检测装置533,其可以是程序和插件等形式的软件,包括以下软件模块:采集模块5331、分割模块5332和检测模块5333,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。将在下文中说明各个模块的功能。
在另一些实施例中,本发明实施例提供的网络应用的漏洞检测装置可以采用硬件方式实现,作为示例,本发明实施例提供的网络应用的漏洞检测装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本发明实施例提供的网络应用的漏洞检测方法,例如,硬件译码处理器形式的处理器可以采用一个或多个应用专用集成电路(ASIC,Application Specific Integrated Circuit)、DSP、可编程逻辑器件(PLD,ProgrammableLogic Device)、复杂可编程逻辑器件(CPLD,Complex Programmable Logic Device)、现场可编程门阵列(FPGA,Field-Programmable Gate Array)或其他电子元件。
下面,以由图1中的检测服务器400实施本发明实施例提供的网络应用的漏洞检测方法为例说明本发明实施例。参见图3A,图3A是本发明实施例提供的网络应用的漏洞检测方法的流程示意图,将结合图3A示出的步骤进行说明。
在步骤S101中,检测服务器采集数据包。
在一些实施例中,数据包中包括网络应用(即上述的客户端210)发送至服务器(即上述的后台服务器300)的注入有数据操作指令的多个网络请求。数据操作指令由SQL语言或非结构化查询语言构成,是用于存取数据以及查询、更新和管理关系数据库系统的指令。
参见图3B,图3B是本发明实施例提供的网络请求的结构示意图。图3B中,网络请求由请求行、请求头部和请求正文三个部分组成。请求行包括请求方法、URL和协议版本三个部分;请求头部(或称首部)由“名/值”对组成,每行一对,名和值之间使用冒号分隔,请求头部中包括用户的身份信息(例如cookie)。
在一些实施例中,检测服务器通过执行采集脚本,调用渗透测试工具执行以下处理:拦截网络应用发送至服务器的注入有数据操作指令的多个网络请求;将拦截的多个网络请求以日志的方式进行记录,以得到数据包。
这里,渗透测试工具可以是Burp Suite,Burp Suite是用于攻击网络应用程序的集成平台。它包含了许多工具,并为这些工具设计了许多接口,以促进加快攻击应用程序的过程。采集脚本是自动化的脚本,检测服务器通过执行采集脚本,可以调用渗透测试工具自动执行上述处理过程。
作为示例,检测服务器通过执行采集脚本,首先调用Burp Suite的拦截器,拦截网络应用发送至服务器的注入有数据操作指令的多个网络请求;然后调用Burp Suite的重放器将拦截的多个网络请求以日志的方式进行记录,以得到数据包。
本发明实施例通过执行采集脚本调用渗透测试工具,能够快速而全面的采集网络请求,从而可以提高后续检测网络请求的效率。
在步骤S102中,检测服务器将数据包进行分割处理,以获得能够用于进行漏洞检测的多个子数据包。
在一些实施例中,检测服务器确定数据包中包括的多个分界线(或称分割线);根据多个分界线将数据包分割为多个子数据包,以使每个子数据包中包含的网络请求的数量不超出漏洞检测工具的处理能力。
这里,检测服务器通过渗透测试工具获取的数据包中包含多个网络请求,由于数据包是以日志的形式保存的,所以数据包中的每个网络请求之间是采用类似于“============”的分割线进行隔开的。并且后续在通过漏洞检测工具(例如:SQLMAP)对数据包检测时,由于漏洞检测工具的处理能力有限,一次只能处理包括有限个数的网络请求的数据包,因此需要对数据包进行分割处理,下面以漏洞检测工具一次只能处理包含一个网络请求的子数据包为例说明检测服务器对数据包的分割过程。
作为示例,检测服务器通过执行分割脚本,确定数据包中的分割线,并将分割线所隔开的网络请求作为子数据包中包含的网络请求,将分割后的子数据包(以TXT的格式)进行存储,其中,子数据包中存放的是包含可能存在安全威胁(例如SQL注入漏洞)的URL的网络请求。
举例来说,分割脚本如下:
本发明实施例通过执行分割脚本对数据包进行分割,可以获得符合漏洞检测工具的子数据包,能够使后续漏洞检测工具对子数据包顺利进行检测。
在步骤S103中,检测服务器依次检测每个子数据包中包括的网络请求,以确定网络请求在网络应用中的注入点、以及网络请求在注入点注入的数据操作指令的安全威胁。
在一些实施例中,检测服务器通过执行批量测试脚本,调用漏洞检测工具,并向漏洞检测工具发送多个子数据包中的任意一个子数据包,以通过漏洞检测工具检测(或称测试)所发送的子数据包中包括的网络请求:当查询到漏洞检测工具检测完成时,继续发送下一个子数据包,直至检测完毕每个子数据包中包括的网络请求,并存储检测结果。
这里,漏洞检测工具可以是任何可以检测网络请求的工具,例如,SQLMAP,SQLMAP是一个可以自动化检测SQL注入的渗透测试工具,其主要功能是扫描、发现并利用给定的URL的SQL注入漏洞,目前支持Access、mssql、mysql、oracle和postgresql等多种数据库类型。SQLMAP的功能包括数据库指纹、枚举、数据库提取、访问目标文件系统。SQLMAP包含五种注入技术,分别是报错注入、时间盲注、布尔注入、联合查询注入以及堆查询注入。
作为一个示例,检测服务器将子数据存放在本机(即宿主机),其中本机中运行有漏洞检测工具,通过本机中的漏洞检测工具,检测子数据包中包括的网络请求。
作为另一个示例,检测服务器将子数据包导入至虚拟机,其中,虚拟机中运行有漏洞检测工具;通过虚拟机中的漏洞检测工具,检测子数据包中包括的网络请求。
在虚拟机中检测子数据包具有以下优点:扫描测试子数据包时会占用本机资源,而且因为虚拟机中含有大量入侵和渗透的工具,这些测试环境可以是在测试之前已配置完成的,可以提高对子数据包的检测速度。并且如果在测试过程中发现含有SQL注入漏洞,可以更快更有效率的测试与SQL注入漏洞相关联的漏洞,例如,是否能提权、远程命令执行等操作。
参见图4A,图4A是本发明实施例提供的网络应用的漏洞检测方法的流程示意图,基于图3A,在步骤S103之后可以包括步骤S104至S106。
在步骤S104中,检测服务器获取检测结果。
在一些实施例中,可以是当漏洞检测工具每检测一个子数据包完成后获取一次检测结果,也可以是当所有的子数据包均检测完成后,一次性获取所有的检测结果。其中,检测结果包括存在安全漏洞的注入点以及被注入的数据操作指令。
作为示例,在步骤S103中检测服务器通过漏洞检测工具批量检测子数据包包括的网络请求后,会存储检测结果。在本步骤中,可以通过执行脚本获取之前存储的检测结果,可以是每检测一个子数据包完成后,通过执行脚本获取一次检测结果,也可以是当所有的子数据包均检测完成后,通过执行脚本一次性获取所有的检测结果,其中,所有的检测结果可以以日志的形式汇总至一个文件中。
在步骤S105中,检测服务器根据检测结果确定存在安全威胁的网络应用,并生成相应的测试报告。
在一些实施例中,测试报告中包括存在安全威胁(或称安全漏洞,例如SQL注入漏洞)的网络应用,还包含修复该漏洞的修复方案(建议)等。
作为示例,检测服务器通过执行脚本,提取检测结果中的有效字段,根据提取获得的有效字段确定存在安全威胁的网络应用,并进行解析,以确定修复该漏洞的方案。
在步骤S106中,检测服务器将检测结果和/或测试报告以邮件的形式进行发送。
在一些实施例中,检测服务器开启收发邮件的服务,并配置收件(人)邮箱的账号;将检测结果和/或测试报告以邮件的形式发送至收件邮箱。
作为示例,参见图4B,图4B是本发明实施例提供的开启收发邮件的服务的应用场景示意图,检测人员(运维人员)可以通过邮箱设置界面中的开启服务区域401开启收发邮件的服务。
作为示例,检测服务器配置邮件提醒脚本中收发件邮箱的账号,并执行邮件提醒脚本,以完成邮件提醒服务,其中,邮件提醒脚本是:
defsend_email():;开启收发邮件的服务
mail_host=”smtp.qq.com”;设置服务器
mail_user=”12345@qq.com”;设置用户名
mail_pass=”12345”;设置密码
sender=’12345@qq.com’;设置发件人邮箱
receivers=[‘123456@qq.com’];设置收件人邮箱
在一些实施例中,由于在步骤S103中,检测服务器是将子数据包导入至虚拟机中,并通过虚拟机中的漏洞检测工具检测子数据包中包括的网络请求。因此,检测服务器可以将邮件提醒脚本导入至虚拟机中,以使漏洞检测工具检测完成后,执行邮件提醒脚本来发送检测结果。
举例来说,参见图4C,图4C是本发明实施例提供的收发邮件的应用场景示意图。图4C中,检测完成后,会将检测结果和/或测试报告发送至邮件提醒脚本中配置的收件邮箱中。
本发明实施例中,通过在检测服务器中运行脚本,并在脚本中提前设置收件邮箱和发件邮箱,使得检测服务器在检测完成后,自动发送包含检测结果和测试报告的邮件至运维人员,可以使运维人员第一时间获得检测结果和测试报告,从而提高检测效率和人机交互的效率。
在一些实施例中,在步骤S105之后,还可以包括:检测服务器将检测结果和/或测试报告存储到区块链网络中,以使区块链网络根据存储的检测结果和/或测试报告响应针对网络应用的漏洞查询请求。
作为示例,检测服务器可以将检测结果和/或测试报告存储到区块链网络中;区块链网络中的智能合约可以预先接收订阅报告的交易(包括电子邮件地址),然后通过邮件服务器定期或实时发送检测结果和/或测试报告。
接下来以检测服务器将检测结果和/或测试报告上传至区块链网络保存,后台服务器在区块链网络中查询检测结果和/或测试报告为例,说明本发明实施例提供的网络应用的漏洞检测方法的示例性应用。参见图5,图5是本发明实施例提供的网络应用的漏洞检测方法的应用示意图,包括区块链网络600(示例性示出了共识节点610-1至共识节点610-3)、认证中心700和业务主体800/900,下面分别进行说明。
区块链网络600的类型是灵活多样的,例如可以为公有链、私有链或联盟链中的任意一种。以公有链为例,任何业务主体的电子设备(例如,检测服务器400或后台服务器300),都可以在不需要授权的情况下接入区块链网络600而成为客户端节点;以联盟链为例,业务主体在获得授权后其下辖的电子设备可以接入区块链网络600而成为客户端节点。
作为示例,当区块链网络600是联盟链时,业务主体800/900从认证中心700进行登记注册获得各自的数字证书,数字证书中包括业务主体的公钥、以及认证中心700对业务主体800/900的公钥和身份信息签署的数字签名,用来与业务主体针对交易的数字签名一起附加到交易(例如,用于上链存储检测结果和/或测试报告、或者查询检测结果和/或测试报告)中,并被发送到区块链网络600,以供区块链网络600从交易中取出数字证书和数字签名,验证交易的可靠性(即是否未经篡改)和发送消息的业务主体的身份信息,区块链网络600会根据身份进行验证,例如是否具有发起交易的权限。
在一些实施例中,客户端节点可以只作为区块链网络600的观察者,即提供支持业务主体发起交易功能,对于区块链网络600的共识节点610的功能,例如排序功能、共识服务和账本功能等,客户端节点可以缺省或者有选择性(例如,取决于业务主体的具体业务需求)地实施。从而,可以将业务主体的数据和业务处理逻辑最大程度迁移到区块链网络600中,通过区块链网络600实现数据和业务处理过程的可信和可追溯。
区块链网络600中的共识节点接收来自不同业务主体(例如图5中示出的业务主体800/900)的客户端节点提交的交易,执行交易以更新账本或者查询账本,执行交易的各种中间结果或最终结果可以返回业务主体的客户端节点中显示。
下面以检测服务器将检测结果和/或测试报告上传至区块链网络保存为例,说明区块链网络的示例性应用,参见图5,客户端节点810可以是检测服务器400。
首先,在客户端节点810设置检测结果和/或测试报告上链的逻辑,例如当获得检测结果和/或测试报告时,客户端节点810将检测结果和/或测试报告发送至区块链网络600时,生成对应的交易,交易包括:为了上链检测结果和/或测试报告而需要调用的智能合约、以及向智能合约传递的参数;交易还包括客户端节点810的数字证书、签署的数字签名,并将交易广播到区块链网络600中的共识节点610。
然后,区块链网络600中的共识节点610中接收到交易时,对交易携带的数字证书和数字签名进行验证,验证成功后,根据交易中携带的业务主体800的身份,确认业务主体800是否是具有交易权限,数字签名和权限验证中的任何一个验证判断都将导致交易失败。验证成功后签署共识节点610自己的数字签名(例如,使用节点610-1的私钥对交易的摘要进行加密得到),并继续在区块链网络600中广播。
最后,区块链网络600中的共识节点610接收到验证成功的交易后,将交易填充到新的区块中,并进行广播。区块链网络600中的共识节点610广播的新区块时,会对新区块进行验证,例如,验证新区块中交易的数字签名是否有效,如果验证成功,则将新区块追加到自身所存储的区块链的尾部,并根据交易的结果更新状态数据库,执行新区块中的交易:对于提交的存储检测结果和/或测试报告的交易,在状态数据库中添加包括检测结果和/或测试报告的键值对。
再以后台服务器在区块链网络600中查询检测结果和/或测试报告为例,说明区块链网络的示例性应用。参见图5,客户端节点910可以是后台服务器300。
在一些实施例中,客户端节点910在区块链网络600中能够查询的数据的类型,可以由共识节点610通过约束业务主体的客户端阶段能够发起的交易的权限来实现,当客户端节点910具有发起查询检测结果和/或测试报告的权限时,可以由客户端节点910生成用于查询检测结果和/或测试报告的交易并提交到区块链网络600中,从共识节点610执行交易以从状态数据库中查询相应的检测结果和/或测试报告,并返回客户端节点910。
作为示例,区块链网络600中的智能合约可以预先接收客户端节点910订阅报告的交易(包括电子邮件地址),然后定期或实时发送检测结果和/或测试报告至交易所提交的电子邮件地址中。例如,可以是每当获得检测结果和/或测试报告时就发送至交易所提交的电子邮件地址中;也可以是每间隔一定时间段(例如2小时或3天),就将该时间段获得的所有检测结果和/或测试报告发送至交易所提交的电子邮件地址中,以保证收件方获得检测结果和/或测试报告的可靠性。
参见图6A,图6A是本发明实施例提供的网络应用的漏洞检测方法的流程示意图,检测服务器通过漏洞检测工具检测子数据包中包括的网络请求的具体过程如下。
在步骤S201中,将网络请求中能够注入数据操作指令的位置确定为注入点。
这里,存在SQL注入漏洞的动态网页中可能只有一个参数,也可能有多个参数。该参数可能是整型参数,也可能是字符串型参数,只要是带有参数的动态网页且此动态网页访问了数据库,那么就有可能存在SQL注入漏洞。其中,SQL注入漏洞分为两种,一种是数字型注入漏洞,当输入的参数为整型时,例如ID、年龄、页码等,则可以认为是数字型注入漏洞。另一种是字符型注入漏洞,当输入参数为字符串时,则可以认为是字符型注入漏洞。
在一些实施例中,网络请求的请求行中包括URL,而在URL中可能存在注入数据操作指令的位置。漏洞检测工具将URL中能够注入数据操作指令的位置确定为注入点,例如,当网络请求中的URL为http://xxx/abc.php?id=1时,“id=1”中的“1”即为注入点,在该处可以将id值修改为其余数值。
在步骤S202中,向后台服务器发送在注入点注入数据操作指令的网络请求,并接收后台服务器响应网络请求而返回的第一响应结果。
参见图6B,图6B是本发明实施例提供的响应结果的结构示意图。图6B中,响应结果由状态行、响应头部和响应正文三个部分组成,其中,状态行包括协议版本、状态码(或称响应码)和状态码描述三个部分;响应头部由“名/值”对组成,每行一对,名和值之间使用冒号分隔。
这里,状态码为3位数字,200~299的状态码表征服务端(即服务器)接收成功,300~399的状态码表征资源重定向,400~499的状态码表征客户端请求出错,500~599的状态码表征服务端出错。
在步骤S203中,当第一响应结果表征后台服务器响应成功时,修改数据操作指令,并在注入点注入修改后的数据操作指令,以得到测试网络请求。
在一些实施例中,当第一响应结果中包括的状态码不为400~499和500~599时,表征后台服务器响应成功(即页面运行正常),此时可以修改数据操作指令,并在注入点注入修改后的数据操作指令,以得到测试网络请求。
作为示例,以原始网络请求中的URL是http://xxx/abc.php?id=x and 1=1为例,当第一响应结果中的状态码为200(表征后台服务器响应成功)时,将原始网络请求中的URL的“1=1”修改为“1=2”,从而获得修改后的URL(即http://xxx/abc.php?id=x and 1=2),将修改后的URL替换原始网络请求中的URL,其余信息保持不变,获得测试网络请求。
这里,当向后台服务器发送原始网络请求时,后台服务器执行SQL语句是select*from<表名>where id=x and 1=1,此时没有语法错误且逻辑判断为正确,所以响应成功。
在步骤S204中,向后台服务器发送测试网络请求,并接收后台服务器响应测试网络请求而返回的第二响应结果。
作为示例,向后台服务器发送测试网络请求(测试网络请求中的URL是http://xxx/abc.php?id=x and 1=2),并接收后台服务器响应测试网络请求而返回的第二响应结果。
这里,当向后台服务器发送测试网络请求时,后台服务器执行SQL语句是select*from<表名>where id=x and 1=2,根据后台服务器是否能成功执行SQL语句来判断网络请求在该注入点注入的数据操作指令是否会构成安全漏洞。
在步骤S205中,根据第二响应结果,确定网络请求在注入点注入的数据操作指令是否会构成安全漏洞。
在一些实施例中,当第二响应结果表征后台服务器响应失败时,确定网络请求在注入点注入的数据操作指令会构成安全漏洞。
作为示例,当第二响应结果中包括的状态码为400~499和500~599时,表征后台服务器响应失败(即页面运行不正常)。
举例来说,以测试网络请求中的URL是http://xxx/abc.php?id=x and 1=2为例,当向后台服务器发送测试网络请求时,后台服务器执行SQL语句是select*from<表名>where id=x and 1=2,此时没有语法错误但是逻辑判断为假,所以响应失败,因此,可以确定网络请求在注入点注入的数据操作指令会构成安全漏洞。
在一些实施例中,当第二响应结果表征后台服务器响应成功时,确定网络请求在该注入点注入的数据操作指令不会构成安全漏洞。
作为示例,当第二响应结果中包括的状态码不为400~499和500~599时,表征后台服务器响应成功(即页面运行正常)。
举例来说,以测试网络请求中的URL是http://xxx/abc.php?id=x and 1=2为例,当向后台服务器发送测试网络请求时,后台服务器执行SQL语句是sselect*from<表名>where id='x and 1=2',此时查询语句将and语句全部转换为了字符串,并没有进行and的逻辑判断,所以响应成功,因此,可以确定网络请求在注入点注入的数据操作指令不会构成安全漏洞。
本发明实施例中,漏洞检测工具首先确定网络请求中所有的注入点,然后分别针对这些注入点依次进行检测,可以避免漏检和误检等情况,从而提高检测的准确性。
下面继续结合图2说明本发明实施例提供的网络应用的漏洞检测装置533的实施为软件模块的示例性结构,在一些实施例中,如图2所示,存储在存储器530的网络应用的漏洞检测装置533中的软件模块可以包括:采集模块5331、分割模块5332和检测模块5333。
采集模块5331,用于采集数据包,其中,所述数据包中包括网络应用发送至服务器的多个网络请求,且所述网络请求中注入有数据操作指令;
分割模块5332,用于将所述数据包进行分割处理,以获得能够用于进行漏洞检测的多个子数据包;
检测模块5333,用于依次检测每个所述子数据包中包括的网络请求,以确定所述网络请求在所述网络应用中的注入点、以及所述网络请求在所述注入点注入的数据操作指令的安全威胁。
在一些实施例中,所述采集模块5331,还用于调用渗透测试工具以执行以下处理:拦截所述网络应用发送至所述服务器的注入有数据操作指令的多个网络请求;将拦截的多个网络请求以日志的方式进行记录,以得到所述数据包。
在一些实施例中,所述分割模块5332,还用于确定所述数据包中包括的多个分界线;根据所述多个分界线将所述数据包分割为多个子数据包,以使每个所述子数据包中包含的网络请求的数量不超出漏洞检测工具的处理能力。
在一些实施例中,所述检测模块5333,还用于向漏洞检测工具发送所述多个子数据包中的任意一个子数据包,以通过所述漏洞检测工具检测所发送的子数据包中包括的网络请求:当查询到所述漏洞检测工具检测完成时,继续向所述漏洞检测工具发送下一个子数据包,直至所述漏洞检测工具检测完毕每个所述子数据包中包括的网络请求,并存储检测结果。
在一些实施例中,所述检测模块5333,还用于通过所述漏洞检测工具执行以下处理:将所述网络请求中能够注入数据操作指令的位置确定为所述注入点;向所述服务器发送在所述注入点注入数据操作指令的网络请求,并接收所述服务器响应所述网络请求而返回的第一响应结果;当所述第一响应结果表征所述服务器响应成功时,修改所述数据操作指令,并在所述注入点注入修改后的数据操作指令,以得到测试网络请求;向所述服务器发送所述测试网络请求,并接收所述服务器响应所述测试网络请求而返回的第二响应结果;根据所述第二响应结果,确定所述网络请求在所述注入点注入的数据操作指令是否会构成安全漏洞。
在一些实施例中,所述检测模块5333,还用于当所述第二响应结果表征所述服务器响应失败时,确定所述网络请求在所述注入点注入的数据操作指令会构成安全漏洞;当所述第二响应结果表征所述服务器响应成功时,确定所述网络请求在所述注入点注入的数据操作指令不会构成安全漏洞。
在一些实施例中,所述检测模块5333,还用于将所述子数据包导入至虚拟机,其中,所述虚拟机中运行有所述漏洞检测工具;通过所述虚拟机中的所述漏洞检测工具,检测所述子数据包中包括的网络请求。
在一些实施例中,所述网络应用的漏洞检测装置533还包括:发送模块,用于将邮件提醒脚本导入至所述虚拟机中,以使所述漏洞检测工具检测完成后,执行所述邮件提醒脚本以发送所述检测结果。
在一些实施例中,所述发送模块,还用于获取检测结果,其中,所述检测结果包括存在安全漏洞的注入点以及被注入的数据操作指令;根据所述检测结果确定存在安全威胁的网络应用,并生成相应的测试报告;将所述测试报告以邮件的形式进行发送。
在一些实施例中,所述发送模块,还用于获取检测结果,其中,所述检测结果包括存在安全漏洞的注入点以及被注入的数据操作指令;根据所述检测结果确定存在安全威胁的网络应用,并生成相应的测试报告;将所述测试报告存储到区块链网络中,以使所述区块链网络根据存储的测试报告响应针对所述网络应用的漏洞查询请求。
在一些实施例中,所述发送模块,还用于开启收发邮件的服务,并配置收件邮箱的账号;将所述测试报告以邮件的形式发送至所述收件邮箱。
本发明实施例提供一种存储有可执行指令的计算机可读存储介质,其中存储有可执行指令,当可执行指令被处理器执行时,将引起处理器执行本发明实施例提供的网络应用的漏洞检测方法,例如,如图3A、图4A或图6A示出的网络应用的漏洞检测方法,计算机包括智能终端和服务器在内的各种计算设备。
在一些实施例中,计算机可读存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、闪存、磁表面存储器、光盘、或CD-ROM等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。
作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。
下面,将说明本发明实施例所提供的网络应用的漏洞检测方法应用于检测SQL注入漏洞的示例性应用。
在本发明实施例的实施过程中,发现相关技术存在以下问题:测试人员(即上述的运维人员)对SQL注入的检测存在一个耗时耗力的问题,即使在使用SQLMAP的情况下,检测每一个URL是否存在SQL注入仍需要手动运行测试,测试的效率很低。
针对上述问题,本发明实施例提出一种网络应用的漏洞检测方法,本发明实施例提供的网络应用的漏洞检测方法不仅能够批量测试SQL注入,而且在测试完成后具备邮件提醒功能,同时基于该方法进行了工程化的实现,有效提高了测试的效率。
本发明实施例提供的网络应用的漏洞检测方法首先通过Burp Suite的日志记录功能收集所有可能存在SQL注入的数据包;然后通过编写好的切割脚本将整体的数据包进行解析和切割处理,将切割后的数据包批量导入SQLMAP进行测试;最后通过执行邮件提醒脚本可以在自动化批量测试完后进行邮件提醒,以使测试人员收到邮件提醒后可以在第一时间分析结果。
本发明实施例的实现方案具体如下:
参见图7,图7是本发明实施例提供的网络应用的漏洞检测方法的流程示意图,下面结合图7具体进行说明。
在步骤S701中,根据测试人员的安装指令,执行Burp Suite、SQLMAP和Python3的安装操作。
这里,由于使用SQLMAP需要在Python的环境下运行,因此需要先安装Python3,然后在Python3安装完成后再安装SQLMAP。
在步骤S702中,使用Burp Suite的日志记录功能,抓取批量URL注入点的数据包,并进行保存。
在一些实施例中,参见图8A和图8B,图8A和图8B是Burp Suite的界面示意图。图8A和图8B中,首先通过Burp Suite的拦截器(Proxy)抓取URL注入点的数据包,然后在批量拦截到URL注入点的数据包之后,发送到Burp Suite的重放器(Repeater),触发重放按钮(Go)后记录日志。
其中,Burp Suite的拦截器(Proxy)是一个拦截HTTP/S的代理服务器,作为一个在浏览器和目标WEB应用程序之间的中间者,允许拦截、查看、修改在两个方向上的原始数据流;Burp Suite的重放器(Repeater)是一个靠手动操作来补发单独的HTTP请求,并分析应用程序响应的工具。
在步骤S703中,执行脚本,将日志中包含批量网络请求的数据包解析分割成包含一个网络请求的子数据包,并将分割后的子数据包导入至虚拟机中。
这里,因为日志记录功能保存的数据包中包含多个网络请求,其中,每个网络请求是通过分割线进行隔开,然而SQLMAP的扫描规制是只能对包含一个网络请求的子数据包进行扫描,否则无法识别,在这一步中可以通过执行脚本(即上述的分割脚本)将存储批量网络请求的数据包分割成包含一个网络请求的子数据包,然后通过SQLMAP进行扫描测试SQL注入漏洞,其中,脚本的具体原理就是通过分割线将数据包截取成多个子数据包然后保存到相应路径。
在虚拟机中检测子数据包具有以下优点:扫描测试子数据包时会占用本机资源,如果在测试过程中发现含有SQL注入漏洞,可以更快更有效率的测试与SQL注入漏洞相关联的漏洞,例如,是否能提权、远程命令执行等操作。
在步骤S704中,将批量测试脚本导入至虚拟机中,并修改脚本内的测试路径和保存结果路径。
这里,因为按照脚本的规制是对分割后的数据包(即上述的子数据包)使用SQLMAP进行扫描,并在扫描结束后保存扫描结果(即上述的检测结果),所以需要知道分割好的数据包的存放路径,并且需要自定义扫描结果的存放路径。
在步骤S705中,开启收发邮件账号的邮局协议版本3(POP3,Post OfficeProtocol Version 3)/简单邮件传输协议(SMTP,Simple Mail Transfer Protocol)服务,配置脚本中收发账号的邮箱。
在步骤S706中,运行脚本等待测试完成后进行邮件提醒。
在一些实施例中,当服务器批量测试运行结束后,会通过邮件提醒的方式,使测试人员第一时间获得分析结果(即上述的检测结果)。测试人员获得分析结果后,可以完成测试报告,其中,测试报告的内容包括该站点存在SQL注入漏洞的截图和分析,以及该漏洞的危害以及修复建议,然后可以通知该站点的相关人员针对漏洞进行修复。
综上所述,本发明实施例具有以下有益效果:
(1)通过本方案进行SQL注入检测,能够实现批量化的SQL注入检测,改善原有的单个注入漏洞检测场景,提升检测效率。
(2)通过执行采集脚本调用渗透测试工具,可以快速而全面的采集网络请求,从而可以提高后续检测网络请求的效率。
(3)通过执行分割脚本对数据包进行分割,可以获得符合漏洞检测工具的子数据包,能够使后续漏洞检测工具对子数据包顺利进行检测。
(4)通过在检测服务器中运行脚本,并在脚本中提前设置收件邮箱和发件邮箱,使得检测服务器在检测完成后,自动发送包含检测结果和测试报告的邮件至运维人员,可以使运维人员第一时间获得检测结果和测试报告,从而提高检测效率,以及提高了人机交互效率。
(5)通过漏洞检测工具首先确定网络请求中所有的注入点,然后分别针对这些注入点依次进行检测,可以避免漏检和误检等情况,从而提高检测的准确性。
(6)通过在虚拟机中检测子数据包,可以避免扫描测试子数据包时占用本机资源,而且如果在测试过程中发现含有SQL注入漏洞,可以更快更有效率的测试与SQL注入漏洞相关联的漏洞,例如,是否能提权、远程命令执行等操作。
以上所述,仅为本发明的实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本发明的保护范围之内。
Claims (11)
1.一种网络应用的漏洞检测方法,其特征在于,所述方法包括:
采集数据包,其中,所述数据包中包括网络应用发送至服务器的多个网络请求,且所述网络请求中注入有数据操作指令;
执行分割脚本,确定所述数据包中包括的多个分界线,以及
根据所述多个分界线将所述数据包分割为多个子数据包,以使每个所述子数据包中包含的网络请求的数量不超出漏洞检测工具的处理能力;
执行批量测试脚本,调用所述漏洞检测工具依次检测每个所述子数据包中包括的网络请求,以确定所述网络请求在所述网络应用中的注入点、以及所述网络请求在所述注入点注入的数据操作指令的安全威胁。
2.根据权利要求1所述的方法,其特征在于,所述采集数据包,包括:
调用渗透测试工具以执行以下处理:
拦截所述网络应用发送至所述服务器的注入有数据操作指令的多个网络请求;
将拦截的多个网络请求以日志的方式进行记录,以得到所述数据包。
3.根据权利要求1所述的方法,其特征在于,所述调用所述漏洞检测工具依次检测每个所述子数据包中包括的网络请求,包括:
向所述漏洞检测工具发送所述多个子数据包中的任意一个子数据包,以通过所述漏洞检测工具检测所发送的子数据包中包括的网络请求;
当查询到所述漏洞检测工具检测完成时,继续向所述漏洞检测工具发送下一个子数据包,直至所述漏洞检测工具检测完毕每个所述子数据包中包括的网络请求,并存储检测结果。
4.根据权利要求3所述的方法,其特征在于,所述通过所述漏洞检测工具检测所发送的子数据包中包括的网络请求,包括:
通过所述漏洞检测工具执行以下处理:
将所述网络请求中能够注入数据操作指令的位置确定为所述注入点;
向所述服务器发送在所述注入点注入数据操作指令的网络请求,并接收所述服务器响应所述网络请求而返回的第一响应结果;
当所述第一响应结果表征所述服务器响应成功时,修改所述数据操作指令,并在所述注入点注入修改后的数据操作指令,以得到测试网络请求;
向所述服务器发送所述测试网络请求,并接收所述服务器响应所述测试网络请求而返回的第二响应结果;
根据所述第二响应结果,确定所述网络请求在所述注入点注入的数据操作指令是否会构成安全漏洞。
5.根据权利要求4所述的方法,其特征在于,所述根据所述第二响应结果,确定所述网络请求在所述注入点注入的数据操作指令是否会构成安全漏洞,包括:
当所述第二响应结果表征所述服务器响应失败时,确定所述网络请求在所述注入点注入的数据操作指令会构成安全漏洞;
当所述第二响应结果表征所述服务器响应成功时,确定所述网络请求在所述注入点注入的数据操作指令不会构成安全漏洞。
6.根据权利要求3所述的方法,其特征在于,所述通过所述漏洞检测工具检测所发送的子数据包中包括的网络请求,包括:
将所述子数据包导入至虚拟机,其中,所述虚拟机中运行有所述漏洞检测工具;
通过所述虚拟机中的所述漏洞检测工具,检测所述子数据包中包括的网络请求;
在所述存储检测结果之后,所述方法还包括:
将邮件提醒脚本导入至所述虚拟机中,以使所述漏洞检测工具检测完成后,执行所述邮件提醒脚本以发送所述检测结果。
7.根据权利要求1至6任一项所述的方法,其特征在于,在所述确定所述网络请求在所述网络应用中的注入点、以及所述网络请求在所述注入点注入的数据操作指令的安全威胁之后,所述方法还包括:
获取检测结果,其中,所述检测结果包括存在安全漏洞的注入点以及被注入的数据操作指令;
根据所述检测结果确定存在安全威胁的网络应用,并生成相应的测试报告;
将所述测试报告发送到预先配置的收件邮箱的账号。
8.根据权利要求1至6任一项所述的方法,其特征在于,所述方法还包括:
获取检测结果,其中,所述检测结果包括存在安全漏洞的注入点以及被注入的数据操作指令;
根据所述检测结果确定存在安全威胁的网络应用,并生成相应的测试报告;
将所述测试报告存储到区块链网络中,以使所述区块链网络根据存储的测试报告响应针对所述网络应用的漏洞查询请求。
9.一种网络应用的漏洞检测装置,其特征在于,所述装置包括:
采集模块,用于采集数据包,其中,所述数据包中包括网络应用发送至服务器的多个网络请求,且所述网络请求中注入有数据操作指令;
分割模块,用于执行分割脚本,确定所述数据包中包括的多个分界线,以及根据所述多个分界线将所述数据包分割为多个子数据包,以使每个所述子数据包中包含的网络请求的数量不超出漏洞检测工具的处理能力;
检测模块,用于执行批量测试脚本,调用所述漏洞检测工具依次检测每个所述子数据包中包括的网络请求,以确定所述网络请求在所述网络应用中的注入点、以及所述网络请求在所述注入点注入的数据操作指令的安全威胁。
10.一种电子设备,其特征在于,包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现权利要求1至8任一项所述的网络应用的漏洞检测方法。
11.一种计算机可读存储介质,其特征在于,存储有可执行指令,用于引起处理器执行时,实现权利要求1至8任一项所述的网络应用的漏洞检测方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010124415.5A CN111353151B (zh) | 2020-02-27 | 2020-02-27 | 一种网络应用的漏洞检测方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010124415.5A CN111353151B (zh) | 2020-02-27 | 2020-02-27 | 一种网络应用的漏洞检测方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111353151A CN111353151A (zh) | 2020-06-30 |
CN111353151B true CN111353151B (zh) | 2023-06-16 |
Family
ID=71192327
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010124415.5A Active CN111353151B (zh) | 2020-02-27 | 2020-02-27 | 一种网络应用的漏洞检测方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111353151B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111770110A (zh) * | 2020-07-20 | 2020-10-13 | 杭州安恒信息技术股份有限公司 | 一种网络在线安全检测方法、系统、设备及可读存储介质 |
CN113254942A (zh) * | 2021-05-24 | 2021-08-13 | 浙江网商银行股份有限公司 | 数据处理方法、系统及装置 |
CN114567859B (zh) * | 2022-01-26 | 2023-10-13 | 银盛通信有限公司 | 一种移动转售系统机器卡批量套外限制设置的方法 |
CN115314255B (zh) * | 2022-07-11 | 2023-12-29 | 深信服科技股份有限公司 | 攻击结果的检测方法、装置、计算机设备和存储介质 |
CN117271376A (zh) * | 2023-11-22 | 2023-12-22 | 天津华来科技股份有限公司 | 一种基于SQLMap的接口SQL注入检测优化方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011050678A1 (zh) * | 2009-10-26 | 2011-05-05 | 中兴通讯股份有限公司 | 一种基于控制面与媒体面分离的网络架构实现的通信网络 |
JP2011258018A (ja) * | 2010-06-09 | 2011-12-22 | National Institute Of Information & Communication Technology | セキュリティサーバシステム |
CN104809404A (zh) * | 2015-04-17 | 2015-07-29 | 广东电网有限责任公司信息中心 | 一种信息安全攻防平台的数据层系统 |
CN108011898A (zh) * | 2018-01-30 | 2018-05-08 | 上海壹账通金融科技有限公司 | 漏洞检测方法、装置、计算机设备和存储介质 |
CN109413046A (zh) * | 2018-09-29 | 2019-03-01 | 深圳开源互联网安全技术有限公司 | 一种网络防护方法、系统及终端设备 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101312393B (zh) * | 2007-05-24 | 2011-08-31 | 北京启明星辰信息技术股份有限公司 | 一种sql注入漏洞检测方法及系统 |
CN101425937B (zh) * | 2007-11-02 | 2011-07-20 | 北京启明星辰信息技术股份有限公司 | 一种适于高速局域网环境的sql注入攻击检测系统 |
CN101350745B (zh) * | 2008-08-15 | 2011-08-03 | 北京启明星辰信息技术股份有限公司 | 一种入侵检测方法及装置 |
CN105205399B (zh) * | 2015-02-10 | 2018-06-26 | 中国移动通信集团广东有限公司 | 漏洞扫描工具的调度方法及其调度系统 |
CN109194677A (zh) * | 2018-09-21 | 2019-01-11 | 郑州云海信息技术有限公司 | 一种sql注入攻击检测方法、装置及设备 |
-
2020
- 2020-02-27 CN CN202010124415.5A patent/CN111353151B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2011050678A1 (zh) * | 2009-10-26 | 2011-05-05 | 中兴通讯股份有限公司 | 一种基于控制面与媒体面分离的网络架构实现的通信网络 |
JP2011258018A (ja) * | 2010-06-09 | 2011-12-22 | National Institute Of Information & Communication Technology | セキュリティサーバシステム |
CN104809404A (zh) * | 2015-04-17 | 2015-07-29 | 广东电网有限责任公司信息中心 | 一种信息安全攻防平台的数据层系统 |
CN108011898A (zh) * | 2018-01-30 | 2018-05-08 | 上海壹账通金融科技有限公司 | 漏洞检测方法、装置、计算机设备和存储介质 |
CN109413046A (zh) * | 2018-09-29 | 2019-03-01 | 深圳开源互联网安全技术有限公司 | 一种网络防护方法、系统及终端设备 |
Non-Patent Citations (2)
Title |
---|
SQL注入漏洞多等级检测方法研究;练坤梅;许静;田伟;张莹;;计算机科学与探索(第05期);全文 * |
网络协议的自动化模糊测试漏洞挖掘方法;李伟明;张爱芳;刘建财;李之棠;;计算机学报(第02期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111353151A (zh) | 2020-06-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111353151B (zh) | 一种网络应用的漏洞检测方法和装置 | |
CN106411578B (zh) | 一种适应于电力行业的网站监控系统及方法 | |
CN112383546B (zh) | 一种处理网络攻击行为的方法、相关设备及存储介质 | |
CN111600856B (zh) | 数据中心运维的安全系统 | |
CN110855676B (zh) | 网络攻击的处理方法、装置及存储介质 | |
US10848505B2 (en) | Cyberattack behavior detection method and apparatus | |
US9306889B2 (en) | Method and device for processing messages | |
US11086983B2 (en) | System and method for authenticating safe software | |
CN111400722B (zh) | 扫描小程序的方法、装置、计算机设备和存储介质 | |
CN108664793B (zh) | 一种检测漏洞的方法和装置 | |
CN107273748B (zh) | 一种基于漏洞poc实现安卓系统漏洞检测的方法 | |
CN112347485B (zh) | 多引擎获取漏洞并自动化渗透的处理方法 | |
US20100235917A1 (en) | System and method for detecting server vulnerability | |
CN109981653B (zh) | 一种web漏洞扫描方法 | |
US20120117644A1 (en) | System and Method for Internet Security | |
CN109688097A (zh) | 网站防护方法、网站防护装置、网站防护设备及存储介质 | |
CN110881051B (zh) | 安全风险事件处理方法、装置、设备及存储介质 | |
CN107896219B (zh) | 一种网站脆弱性的检测方法、系统及相关装置 | |
CN108768960A (zh) | 病毒检测方法、装置、存储介质及计算机设备 | |
CN105550593A (zh) | 一种基于局域网的云盘文件监控方法和装置 | |
CN110059007B (zh) | 系统漏洞扫描方法、装置、计算机设备及存储介质 | |
CN111510463B (zh) | 异常行为识别系统 | |
CN113098852B (zh) | 一种日志处理方法及装置 | |
CN113596014A (zh) | 访问漏洞检测方法及其装置、电子设备 | |
CN112836186A (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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40024371 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |