CN116702146A - 一种Web服务器的注入漏洞扫描方法和系统 - Google Patents

一种Web服务器的注入漏洞扫描方法和系统 Download PDF

Info

Publication number
CN116702146A
CN116702146A CN202310980065.6A CN202310980065A CN116702146A CN 116702146 A CN116702146 A CN 116702146A CN 202310980065 A CN202310980065 A CN 202310980065A CN 116702146 A CN116702146 A CN 116702146A
Authority
CN
China
Prior art keywords
injection
request
parameters
access data
historical access
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.)
Granted
Application number
CN202310980065.6A
Other languages
English (en)
Other versions
CN116702146B (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.)
Tianyi Safety Technology Co Ltd
Original Assignee
Beijing Ideal Township Network Technology 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 Beijing Ideal Township Network Technology Co ltd filed Critical Beijing Ideal Township Network Technology Co ltd
Priority to CN202310980065.6A priority Critical patent/CN116702146B/zh
Publication of CN116702146A publication Critical patent/CN116702146A/zh
Application granted granted Critical
Publication of CN116702146B publication Critical patent/CN116702146B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/23Clustering techniques
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Evolutionary Biology (AREA)
  • Evolutionary Computation (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明属于信息安全技术领域,具体涉及一种Web服务器的注入漏洞扫描方法和系统。本发明公开的注入漏洞扫描方法,该方法包括:获取服务器的历史访问数据集;对历史访问数据集进行聚类,得到含有标签的多个历史访问数据子集;对历史访问数据子集中的历史访问地址进行解析,获得注入用模板和注入参数;根据注入用模板和注入参数发起构建注入测试集;执行注入测试集中的注入测试,基于注入测试的响应分析是否存在注入漏洞。本发明可以实现对应用服务器侧漏洞的分析。

Description

一种Web服务器的注入漏洞扫描方法和系统
技术领域
本发明属于信息安全技术领域,具体涉及一种Web服务器的注入漏洞扫描方法和系统。
背景技术
结构化查询语言(Structured Query Language,缩写:SQL),是一种关系型数据库查询的标准编程语言,用于存取数据以及查询、更新、删除和管理关系型数据库(即SQL是一种数据库查询语言),应用服务器常使用如MySQL、SQLServer、Oracle、PG等常用关系型数据,通过驱动或者数据源的方式对相应的数据进行访问。
SQL注入(SQL Injection)是一种常见的Web安全漏洞,形成的主要原因是Web应用程序在接收相关数据参数时未做好过滤,将其直接带入到数据库中查询,导致攻击者可以拼接执行构造的SQL语句。对于SQL注入的避免可以通过预编译来进行,但是由于应用未遵循规范时,为服务器引入了漏洞。
发明内容
本发明的一个目的在于解决至少一个前述的问题,提供一种用于Web服务器的注入漏洞扫描方法。本发明的另一个目的在于提供Web服务器的注入漏洞扫描系统。
根据本发明的一个方面,提供了一种Web服务器的注入漏洞扫描方法,包括:
获取服务器的历史访问数据集;
对历史访问数据集进行聚类,得到含有标签的多个历史访问数据子集;
对历史访问数据子集中的历史访问地址进行解析,获得注入用模板和注入参数;
根据注入用模板和注入参数发起构建注入测试集;
执行注入测试集中的注入测试,基于注入测试的响应分析是否存在注入漏洞。
根据本发明的一个实施例,所述对历史访问数据集进行聚类,得到含有标签的多个历史访问数据子集包括:
获取历史访问数据包括的请求头信息,根据请求头信息获取请求地址、请求时间、请求方式、请求参数、请求头和浏览器信息;
根据请求头和浏览器信息对请求来源进行聚类,获得聚类标签和与聚类标签对应的历史访问数据子集。
根据本发明的一个实施例,所述对历史访问数据子集中的历史访问地址进行解析,获得注入用模板和注入参数包括:
对历史访问地址进行解析,获得请求地址和与请求地址对应的请求参数;所述请求参数包括可变请求参数和固定请求参数;
根据请求方式、请求头和请求时间获取请求地址之间的关系图,以及请求地址对应的请求参数之间的关联度;
在关联度大于阈值时,根据请求地址、请求头和请求方式构建注入用模板,根据请求地址设置注入用模板的注入参数。
根据本发明的一个实施例,所述基于注入测试的响应分析是否存在注入漏洞包括:
根据注入测试所包含变异字段对注入测试的响应值进行分组,按照响应时长对注入测试所使用变异字段筛选变异方式的异常值,根据变异方式的异常值确定是否存在注入漏洞。
根据本发明的一个实施例,在根据变异方式的异常值确定注入漏洞存在时,获取注入漏洞对应的参数;
根据注入漏洞对应的参数确定关联参数;
根据注入地址确定关联的请求地址;
根据关联的请求地址和关联参数构建拓展注入测试集。
根据本发明的一个实施例,执行拓展注入测试集中的注入测试,根据拓展注入测试集所包含变异字段对拓展注入测试的响应值进行分组,按照响应时长对注入测试所使用变异字段筛选变异方式的异常值,根据变异方式的异常值确定是否存在注入漏洞。
根据本发明的一个实施例,所述关联度根据如下方式确定:
在请求地址对应的历史访问数据集获取和请求地址关联的参数;
获取出现频次最高的m个参数名称作为基准参数集;
按照和基准参数集同时出现的概率获得请求参数的关联度。
根据本发明的第二个方面,还提供了一种Web服务器的注入漏洞扫描系统,包括:
历史数据获取单元,获取服务器的历史访问数据集;
历史数据子集获取单元,对历史访问数据集按照来源和浏览器进行二次聚类,得到含有标签的多个历史访问数据子集;
注入模式匹配单元,用于对历史访问数据子集中的历史访问地址进行解析,获得注入用模板和注入参数;
注入测试集构建单元,用于根据注入用模板和注入参数发起构建注入测试集;
漏洞获取单元,用于执行注入测试集中的注入测试,基于注入测试的响应获得漏洞。
本发明可以实现基于历史请求的注入用漏洞的探测,通过对历史请求和相应参数的分析,构建其请求的关联,避免无效的筛选。
附图说明
图1、本发明一个实施例中的注入漏洞扫描方法流程示意图;
图2、本发明一个实施例中的注入漏洞扫描系统结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在以下的说明中,本申请的具体实施例将参考由一部或多部计算机所执行的步骤及符号来说明,除非另有述明。因此,这些步骤及操作将有数次提到由计算机执行,本申请实施例所指的计算机执行包括了由代表了以一结构化型式中的数据的电子信号的计算机处理单元的操作。此操作转换该数据或将其维持在该计算机的内存系统中的位置处,其可重新配置或另外以本领域测试人员所熟知的方式来改变该计算机的运作。该数据所维持的数据结构为该内存的实体位置,其具有由该数据格式所定义的特定特性。但是,本申请原理以上述文字来说明,其并不代表为一种限制,本领域测试人员将可了解到以下所述的多种步骤及操作亦可实施在硬件当中。
本申请的原理使用许多其它泛用性或特定目的运算、通信环境或组态来进行操作。所熟知的适合用于本申请的运算系统、环境与组态的范例可包括(但不限于)手持电话、个人计算机、服务器、多处理器系统、微电脑为主的系统、主架构型计算机、及分布式运算环境,其中包括了任何的上述系统或装置。
本申请中的术语“第一”、“第二”和“第三”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。
请参考图1,一种Web服务器的注入漏洞扫描方法,包括:
获取服务器的历史访问数据集;
对历史访问数据集进行聚类,得到含有标签的多个历史访问数据子集;
对历史访问数据子集中的历史访问地址进行解析,获得注入用模板和注入参数;
根据注入用模板和注入参数发起构建注入测试集;
执行注入测试集中的注入测试,基于注入测试的响应分析是否存在注入漏洞。
本申请提供的渗透测试方法,可以应用于网络安全领域应用环境中,如根据历史数据进行潜在漏洞的分析。
本发明的目的为实现智能识别和自动分析漏洞结果,并进行自动化的漏洞分析和关联漏洞的发现,从而帮助应用服务的提供者提高安全信息。
常规的渗透借助于工具进行漏洞的发现;以及使用sqlmap、xss平台、各种漏洞的exp、cookie编辑插件、漏洞攻击脚本进行攻击。目前,对于依赖框架的应用服务器,多数SQL注入相关的漏洞出现的频率已经大为降低。
本发明对于服务器注入漏洞的扫描基于如下的假定:
1.所有的请求都是恶意的,即使是用户通过点击式操作发起的请求,也可能由于网路或者引用本身存在的问题引入致命性的恶意语句;
2.所有的漏洞都是高风险的,即使考虑自动化工具可以提高注入成功的机率和效率,但是专业的安全人员可以依据经验获得更好的安全收益;
3.漏洞不一定按照不安全的方式被呈现,如和前台相关的信息可以通过预编译被安全处理,但是后台部分仍然可能存在因字符串拼接引入的安全漏洞。
基于此,本发明主要遵循如下的策略进行漏洞的扫描:
1.根据服务器的历史访问数据集分析用户对于服务器的访问记录;
2.根据访问记录对访问来源进行分类;
3.根据每个类别下的访问记录构建测试模板;
4.使用测试模板构建测试数据集;
5.执行测试以排查和发现漏洞。
本发明涉及应用服务器和数据库服务器。应用服务器可以和数据库服务器设置于同一物理机,在设置于同一物理机时,其可以未通过容器镜像的方式提供,或者直接安装于物理机;所述数据库服务器可以安装在物理机或者物理上设置的虚拟机中。应用服务器也可以和数据库服务器设置于不同的物理机或虚拟机中,此处的物理机包括实体的服务器或者云服务器,在以云服务形式提供时,相应的物理机和云服务通过云服务商提供的方式进行通信。
下面对本发明的策略进行解释。
首先,本发明根据服务器的历史访问记录获得正常用户以及恶意用户对于服务器的请求。用户发起HTTP请求时,通常包括请求地址、请求参数、请求头和请求信息;其中请求地址为服务器所处理的资源地址,其包括静态和动态的资源,服务器侧可以通过验证请求参数、请求头和请求方式确定是否为预期的请求。
例如,常规的Tomcat服务器对于访问服务器提供了如下的默认请求记录格式192.168.1.10 - - [01/Jun/2022:09:27:44 +0800] "GET /a/js/jquery-ui.js HTTP/1.1" 304 - 192.168.1.10 - - [01/Jun/2022:09:27:44 +0800] "GET /favicon.icoHTTP/1.1" 200 21630 192.168.1.10 - - [01/Jun/2022:09:27:47 +0800] "POST /a/App HTTP/1.1" 200 105
其包含了请求源地址、时间、请求方式和响应。
如果配置Tomcat记录其他参数信息,例如在tomcat的配置文件server.xml新增配置 <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs-sever-id-ADJ3" prefix="localhost_access_log." suffix=".txt" pattern="%h%l %u %t "%r" [%{postdata}r] %s %{Referer}i %{User-Agent}i %T %b" />
则可以在日志内输出如下的信息;访问者的IP、本地服务器的IP、发送信息的字节数、服务器的名称、访问者的协议、访问的方式(GET还是POST)、本地接收访问的端口、查询字符串、请求的方法和URL、http的响应状态码、用户的session ID、请求时间、是否为验证的访问者、访问的URL地址、服务器名称和请求消耗的时间等信息,具体请参考ApacheTomcat开发者资源。
在使用预编译的情况下,无法通过注入的方式进行嗅探,常见的SQL注入对于和前台相关的实时数据并不是有效的。例如,应用服务器使用JDK开发时,如使用了MyBatis或者JPA,发生SQL注入的可能性就降低了很多,而如在底层使用PreparedStatement时,可以较大程度规避风险,然而部分后台处理数据时,由于所处的网络环境较为安全,开发者仍然可能使用了拼接的SQL执行查询,特别是部分无法参数化呈现的如表名和库名字段,这就造成了前台数据无风险,但是后台处理数据存在风险的情形,相应的风险如附图2所示;即部分不安全的数据在即时处理时可能不会产生直接的输出,但是该数据会导致服务器在安全的区内因不安全的代码产生风险;另外,如果用户的查询正常,且参数被过滤了恶意的字符,但是其仍然可能导致数据库发生卡顿,在发生异常时,仍然可能导致SQL查询语句的泄露。
我们发现,在存在上述的缺陷时,对于数据库的操作会影响实际响应时间,造成实际响应时间变长的原因为实际查询并未按照预定索引进行查询或执行了非预期的查询,从而使得响应时长变大。此外,部分查询的参数依据所提供多个参数不同选用了不同的查询语句,这导致了部分查询差异的造成和请求有关联。
因此,通过获取历史数据并对其分类,以获得响应数据的关联性,以确定在提供参数不同时,对于确定潜在注入源具有较好作用。在对历史数据分类后,可以获得历史正常范围的请求数据以及异常数据,并基于此构建注入用模板和注入参数;并基于此构建注入测试集,并基于此分析是否存在漏洞。
本发明的一个实施例,其具体包括:
(101)获取服务器的历史访问数据集;
(102)对历史访问数据集按照来源和浏览器进行聚类,得到含有标签的多个历史访问数据子集;
(103)对历史访问数据子集中的历史访问地址进行解析,获得注入用模板和注入参数;
(104)根据注入用模板和注入参数发起构建注入测试集;
(105)执行注入测试集中的注入测试,基于注入测试的响应获得漏洞。
步骤101中历史访问数据基于服务器的日志获得,服务器的日志为根据请求而生成,并保存在单独的日志文件中,该日志在每8个小时后会写入新的文件,通过读取日志可以至少获得请求地址、请求参数、请求头和请求信息。
步骤102中,使用K-means方法进行聚类,对于浏览器按照浏览器所属的公司或者软件系进行,例如Chrome、Edge、Firefox、IE以及国产浏览器等,对于同一公司的浏览器,可以进一步根据浏览器的核心,例如js引擎版本或者内核版本,进行分类。使用K-means方法对请求的来源,即User-Agent进行聚类,得到的浏览器版本为聚类标签,每个聚类标签对应了一组请求。对于User-Agent内包含非法字符的,去除非法字符(如‘后)后进行聚类。
步骤103中,对请求的信息进行解析,解析出参数出现的频率以及潜在的取值,例如是否取值为字符串、整数以及长度,可用的参数名称、参数是以URL参数形式提供还是通过POST的形式提供,从而可以获得服务器历史处理过的请求方式、请求头和请求参数信息。
步骤104中,根据注入模板和注入参数获得一个测试集;该测试集可以是动态的,也可以是一次性生成的;
步骤105中,执行注入测试集,该注入测试集可以通过自动化测试工具进行,如采用SSQLInjection、Sqlmap、Pangolin、Havij等自动化工具进行渗透测试,或在参数确定或者变异规则确定的情况下使用如编程语言中提供HttpComponent库或者HttpClient建立连接和发起请求,在涉及js脚本执行时,还应当配置脚本解释执行器。
在获取得到的服务器响应存在明显异常时,例如文件尺寸偏大或者文件寸尺过小时,认为输入的参数引起了服务器或者数据库的异常,在此基础上进一步确认是否存在漏洞。
为了确保渗透可以进行,构架和主服务器的备份服务器和数据库服务器,在备份服务器侧关闭了token验证、Cookies验证、请求方式和超时设置,以确保渗透测试不因验证而被拒绝或者引导至蜜罐。
根据本发明的一个实施例,所述对历史访问数据集进行聚类,得到含有标签的多个历史访问数据子集包括:
获取历史访问数据包括的请求头信息,根据请求头信息获取请求地址、请求时间、请求方式、请求参数、请求头和浏览器信息;
根据请求头和浏览器信息对请求来源进行聚类,获得聚类标签和与聚类标签对应的历史访问数据子集。
本发明的另外一个实施例,其具体包括:
(101)获取服务器的历史访问数据集;
(102)对历史访问数据集按照浏览器的核心进行聚类,得到含有标签的多个历史访问数据子集;
(103)对历史访问数据子集中的历史访问地址进行解析,获得注入用模板和注入参数;
(104)根据注入用模板和注入参数发起构建注入测试集;
(105)执行注入测试集中的注入测试,基于注入测试的响应获得漏洞。
步骤101中历史访问数据基于服务器的日志获得,服务器的日志为根据请求而生成,并保存在单独的日志数据库中,日志数据库中按照请求时的信息保存除文件正文外的信息,且保存时是通过预编译的脚本进行执行的,日志中不存在因恶意访问造成的数据异常。通过读取日志可以至少获得请求地址、请求参数、请求头和请求信息。
步骤102中,使用K-means方法进行聚类,对于浏览器按照浏览器的核心进行分类,例如Chrome和2022年后版本的Edge属于同一类型浏览器,而Firefox属于单独的一类,国产的浏览器按照其选用的引擎类型划分。使用K-means方法对请求的来源,即User-Agent进行聚类,得到的浏览器版本为聚类标签,每个聚类标签对应了一组请求。对于User-Agent内包含非法字符的,去除非法字符(如‘后)后进行聚类。
步骤103中,对请求的信息进行解析,解析出参数出现的频率以及潜在的取值,例如是否取值为字符串、整数以及长度,可用的参数名称、参数是以URL参数形式提供还是通过POST的形式提供,从而可以获得服务器历史处理过的请求方式、请求头和请求参数信息。在进行解析处理时,按照如下方式确定请求方式:按照IP来源对请求进行分组,每一组同一请求地址按照GET或POST比例最高的方式确定请求方式,获得IP和请求方式的键值组,对所有IP来源和请求地址进行统计,获得针对不同地址来源的推测请求方式,此方式可以避免恶意用户尝试时引起的数据失真。
步骤104中,根据注入模板和注入参数获得一个注入测试集;该注入测试集可以是动态的,也可以是一次性生成的;
步骤105中,执行测试集,该测试集可以通过自动化测试工具进行,如采用SSQLInjection、Sqlmap、Pangolin、Havij等自动化工具进行渗透测试,或在参数确定或者变异规则确定的情况下使用如编程语言中提供HttpComponent库或者HttpClient建立连接和发起请求,在涉及js脚本执行时,还应当配置脚本解释执行器。
在获取得到的服务器响应存在明显异常时,例如文件尺寸偏大或者文件寸尺过小时,认为输入的参数引起了服务器或者数据库的异常。
根据本发明的一个实施例,所述对历史访问数据子集中的历史访问地址进行解析,获得注入用模板和注入参数包括:
对历史访问地址进行解析,获得请求地址和与请求地址对应的请求参数;所述请求参数包括可变请求参数和固定请求参数;
根据请求方式、请求头和请求时间获取请求地址之间的关系图,以及请求地址对应的请求参数之间的关联度;
在关联度大于阈值时,根据请求地址、请求头和请求方式构建注入用模板,根据请求地址设置注入用模板的注入参数。
本发明的第三个实施例,其具体包括:
(101)获取服务器的历史访问数据集;
(102)对历史访问数据集按照浏览器的核心进行聚类,得到含有标签的多个历史访问数据子集;
(103)对历史访问数据子集中的历史访问地址进行解析,在解析过程中构建请求地址之间的关系图,以及请求地址对应的请求参数之间的关联度,在关联度大于阈值时,获得注入用模板和注入参数;
(104)根据注入用模板和注入参数发起构建注入测试集;
(105)执行注入测试集中的注入测试,基于注入测试的响应获得漏洞。
步骤101中历史访问数据基于服务器的日志获得,服务器的日志为根据请求而生成,并保存在单独的日志文件中。
步骤102中,使用K-means方法进行聚类,聚类时仅考虑含有不合格User-Agent的请求,例如缺少此头部信息或者头部信息中含有非法字符的,如“Mozilla/5.0(compatible; MSIE 11.0; Windows NT 6.1; Win64; x64; Trident/5.0)'+(select *from(select(sleep(10)))m)+' Accept-Encoding: gzip, deflate”中含有非法查询,但是其头部正确。对于浏览器按照正确的浏览器的核心进行分类,例如Chrome和2022年后版本的Edge属于同一类型浏览器,而Firefox属于单独的一类,国产的浏览器按照其选用的引擎类型划分。使用K-means方法对请求的来源,即User-Agent进行聚类,得到的浏览器版本为聚类标签,每个聚类标签对应了一组请求。对于User-Agent内包含非法字符的,去除非法字符(如‘后)后进行聚类。
步骤103中,对请求的信息进行解析,解析出参数出现的频率以及潜在的取值,例如是否取值为字符串、整数以及长度,可用的参数名称、参数是以URL参数形式提供还是通过POST的形式提供,从而可以获得服务器历史处理过的请求方式、请求头和请求参数信息。在进行解析处理时,按照地址进行分组解析;对于按照地址获得的任一组请求,获取其所有参数,按照出现的频次(URL参数或请求体内)确定出现的位置和概率,并且约定大于10%几率出现的参数为固定参数,低于此比例为可变参数;对不同地址的请求参数进行比对,如果参数名称相同,则认为两个地址的参数之间存在关联。进一步的,针对一个IP来源,如果地址之间的响应间隔低于阈值,如2秒,则认为存在关联;如果不同地址之间参数相似比,如页面a中名称为A参数出现几率为m,页面b中名称为A参数出现几率为n,则响应间隔为m/n,m<n,n>0。基于此确认所有使用的参数,以及关联性的页面。
步骤104中,根据注入模板和注入参数获得一个注入测试集;该注入测试集可以是动态的,也可以是一次性生成的;
步骤105中,执行测试集,该测试集可以通过自动化测试工具进行,如采用SSQLInjection、Sqlmap、Pangolin、Havij等自动化工具进行渗透测试,或在参数确定或者变异规则确定的情况下使用如编程语言中提供HttpComponent库或者HttpClient建立连接和发起请求,在涉及js脚本执行时,还应当配置脚本解释执行器。
在获取得到的服务器响应存在明显异常时,例如文件尺寸偏大或者文件寸尺过小时,认为输入的参数引起了服务器或者数据库的异常。
根据本发明的一个实施例,所述基于注入测试的响应分析是否存在注入漏洞包括:
根据注入测试所包含变异字段对注入测试的响应值进行分组,按照响应时长对注入测试所使用变异字段筛选变异方式的异常值,根据变异方式的异常值确定是否存在注入漏洞。
本发明的另一个实施例,其具体包括:
(101)获取服务器的历史访问数据集;
(102)对历史访问数据集按照浏览器的核心进行聚类,得到含有标签的多个历史访问数据子集;
(103)对历史访问数据子集中的历史访问地址进行解析,在解析过程中构建请求地址之间的关系图,以及请求地址对应的请求参数之间的关联度,基于关联度获得注入用模板和注入参数;根据注入测试所包含变异字段对注入测试的响应值进行分组,按照响应时长对注入测试所使用变异字段筛选变异方式的异常值,根据变异方式的异常值确定是否存在注入漏洞;
(104)根据注入用模板和注入参数发起构建注入测试集;
(105)执行注入测试集中的注入测试,基于注入测试的响应获得漏洞。
步骤101中历史访问数据基于服务器的日志获得,服务器的日志为根据请求而生成,并保存在单独的日志文件中。
步骤102中,使用K-means方法进行聚类,对于浏览器按照浏览器的核心进行分类,例如Chrome和2022年后版本的Edge属于同一类型浏览器,而Firefox属于单独的一类,国产的浏览器按照其选用的引擎类型划分。使用K-means方法对请求的来源,即User-Agent进行聚类,得到的浏览器版本为聚类标签,每个聚类标签对应了一组请求。对于User-Agent内包含非法字符的,去除非法字符(如‘后)后进行聚类。
步骤103中,对请求的信息进行解析,解析出参数出现的频率以及潜在的取值,例如是否取值为字符串、整数以及长度,可用的参数名称、参数是以URL参数形式提供还是通过POST的形式提供,从而可以获得服务器历史处理过的请求方式、请求头和请求参数信息。在进行解析处理时,按照地址进行分组解析;对于按照地址获得的任一组请求,获取其所有参数,按照出现的概率(URL参数或请求体内)确定出现的位置和概率,并且约定大于10%几率出现的参数为固定参数,低于此比例为变异参数;对不同地址的请求参数进行比对,如果参数名称相同,则认为两个地址的参数之间存在关联。对包含变异字段的历史请求进行分析,按照其所包含的变异字段数目求均值,分别获得请求地址包含变异字段对应的响应均值,之后筛选出响应均值过大的变异字段,基于常见注入漏洞筛选注入策略。通过此方式,可以避免无效无目的的注入测试,节省渗透时间。
步骤104中,根据注入模板和注入参数获得一个测试集;该测试集可以是动态的,也可以是一次性生成的;
步骤105中,执行测试集,该测试集可以通过自动化测试工具进行,如采用SSQLInjection、Sqlmap、Pangolin、Havij等自动化工具进行渗透测试,或在参数确定或者变异规则确定的情况下使用如编程语言中提供HttpComponent库或者HttpClient建立连接和发起请求,在涉及js脚本执行时,还应当配置脚本解释执行器。
在获取得到的服务器响应存在明显异常时,例如文件尺寸偏大或者文件寸尺过小时,认为输入的参数引起了服务器或者数据库的异常。
而如果按照文件大小无法区分出是否发生了攻击时,则可以根据响应时间进行判断,即从发起请求到收到实际报文结束。之后对请求所涉及的参数进行分析,按照请求地址获得的任一组请求,按照其所包含的变异字段数目求均值,分别获得请求地址包含变异字段对应的响应均值,之后筛选出响应均值过大的变异字段和源地址,基于源地址获得其请求,基于该地址的请求分析是否存在注入漏洞。
本发明的另一个实施例,其具体包括:
(101)获取服务器的历史访问数据集;
(102)对历史访问数据集按照浏览器的核心进行聚类,得到含有标签的多个历史访问数据子集;
(103)对历史访问数据子集中的历史访问地址进行解析,在解析过程中构建请求地址之间的关系图,以及请求地址对应的请求参数之间的关联度,基于关联度获得注入用模板和注入参数;
(104)根据注入用模板和注入参数发起构建注入测试集;
(105)执行注入测试集中的注入测试,基于注入测试的响应获得漏洞。
步骤101中历史访问数据基于服务器的日志获得,服务器的日志为根据请求而生成,并保存在单独的日志文件中。
步骤102中,使用K-means方法进行聚类,对于浏览器按照浏览器的核心进行分类,例如Chrome和2022年后版本的Edge属于同一类型浏览器,而Firefox属于单独的一类,国产的浏览器按照其选用的引擎类型划分。使用K-means方法对请求的来源,即User-Agent进行聚类,得到的浏览器版本为聚类标签,每个聚类标签对应了一组请求。
步骤103中,对请求的信息进行解析,解析出参数出现的频率以及潜在的取值,例如是否取值为字符串、整数以及长度,可用的参数名称、参数是以URL参数形式提供还是通过POST的形式提供,从而可以获得服务器历史处理过的请求方式、请求头和请求参数信息。在进行解析处理时,按照地址进行分组解析;对于按照地址获得的任一组请求,获取其所有参数,按照出现的概率(URL参数或请求体内)确定出现的位置和概率,并且约定大于10%几率出现的参数为固定参数,低于此比例为变异参数;对不同地址的请求参数进行比对,如果参数名称相同,则认为两个地址的参数之间存在关联。对包含变异字段的历史请求进行分析,按照其所包含的变异字段数目求均值,分别获得请求地址包含变异字段对应的响应均值,之后筛选出响应均值过大的变异字段,基于常见注入漏洞筛选注入策略。
步骤104中,根据注入模板和注入参数获得一个注入测试集;该注入测试集可以是动态的,也可以是一次性生成的;在构建注入测试集时,考虑基于响应时长提示的注入漏洞存在时,获取注入漏洞对应的参数;根据注入漏洞对应的参数确定关联参数;根据注入地址确定关联的请求地址;根据关联的请求地址和关联参数构建拓展注入测试集;
步骤105中,执行测试集,该测试集可以通过自动化测试工具进行,如采用SSQLInjection、Sqlmap、Pangolin、Havij等自动化工具进行渗透测试,或在参数确定或者变异规则确定的情况下使用如编程语言中提供HttpComponent库或者HttpClient建立连接和发起请求,在涉及js脚本执行时,还应当配置脚本解释执行器。
在获取得到的服务器响应存在明显异常时,例如文件尺寸偏大或者文件寸尺过小时,认为输入的参数引起了服务器或者数据库的异常。
本发明的另一个实施例,其具体包括:
(101)获取服务器的历史访问数据集;
(102)对历史访问数据集按照浏览器的核心进行聚类,得到含有标签的多个历史访问数据子集;
(103)对历史访问数据子集中的历史访问地址进行解析,在解析过程中构建请求地址之间的关系图,以及请求地址对应的请求参数之间的关联度,基于关联度获得注入用模板和注入参数;
(104)根据注入用模板和注入参数发起构建注入测试集;
(105)执行注入测试集中的注入测试,基于注入测试的响应获得漏洞。
步骤101中历史访问数据基于服务器的日志获得,服务器的日志为根据请求而生成,并保存在单独的日志文件中。
步骤102中,使用K-means方法进行聚类,对于浏览器按照浏览器的核心进行分类,例如Chrome和2022年后版本的Edge属于同一类型浏览器,而Firefox属于单独的一类,国产的浏览器按照其选用的引擎类型划分。使用K-means方法对请求的来源,即User-Agent进行聚类,得到的浏览器版本为聚类标签,每个聚类标签对应了一组请求。
步骤103中,对请求的信息进行解析,解析出参数出现的频率以及潜在的取值,例如是否取值为字符串、整数以及长度,可用的参数名称、参数是以URL参数形式提供还是通过POST的形式提供,从而可以获得服务器历史处理过的请求方式、请求头和请求参数信息。在进行解析处理时,按照地址进行分组解析;对于按照地址获得的任一组请求,获取其所有参数,按照出现的概率(URL参数或请求体内)确定出现的位置和概率,并且约定大于10%几率出现的参数为固定参数,低于此比例为变异参数;对不同地址的请求参数进行比对,如果参数名称相同,则认为两个地址的参数之间存在关联。对包含变异字段的历史请求进行分析,在请求地址对应的历史访问数据集获取和请求地址关联的参数;获取出现频次最高的m个参数名称作为基准参数集或使用固定参数作为基准参数集;
按照和基准参数集同时出现的概率获得请求参数的关联度,之后筛选出响应均值过大的变异字段,基于常见注入漏洞筛选注入策略。
步骤104中,根据注入模板和注入参数获得一个注入测试集;该注入测试集可以是动态的,也可以是一次性生成的;在构建注入测试集时,考虑基于响应时长提示的注入漏洞存在时,获取注入漏洞对应的参数;根据注入漏洞对应的参数确定关联参数;根据注入地址确定关联的请求地址;根据关联的请求地址和关联参数构建拓展注入测试集;
步骤105中,执行测试集,使用如编程语言中提供HttpComponent库或者HttpClient建立连接和发起请求,在涉及js脚本执行时,配置脚本解释执行器。
根据拓展注入测试集所包含变异字段对拓展注入测试的响应值进行分组,按照响应时长对注入测试所使用变异字段筛选变异方式的异常值,根据变异方式的异常值确定是否存在注入漏洞。此筛选过程和上文近似,对包含变异字段的测试集中的请求进行分析,按照其所包含的变异字段数目求均值,分别获得请求地址包含变异字段对应的响应均值,之后筛选出响应均值过大或过小的变异字段,并进行分析确定是否存在漏洞。
请参考图2,本发明还提供了一种Web服务器的注入漏洞扫描系统,包括:
历史数据获取单元,获取服务器的历史访问数据集;
历史数据子集获取单元,对历史访问数据集按照来源和浏览器进行二次聚类,得到含有标签的多个历史访问数据子集;
注入模式匹配单元,用于对历史访问数据子集中的历史访问地址进行解析,获得注入用模板和注入参数;
注入测试集构建单元,用于根据注入用模板和注入参数发起构建注入测试集;
漏洞获取单元,用于执行注入测试集中的注入测试,基于注入测试的响应获得漏洞。
示例性的,本发明对应的计算机程序可以被分割成一个或多个模块/单元,一个或者多个模块/单元被存储在存储器中,并由处理器执行,以完成本申请。一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述计算机程序在计算机装置中的执行过程。
处理设备可包括,但不仅限于处理器、存储器。本领域技术人员可以理解,示意仅仅是处理设备的示例,并不构成对处理设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如处理设备还可以包括输入输出设备、网络接入设备、总线等,处理器、存储器、输入输出设备以及网络接入设备等通过总线相连。
处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,处理器是处理设备的控制中心,利用各种接口和线路连接整个处理设备的各个部分。
存储器可用于存储计算机程序和/或模块,处理器通过运行或执行存储在存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现计算机装置的各种功能。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据处理设备的使用所创建的数据(比如音频数据、视频数据等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失固态存储器件。
显示屏用于显示输入输出单元输出的至少一种字符类型的字符。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置、处理设备及其对应模块的具体工作过程,可以参考如图1对应的实施例中的说明,具体在此不再赘述。
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
为此,本申请实施例提供一种计算机可读存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本申请如图1对应的实施例中的步骤,具体操作可参考如图1对应的实施例中的说明,在此不再赘述。
其中,该计算机可读存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
由于该计算机可读存储介质中所存储的指令,可以执行本申请如图1 对应的实施例中的步骤,因此,可以实现本申请如图1对应的实施例中的所能实现的有益效果,详见前面的说明,在此不再赘述。

Claims (8)

1.一种Web服务器的注入漏洞扫描方法,其特征在于,包括:
获取服务器的历史访问数据集;
对历史访问数据集进行聚类,得到含有标签的多个历史访问数据子集;
对历史访问数据子集中的历史访问地址进行解析,获得注入用模板和注入参数;
根据注入用模板和注入参数发起构建注入测试集;
执行注入测试集中的注入测试,基于注入测试的响应分析是否存在注入漏洞。
2.如权利要求1所述的一种Web服务器的注入漏洞扫描方法,其特征在于,所述对历史访问数据集进行聚类,得到含有标签的多个历史访问数据子集包括:
获取历史访问数据包括的请求头信息,根据请求头信息获取请求地址、请求时间、请求方式、请求参数、请求头和浏览器信息;
根据请求头和浏览器信息对请求来源进行聚类,获得聚类标签和与聚类标签对应的历史访问数据子集。
3.如权利要求2所述的一种Web服务器的注入漏洞扫描方法,其特征在于,所述对历史访问数据子集中的历史访问地址进行解析,获得注入用模板和注入参数包括:
对历史访问地址进行解析,获得请求地址和与请求地址对应的请求参数;所述请求参数包括可变请求参数和固定请求参数;
根据请求方式、请求头和请求时间获取请求地址之间的关系图,以及请求地址对应的请求参数之间的关联度;
在关联度大于阈值时,根据请求地址、请求头和请求方式构建注入用模板,根据请求地址设置注入用模板的注入参数。
4.如权利要求3所述的一种Web服务器的注入漏洞扫描方法,其特征在于,所述基于注入测试的响应分析是否存在注入漏洞包括:
根据注入测试所包含变异字段对注入测试的响应值进行分组,按照响应时长对注入测试所使用变异字段筛选变异方式的异常值,根据变异方式的异常值确定是否存在注入漏洞。
5.如权利要求4所述的一种Web服务器的注入漏洞扫描方法,其特征在于,在根据变异方式的异常值确定注入漏洞存在时,获取注入漏洞对应的参数;
根据注入漏洞对应的参数确定关联参数;
根据注入地址确定关联的请求地址;
根据关联的请求地址和关联参数构建拓展注入测试集。
6.如权利要求5所述的一种Web服务器的注入漏洞扫描方法,其特征在于,执行拓展注入测试集中的注入测试,根据拓展注入测试集所包含变异字段对拓展注入测试的响应值进行分组,按照响应时长对注入测试所使用变异字段筛选变异方式的异常值,根据变异方式的异常值确定是否存在注入漏洞。
7.如权利要求3所述的一种Web服务器的注入漏洞扫描方法,其特征在于,所述关联度根据如下方式确定:
在请求地址对应的历史访问数据集获取和请求地址关联的参数;
获取出现频次最高的m个参数名称作为基准参数集;
按照和基准参数集同时出现的概率获得请求参数的关联度。
8.一种Web服务器的注入漏洞扫描系统,包括:
历史数据获取单元,获取服务器的历史访问数据集;
历史数据子集获取单元,对历史访问数据集按照来源和浏览器进行二次聚类,得到含有标签的多个历史访问数据子集;
注入模式匹配单元,用于对历史访问数据子集中的历史访问地址进行解析,获得注入用模板和注入参数;
注入测试集构建单元,用于根据注入用模板和注入参数发起构建注入测试集;
漏洞获取单元,用于执行注入测试集中的注入测试,基于注入测试的响应获得漏洞。
CN202310980065.6A 2023-08-07 2023-08-07 一种Web服务器的注入漏洞扫描方法和系统 Active CN116702146B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310980065.6A CN116702146B (zh) 2023-08-07 2023-08-07 一种Web服务器的注入漏洞扫描方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310980065.6A CN116702146B (zh) 2023-08-07 2023-08-07 一种Web服务器的注入漏洞扫描方法和系统

Publications (2)

Publication Number Publication Date
CN116702146A true CN116702146A (zh) 2023-09-05
CN116702146B CN116702146B (zh) 2024-03-22

Family

ID=87843644

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310980065.6A Active CN116702146B (zh) 2023-08-07 2023-08-07 一种Web服务器的注入漏洞扫描方法和系统

Country Status (1)

Country Link
CN (1) CN116702146B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101901219A (zh) * 2009-05-27 2010-12-01 北京启明星辰信息技术股份有限公司 数据库注入攻击检测方法及系统
US8601586B1 (en) * 2008-03-24 2013-12-03 Google Inc. Method and system for detecting web application vulnerabilities
CN111783096A (zh) * 2019-08-28 2020-10-16 北京京东尚科信息技术有限公司 检测安全漏洞的方法和装置
CN112182587A (zh) * 2020-09-30 2021-01-05 中南大学 Web漏洞扫描方法、系统、装置、存储介质和计算机设备
WO2021032175A1 (zh) * 2019-08-20 2021-02-25 华为技术有限公司 故障注入方法及其装置、业务服务系统
CN113505371A (zh) * 2021-08-06 2021-10-15 四川大学 数据库安全风险评估系统

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8601586B1 (en) * 2008-03-24 2013-12-03 Google Inc. Method and system for detecting web application vulnerabilities
CN101901219A (zh) * 2009-05-27 2010-12-01 北京启明星辰信息技术股份有限公司 数据库注入攻击检测方法及系统
WO2021032175A1 (zh) * 2019-08-20 2021-02-25 华为技术有限公司 故障注入方法及其装置、业务服务系统
CN111783096A (zh) * 2019-08-28 2020-10-16 北京京东尚科信息技术有限公司 检测安全漏洞的方法和装置
CN112182587A (zh) * 2020-09-30 2021-01-05 中南大学 Web漏洞扫描方法、系统、装置、存储介质和计算机设备
CN113505371A (zh) * 2021-08-06 2021-10-15 四川大学 数据库安全风险评估系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
VADIM OKUN等: "Building a Test Suite for Web Application Scanners", 《IEEE XPLORE》, pages 1 - 9 *

Also Published As

Publication number Publication date
CN116702146B (zh) 2024-03-22

Similar Documents

Publication Publication Date Title
US10868819B2 (en) Systems for detecting a headless browser executing on a client computer
US10454969B2 (en) Automatic generation of low-interaction honeypots
US11030203B2 (en) Machine learning detection of database injection attacks
US9262519B1 (en) Log data analysis
US7636919B2 (en) User-centric policy creation and enforcement to manage visually notified state changes of disparate applications
US8646088B2 (en) Runtime enforcement of security checks
CN109800258B (zh) 数据文件部署方法、装置、计算机设备及存储介质
KR20090090685A (ko) 웹 어플리케이션의 취약성 판단 방법 및 시스템
US11570196B2 (en) Method for determining duplication of security vulnerability and analysis apparatus using same
CN111104579A (zh) 一种公网资产的识别方法、装置及存储介质
CN113190838A (zh) 一种基于表达式的web攻击行为检测方法及系统
US11550920B2 (en) Determination apparatus, determination method, and determination program
CN110636038A (zh) 账号解析方法、装置、安全网关及系统
KR100670209B1 (ko) 파라미터 상태 추적을 통한 웹 응용프로그램 취약점의소스코드 분석 장치 및 방법
CN111107101A (zh) 一种用于nginx的多维过滤请求的防火墙系统及方法
US8909566B2 (en) Method, a computer program and apparatus for analyzing symbols in a computer
CN116702146B (zh) 一种Web服务器的注入漏洞扫描方法和系统
US20140337069A1 (en) Deriving business transactions from web logs
CN116647412B (zh) 一种Web服务器的安全防御方法和系统
CN112486816B (zh) 测试方法、装置、电子设备及存储介质
CN113051329B (zh) 基于接口的数据采集方法、装置、设备及存储介质
CN112437036B (zh) 一种数据分析的方法及设备
CN111832024B (zh) 一种大数据安全防护方法及系统
US20240070287A1 (en) Faster web application scans of web page data based on deduplication
Kantola Exploring VirusTotal for security operations alert triage automation

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
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20240130

Address after: Chinatelecom tower, No. 19, Chaoyangmen North Street, Dongcheng District, Beijing 100010

Applicant after: Tianyi Safety Technology Co.,Ltd.

Country or region after: China

Address before: 201A, 2nd Floor, Building 4, Zone 4, No. 81 Beiqing Road, Haidian District, Beijing, 100094

Applicant before: Beijing Ideal Township Network Technology Co.,Ltd.

Country or region before: China

GR01 Patent grant
GR01 Patent grant