一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

漏洞扫描系统、方法和计算机设备与流程

2022-03-26 06:58:40 来源:中国专利 TAG:


1.本技术涉及漏洞扫描技术领域,特别是涉及一种漏洞扫描系统、方法和计算机设备。


背景技术:

2.随着信息技术与各行各业的融合发展,物联网成为社交,电力,制造,国防等多个领域的重要支撑平台。特别是近几年云计算平台的广泛使用,使得从终端设备上收集分析的大量个人信息、政府和企业数据存储到了web服务器上,将web安全的重要性也提升到了一个新的高度。由于http协议的复杂性和不规范性,开发人员水平高低不一,web应用中常常存在漏洞。不法分子能够通过挖掘这些漏洞,远程执行恶意命令,达到大规模窃取信息的目的。
3.在实现过程中,发明人发现传统技术中至少存在如下问题:传统漏洞扫描技术对于电网系统的web应用而言存在适用性低的问题。


技术实现要素:

4.基于此,有必要针对上述技术问题,提供一种适用性高的漏洞扫描系统、方法和计算机设备。
5.为了实现上述目的,一方面,本发明实施例提供了一种漏洞检测系统,包括:
6.代理模块,用于设置代理服务器的监听端口,并根据监听端口拦截用户端发出的请求包;代理模块还用于根据外部操作指令,将请求包对外输出;
7.请求重放模块,用于接收请求包,并根据请求包的解析结果,向目标服务器发送请求;请求重放模块还用于接收目标服务器返回的第一响应对象并显示;
8.入侵模块,用于接收请求包,并根据选定的攻击载荷替换请求包中的标记字符串,生成测试请求包;入侵模块还用于根据输入的目标服务器的主机和端口号,将测试请求包发送至目标服务器,并接收目标服务器返回的第二响应对象并显示。
9.在其中一个实施例中,外部操作指令包括释放指令、拦截指令和操作指令;
10.代理模块用于根据释放指令,将请求包发送至目标服务器,并将目标服务器返回的第三响应对象传输至用户端;
11.代理模块用于根据拦截指令,将请求包丢弃;
12.代理模块用于根据操作指令,将请求包传输至请求重放模块或入侵模块。
13.在其中一个实施例中,代理模块对请求包进行解析并显示。
14.在其中一个实施例中,请求重放模块确定解析结果中是否存在host头部;若解析结果存在host头部,请求重放模块根据host头部,向目标服务器发送请求并得到第一响应对象;响应对象包括状态码、响应http协议版本和响应主体;请求重放模块根据状态码、响应http协议版本和响应主体,合成响应字符串并显示。
15.在其中一个实施例中,还包括:
16.扫描模块,用于根据外部输入的地址,生成扫描命令;扫描命令用于调用安全扫描引擎对页面进行漏洞检测,还用于将漏洞检测的结果显示。
17.在其中一个实施例中,还包括:
18.站点地图绘制模块,用于接收域名并采用多协程爬取域名对应的页面。
19.在其中一个实施例中,站点地图绘制模块将域名的首页url地址放入队列,并通过各协程从队列中提取首页url地址;站点地图绘制模块根据首页url地址发出请求,并在返回对象为重定向链接时,将重定向链接放入队列,在返回对象不为重定向链接时,采用正则表达式处理返回对象得到域名对应的页面直至队列为空。
20.另一方面,本发明实施例还提供了一种漏洞扫描方法,包括步骤:
21.设置代理服务器的监听端口,并根据监听端口拦截用户端发出的请求包;
22.根据外部操作指令,将请求包对外输出;
23.接收请求包,并根据请求包的解析结果,向目标服务器发送请求;
24.接收目标服务器返回的第一响应对象并显示;
25.接收请求包,并根据选定的攻击载荷替换请求包中的标记字符串,生成测试请求包;根据输入的目标服务器的主机和端口号,将测试请求包发送至目标服务器,并接收目标服务器返回的第二响应对象并显示。
26.在其中一个实施例中,接收请求包,并根据请求包的解析结果,向目标服务器发送请求的步骤,包括:
27.确定解析结果中是否存在host头部;
28.若解析结果存在host头部,根据host头部,向目标服务器发送请求并得到第一响应对象;响应对象包括状态码、响应http协议版本和响应主体。
29.另一方面,本发明实施例还提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现上述任一项方法的步骤。
30.上述技术方案中的一个技术方案具有如下优点和有益效果:
31.上述漏洞扫描系统,针对大量终端设备接入包括智能电网在内的网络系统可能带来的web安全问题,通过代理模块拦截用户端发出的请求,同时可以将该请求发送至请求重放模块和入侵模块以进行密码爆破、模糊测试等测试手段,实现了在不影响电网正常工作的前提下扫描漏洞,保证系统安全性和可靠性。
附图说明
32.通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本技术的其它特征、目的和优点将会变得更明显:
33.图1为一个实施例中漏洞扫描系统的第一示意性结构框图;
34.图2为一个实施例中漏洞扫描系统的第二示意性结构框图;
35.图3为一个实施例中漏洞扫描系统的第三示意性结构框图;
36.图4为一个实施例中漏洞扫描方法的第一示意性流程示意图;
37.图5为一个实施例中接收所述请求包,并根据所述请求包的解析结果向目标服务器发送请求步骤的流程示意图;
38.图6为一个实施例中计算机设备的内部结构图。
具体实施方式
39.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
40.在一个实施例中,如图1所示,提供了一种漏洞检测系统,包括:
41.代理模块,用于设置代理服务器的监听端口,并根据监听端口拦截用户端发出的请求包;代理模块还用于根据外部操作指令,将请求包对外输出;
42.请求重放模块,用于接收请求包,并根据请求包的解析结果,向目标服务器发送请求;请求重放模块还用于接收目标服务器返回的第一响应对象并显示;
43.入侵模块,用于接收请求包,并根据选定的攻击载荷替换请求包中的标记字符串,生成测试请求包;入侵模块还用于根据输入的目标服务器的主机和端口号,将测试请求包发送至目标服务器,并接收目标服务器返回的第二响应对象并显示。
44.其中,代理服务器用于代理网络用户去取得网络信息;外部操作指令可以由操作人员进行触发。目标服务器可以为web服务器。
45.具体而言,代理服务器可以为http代理服务器,设置浏览器的http代理服务器为localhost:6666;从而使得代理服务器会监听本地的6666端口。当用户需要访问http网页时,即会向目标服务器发出请求包。而本技术的代理服务器将该请求包进行拦截。在其中一个实施例中,代理模块对请求包进行解析并显示,以便于操作人员根据该请求包输入上述外部操作指令。代理模块可以基于此分析web中的流量。进一步的,给定host和port为(“127.0.0.1”,6666),并将浏览器http代理服务器地址也设置为(“127.0.0.1”,6666)。代理模块的server类会新建一个socket,绑定在这个地址并监听,等待接受请求。当用户访问网页时,浏览器会将请求发送到本程序,server类接受请求后,新建一个socket并新开启一个线程proxy用于和浏览器传输数据。
46.请求重放模块接收请求包,该请求包可以由代理模块传输得到,也可以由操作人员自行输入得到。请求重放模块可以采用本领域任意手段对请求包进行解析并得到解析结果,并根据该解析结果向目标服务器发送请求。目标服务器接收到该请求后会发送第一响应对象,请求重放模块接收该第一响应对象并显示。需要说明的是,第一响应对象也即与该请求相对应的响应包。
47.入侵模块接收的请求包,该请求包可以由代理模块传输得到,也可以由操作人员自行输入得到。攻击载荷为不同的字符串。入侵模块根据选定的攻击载荷替换请求包中的标记字符串,从而得到测试请求包。目标服务器的主机和端口号可以通过操作人员手动输入,也可以自行导入预先设置的主机和端口号。入侵模块将测试请求包发送至目标服务器,接收该目标服务器返回的第二相应对象并显示。需要说明的是,入侵模块可以用来进行密码破解。将所有被修改后的请求包发送到目标服务器,并将使用的攻击载荷,响应的状态码、错误、超时,响应长度,响应中是否存在关键字等信息展示在新的窗口中。这里实际上是进行密码的暴力破解,所以用不同的值替换post请求中的密码字段,然后分析响应结果。可以看到当攻击载荷(也就是密码字段的值)为2时,响应长度和其它的不一样,并且从响应结果中找到了“xig2004”这个字符串(说明登陆成功),也就是说明密码的值为2。
48.上述漏洞扫描系统,针对大量终端设备接入包括智能电网在内的网络系统可能带
来的web安全问题,通过代理模块拦截用户端发出的请求,同时可以将该请求发送至请求重放模块和入侵模块以进行密码爆破、模糊测试等测试手段,实现了在不影响电网正常工作的前提下扫描漏洞,保证系统安全性和可靠性。
49.在其中一个实施例中,上述功能模块都存放在api.py文件内,需要使用时只要将api.py以python模块的形式导入,并调用对应的api即可。同时,每一个功能模块实现都分别封装成了python类,并写在单独的文件中。
50.在其中一个实施例中,外部操作指令包括释放指令、拦截指令和操作指令;
51.代理模块用于根据释放指令,将请求包发送至目标服务器,并将目标服务器返回的第三响应对象传输至用户端;
52.代理模块用于根据拦截指令,将请求包丢弃;
53.代理模块用于根据操作指令,将请求包传输至请求重放模块或入侵模块。
54.具体而言,释放指令用于将拦截到的请求包发送至目标服务器,拦截指令用于将连接到的请求包丢弃,操作指令用于将请求包传输至请求重放模块或入侵模块。
55.在其中一个实施例中,请求重放模块确定解析结果中是否存在host头部;若解析结果存在host头部,请求重放模块根据host头部,向目标服务器发送请求并得到第一响应对象;第一响应对象包括状态码、响应http协议版本和响应主体;请求重放模块根据状态码、响应http协议版本和响应主体,合成响应字符串并显示。
56.其中,host头部又称请求头部,代表请求的主机。
57.具体而言,请求重放模块确定解析结果是否存在host头部,如果存在的话,与目标服务器建立连接,然后根据http请求包的特征,提取出请求的路径、请求头部,post参数等等,然后用http.client的request方法向目标服务器发送请求并得到响应对象。需要说明的是,也可以采用其他方式向目标服务器发送请求。第一响应对象种包括状态码,响应http协议版本,响应主体等信息,需要将其重新组合成标准形式的响应字符串后进行显示。
58.在其中一个实施例中,如图2所示,还包括扫描模块,用于根据外部输入的地址,生成扫描命令;扫描命令用于调用安全扫描引擎对页面进行漏洞检测,还用于将漏洞检测的结果显示。
59.具体的,扫描模块可以包括单页面的漏洞扫描模块和整站的漏洞扫描模块,其中单页面的漏洞扫描模块可以选择调用其他安全扫描引擎如sqlmap或自身嵌入的安全扫描引擎。主要检测的漏洞有sql注入和xss跨站脚本攻击。单页面的漏洞扫描模块可以选择调用安全扫描引擎,例如sqlmap。在使用安全扫描引擎时,可以自定义命令,也可以使用预设的命令,例如选择sqlmap时,预设的命令是“python2 sqlmap.py-u[url]”,这里[url]要用外部输入的url替换,sqlmap会检测该url对应页面的所有sql漏洞。漏洞检测的结果包括类型、url以及使用的攻击载荷。整站的漏洞扫描模块自动扫描某域名下所有页面,并检测漏洞。具体的,可以采用协程来提速,将漏洞的检测和页面的爬取放到一个消息循环中,并使用多任务并行处理。操作人员可以选择协程的数量,速度提升明显,同时占用资源较少。在一个具体示例中,协程数量为50个。
[0060]
上述模块主要检测的是sql注入漏洞和xss跨站脚本攻击漏洞。sql注入主要分为bool型盲注,延时盲注,报错注入等,它们的检测方式也各有不同。对于bool型盲注,主要是通过在get和post参数部分加上,或者替换例如:and 1=1和and 1=2这样的载荷,如果两
次请求返回的页面长度不同,可以认为两个载荷成功插入sql查询并且执行了,因此页面存在bool型盲注漏洞。对于报错注入,通过在get和post参数部分加上可使web后台报错的载荷,例如单引号。返回的页面中如果有相关错误信息,则认为存在报错注入。对于xss漏洞的检测,也是类似的,在get和post参数中加上xss攻击载荷,然后发送请求,如果返回的页面载荷被成功植入,则说明页面存在xss漏洞。
[0061]
在其中一个实施例中,如图3所示,还包括:
[0062]
站点地图绘制模块,用于接收域名并采用多协程爬取域名对应的页面。
[0063]
在其中一个实施例中,站点地图绘制模块将域名的首页url地址放入队列,并通过各协程从队列中提取首页url地址;站点地图绘制模块根据首页url地址发出请求,并在返回对象为重定向链接时,将重定向链接放入队列,在返回对象不为重定向链接时,采用正则表达式处理返回对象得到域名对应的页面直至队列为空。
[0064]
具体而言,为了了解web应用的整体结构,并测试隐私页面是否做好了访问控制,以便后续测试,需要得到整个web应用的目录结构。爬取使用spider类实现。初始化该spider类时,会初始化一个队列q和一个bloom filter数据结构seen_url,该队列q用于存放已经爬取的url。首先将域名的首页url放入q和seen_url中。接着执行run函数,在run函数中会开启多个协程,每个work都是一个协程。work协程不断从队列里取出爬取到的url,输出,然后用fetch函数请求这个url,如果返回的是重定向,则把重定向后的url放入队列,如果不是重定向,那么利用正则表达式从返回的页面中找到所有链接。这些链接可能是相对url,可以使用python的urllib模块的urljoin函数将其转化为绝对url。若这些链接不是http、https协议、多媒体文件,则舍弃这些链接。最后,如果链接在给定的域名下,那么将链接放到q中。如上述的,循环地读取队列q中的url直到q为空,则说明该域名下所有页面已爬取完毕。
[0065]
上述漏洞扫描系统既有辅助手工检测的模块,也有漏洞扫描的模块,增加自由选择扫描引擎的功能,方便地调用各功能模块的输出结果,用于插件的编写。
[0066]
在一个实施例中,如图4所示,提供了一种漏洞扫描方法,包括步骤:
[0067]
s410,设置代理服务器的监听端口,并根据所述监听端口拦截用户端发出的请求包;
[0068]
其中,代理服务器用于代理网络用户去取得网络信息;
[0069]
具体的,设置浏览器的http代理服务器为localhost:6666;从而使得代理服务器会监听本地的6666端口。当用户需要访问http网页时,即会向目标服务器发出请求包。而本技术的代理服务器将该请求包进行拦截。在其中一个实施例中,对请求包进行解析并显示,以便于操作人员根据该请求包输入上述外部操作指令。
[0070]
s420,根据外部操作指令,将所述请求包对外输出;
[0071]
其中,外部操作指令可以由操作人员进行触发。
[0072]
s430,接收所述请求包,并根据所述请求包的解析结果,向目标服务器发送请求;
[0073]
其中,目标服务器可以为web服务器。
[0074]
s440,接收目标服务器返回的第一响应对象并显示;
[0075]
s450,接收所述请求包,并根据选定的攻击载荷替换所述请求包中的标记字符串,生成测试请求包;根据输入的目标服务器的主机和端口号,将所述测试请求包发送至所述
目标服务器,并接收所述目标服务器返回的第二响应对象并显示。
[0076]
具体而言,攻击载荷为不同的字符串。入侵模块根据选定的攻击载荷替换请求包中的标记字符串,从而得到测试请求包。目标服务器的主机和端口号可以通过操作人员手动输入,也可以自行导入预先设置的主机和端口号。入侵模块将测试请求包发送至目标服务器,接收该目标服务器返回的第二相应对象并显示。需要说明的是,上述方法可以用来进行密码破解。将所有被修改后的请求包发送到目标服务器,并将使用的攻击载荷,响应的状态码、错误、超时,响应长度,响应中是否存在关键字等信息展示在新的窗口中。这里实际上是进行密码的暴力破解,所以用不同的值替换post请求中的密码字段,然后分析响应结果。可以看到当攻击载荷(也就是密码字段的值)为2时,响应长度和其它的不一样,并且从响应结果中找到了“xig2004”这个字符串(说明登陆成功),也就是说明密码的值为2。
[0077]
上述漏洞扫描系统,针对大量终端设备接入包括智能电网在内的网络系统可能带来的web安全问题,通过代理模块拦截用户端发出的请求,同时可以将该请求发送至请求重放模块和入侵模块以进行密码爆破、模糊测试等测试手段,实现了在不影响电网正常工作的前提下扫描漏洞,保证系统安全性和可靠性。
[0078]
在其中一个实施例中,如图5所示,接收所述请求包,并根据所述请求包的解析结果,向目标服务器发送请求的步骤,包括:
[0079]
s510,确定所述解析结果中是否存在host头部;
[0080]
其中,host头部又称请求头部,代表请求的主机。
[0081]
s520,若所述解析结果存在所述host头部,根据所述host头部,向目标服务器发送请求并得到所述第一响应对象;所述响应对象包括状态码、响应http协议版本和响应主体。
[0082]
具体而言,确定解析结果是否存在host头部,如果存在的话,与目标服务器建立连接,然后根据http请求包的特征,提取出请求的路径、请求头部,post参数等等,然后用http.client的request方法向目标服务器发送请求并得到响应对象。需要说明的是,也可以采用其他方式向目标服务器发送请求。第一响应对象种包括状态码,响应http协议版本,响应主体等信息,需要将其重新组合成标准形式的响应字符串后进行显示。
[0083]
应该理解的是,虽然图4-5的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图4-5中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
[0084]
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图6所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储请求包和响应包数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种漏洞扫描方法。
[0085]
本领域技术人员可以理解,图6中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
[0086]
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
[0087]
设置代理服务器的监听端口,并根据监听端口拦截用户端发出的请求包;
[0088]
根据外部操作指令,将请求包对外输出;
[0089]
接收请求包,并根据请求包的解析结果,向目标服务器发送请求;
[0090]
接收目标服务器返回的第一响应对象并显示;
[0091]
接收请求包,并根据选定的攻击载荷替换请求包中的标记字符串,生成测试请求包;根据输入的目标服务器的主机和端口号,将测试请求包发送至目标服务器,并接收目标服务器返回的第二响应对象并显示。
[0092]
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
[0093]
确定解析结果中是否存在host头部;
[0094]
若解析结果存在所述host头部,根据host头部,向目标服务器发送请求并得到第一响应对象;响应对象包括状态码、响应http协议版本和响应主体。
[0095]
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
[0096]
设置代理服务器的监听端口,并根据监听端口拦截用户端发出的请求包;
[0097]
根据外部操作指令,将请求包对外输出;
[0098]
接收请求包,并根据请求包的解析结果,向目标服务器发送请求;
[0099]
接收目标服务器返回的第一响应对象并显示;
[0100]
接收请求包,并根据选定的攻击载荷替换请求包中的标记字符串,生成测试请求包;根据输入的目标服务器的主机和端口号,将测试请求包发送至目标服务器,并接收目标服务器返回的第二响应对象并显示。
[0101]
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
[0102]
确定解析结果中是否存在host头部;
[0103]
若解析结果存在所述host头部,根据host头部,向目标服务器发送请求并得到第一响应对象;响应对象包括状态码、响应http协议版本和响应主体。
[0104]
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线式动态随机存储器(rambus dram,简称rdram)、以及接口动态随机存储器(drdram)等。
[0105]
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
[0106]
以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献