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

一种面向javaweb服务的漏洞扫描系统及方法与流程

2022-08-10 19:27:32 来源:中国专利 TAG:

一种面向java web服务的漏洞扫描系统及方法
技术领域
1.本发明涉及漏洞扫描技术领域,尤其涉及一种面向java web服务的漏洞扫描系统及方法。


背景技术:

2.随着互联网的高速发展,互联网成为了联结所有人信息的交汇点。人们越来越习惯在互联网上完成各种业务功能,很多的金融公司,政府机构,私人企业的业务通过各种web系统进行交互处理,为人民提高更加方便快捷的服务。同时,网络安全形势也越来越严峻,网络攻击事件频繁,用户个人隐私大量泄露,对于企业和个人造成很大影响。做好网络安全防护越来越重要。
3.做好网络安全防护一般需要企业了解自身暴露资产,完整的对于企业的暴力资产做渗透测试、漏洞扫描。针对安全漏洞企业需要安排开发人员进行修复之后再进行漏洞验证等等。而其中的财力人力的开销是巨大的,对于中小型企业来讲负担较大。而漏洞扫描器可以很好的较低中小型企业的压力,漏洞扫描器操作简单,运行速率快,耗时短,可以协助安全人员更快更高效的完成系统安全评估。
4.在现在已知的技术中,扫描器没有具体针对不同java框架进行区分扫描,扫描不够灵活,扫描速率慢。对于url资产处理较为复杂,一些静态文件和无效链接无需进行漏洞探测。整体扫描较为单一不够灵活,目录扫描方面只对于输入站点的子目录进行扫描,但是目标资产可能存在多级目录。框架识别不够精细,常见java开发模板漏洞没有完善的漏洞库。


技术实现要素:

5.本发明的目的在于提供一种面向java web服务的漏洞扫描系统及方法,从而解决现有技术中存在的前述问题。
6.为了实现上述目的,本发明采用的技术方案如下:
7.一种面向java web服务的漏洞扫描系统,包括资产收集模块、指纹识别模块、框架漏洞扫描模块和基础漏洞扫描模块,所述资产收集模块会根据输入的目标站点收集该站点url信息以及站点子目录信息,所述指纹识别模块针对java框架的指纹识别,通过查找几个常见的位置来确定当前框架类型,所述框架漏洞扫描模块用于在所述指纹扫描模块判断出框架类型后进入该框架进行漏洞扫描,收集常见java框架漏洞;所述基础漏洞扫描模块包括目录扫描子模块、xss漏洞扫描子模块和sql注入漏洞扫描子模块,所述目标扫描子模块用于扫描目标资产url的子目录;所述xss漏洞扫描子模块用于扫描爬虫获取的所有url是否存在xss漏洞;所述sql注入漏洞扫描子模块用于确定sql注入模块是否有用户恶意构造的数据库命令进入数据库中执行。
8.优选的,所述资产收集模块采用广度优先爬虫策略爬取全站url,优先爬取重要性和关联度较高的链接,使用python的beautifulsoup模块,获取所有带href属性的a标签,把
a标签中的href属性提取出来,去除重复链接,如果提取出来的非目标资产那么去除,如果是非http开头的则带上资产根目录,通过此处理好的链接加入未访问列表,已经爬虫过后的链接加入已访问列表;取出未访问列表里面的url按照爬虫步骤再次进行爬虫,爬虫完毕将爬虫结果放入一个文件中方便之后的指纹识别模块、框架漏洞扫描模块和基础漏洞扫描模块进行调用。
9.优选的,所述指纹识别模块通过查找几个常见的位置来确定当前框架类型,包括http头,http响应头的server,x-powered-by和cookies,具体包括以下步骤:
10.首先获取响应包里面的http头信息,接着确认里面是否有server,x-jenkins,x-powered-by,powered by这些http头,如果存在那么直接获取对应的java框架信息。
11.优选的,所述sql注入漏洞扫描子模块通过sql注入模块注入测试语句和不同测试语句的响应包的区别进行漏洞判断,具体包括:
12.b1,首先进行waf判断,尝试使用含有特殊字符的url访问被注入的网站(受攻击的网站),判断是否存在waf,若存在,则判断是否能绕过waf,若能绕过,则修改测试语句,尝试绕过payload后进入步骤b2;若不能绕过,则直接进入步骤b2;
13.b2,测试sql注入模块有报错注入、布尔盲注和延时盲注,采用常用sql注入中的报错注入、联合查询语句进行测试,比较不同测试响应判断是否存在漏洞,若存在漏洞,则直接输出测试结果后,再测试布尔盲注和延时盲注;否则,直接测试布尔盲注和延时盲注。
14.优选的,所述使用含有特殊字符的url访问,判断是否存在waf具体包括:使用含有特殊字符的url访问,出现响应403,500或者响应含有banned,fierwall之类的关键词;
15.步骤b2包括:采用报错注入、布尔盲注和延时盲注作为sql基础测试,其中,所述报错注入采用枚举口令以暴力测试的方式注入,获得正确口令;当页面无法回显查询信息时,可以考虑使用延时盲注,延时盲注攻击者通过构造延时语句,当数据库执行该语句时如果满足判断条件那么执行时间短,如果不满足判断条件会导致执行时间很长,攻击者就可以通过响应时间长短判断测试语句是否正确,从而得到数据库信息;布尔盲注主要用于没有回显的情形,一般用于查询,布尔盲注通过响应返回的true或者false来判断数据库信息使用布尔盲注之前需要先判断数据是字符型还是数字型,之后再构造布尔语句判断页面回显,用于查询数据库是否有该信息,若有则返回信息详情,若无则会有对应报错。
16.本发明公开了一种面向java web服务的漏洞扫描方法,包括以下步骤:
17.s1,将待扫描的目标资产输入资产收集模块,采用广度优先爬虫算法爬取目标资产的全站url;
18.s2,将符合爬虫要求的url数据输入点提取出,并连同其目录节点保存至统一文件夹中,作为爬虫结果;
19.s3,采用指纹识别模块对所述爬虫结果中的web框架进行识别,通过查找http头,http响应头的server,x-powered-by以及cookies识别框架类型;对于不同的框架类型,选用不同的漏洞扫描模块进行漏洞扫描过程;在使用指纹识别模块判断出web框架类型之后,采用目录扫描子模块能够找到一个网站所能提供服务界面,并利用此服务界面所提供的链接进一步扫描网站目录,后续的漏洞检测功能需要基于网站目录进行进一步扫描,通过网站上所展示的链接进行请求,若状态码为200(文件存在)、302(此目录下的资源被临时移动)、401(访问此文件需要身份验证)、403(请求有效,但服务器拒绝响应)则说明该目录下
存在文件,在确定出网站的可访问目录之后,再去调用xss和sql注入漏洞扫描模块测试此网站是否存在已知漏洞;
20.s4,基于s1到s3的扫描结果,形成漏洞扫描的结果报告。
21.优选的,步骤s2中具体包括:
22.s21,使用python的beautifulsoup模块,获取所有带href属性的a标签,把a标签中的href属性提取出来,去除重复链接,如果提取出来的非目标资产那么去除,如果是非http开头的则带上资产根目录,通过此处理好的链接加入未访问列表,已经爬虫过后的链接加入已访问列表;s22,取出未访问列表里面的url按照爬虫步骤再次进行爬虫,爬虫完毕将爬虫结果放入一个文件中方便之后的指纹识别模块、框架漏洞扫描模块和基础漏洞扫描模块进行调用。
23.优选的,步骤s3中采用指纹识别模块对所述爬虫结果中的web框架进行识别,通过查找http头,http响应头的server,x-powered-by以及cookies识别框架类型具体包括:获取响应包里面的http头信息,接着确认里面是否有server,x-jenkins,x-powered-by,powered by这些http头,如果存在那么获取里面的java框架信息,针对比较特殊的struts2框架识别:
24.首先可以通过传递actionerrors参数,如果响应包出现异常,则可以认定为目标是基于struts2构建的,主要有以下几种异常情况:
25.(1)响应包状态码400、500或者302;
26.(2)actionerrors传递的参数回显到了页面上面;
27.(3)页面的内容结构发生了明显的改变;
28.其次可以通过拼接/struts/webconsole.html是否存在来进行判断,如果响应包正常那么可以确定是struts框架;
29.最后通过keyword和checkbox_keyword参数,如果传递keyword=11,页面回显正常或者回显11到页面上,而传递_checkbox_keyword=111回显错误,那么该网站可以确定是struts框架;
30.针对的weblogic框架识别,可以通过以下默认路径方式来识别weblogic框架:
31.(1)/console/login/loginform.jsp
32.(2)/wls-wsat/coordinatorporttype
33.(3)/_async/asyncresponseservice
34.(4)/ws_utc/config.do。
35.优选的,步骤s3中对于不同的框架类型,选用不同的漏洞扫描模块进行漏洞扫描过程具体包括:待确定是struct2和weblogic框架,采用框架漏洞扫描模块,收集struct2和weblogic框架漏洞,分析struct2漏洞检测方法,struct2漏洞主要通过post或者get方式传递命令,接着判断返回包命令是否执行,如果命令成果执行,那么确定漏洞存在;通过执行命令{str1 str2},如果响应包里面含有str1 str2的结果,那么漏洞存在;对于其他的框架类型,则不进行框架漏洞扫描。
36.本发明的有益效果是:
37.本发明提供了一种面向javaweb服务的漏洞扫描系统及方法,该方法在对于url处理上对于非该目标资产和无效链接进行url去除处理,提高扫描速率;在资产收集模块在常
见搜索框登录框出对于输入参数进行收集整理;在目录扫描之前会处理收集到的url资产的子目录,提高目录扫描模块的发现率;之后的sql注入模块会对于waf进行识别绕过处理,该方法简单集成了常见java开发模板漏洞的漏洞库。
附图说明
38.图1是实施例1中提供的面向java web服务的漏洞扫描系统结构图;
39.图2是实施例1中提供的sql注入模块工作流程示意图。
具体实施方式
40.为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不用于限定本发明。
41.实施例1
42.本实施例提供了一种面向java web服务的漏洞扫描系统,如图1所示,包括资产收集模块、指纹识别模块、框架漏洞扫描模块和基础漏洞扫描模块,所述资产收集模块会根据输入的目标站点收集该站点url信息以及站点子目录信息,所述指纹识别模块针对java框架的指纹识别,通过查找几个常见的位置来确定当前框架类型,所述框架漏洞扫描模块用于在所述指纹扫描模块判断出框架类型后进入该框架进行漏洞扫描,收集常见java框架漏洞;所述基础漏洞扫描模块包括目录扫描子模块、xss漏洞扫描子模块和sql注入漏洞扫描子模块,所述目标扫描子模块用于扫描目标资产url的子目录;所述xss漏洞扫描子模块用于扫描爬虫获取的所有url是否存在xss漏洞;所述sql注入漏洞扫描子模块用于确定sql注入模块是否有用户恶意构造的数据库命令进入数据库中执行。
43.本实施例中的所述资产收集模块采用广度优先爬虫策略爬取全站url,优先爬取重要性和关联度较高的链接,使用python的beautifulsoup模块,获取所有带href属性的a标签,把a标签中的href属性提取出来,去除重复链接,如果提取出来的非目标资产那么去除,如果是非http开头的则带上资产根目录,通过此处理好的链接加入未访问列表,已经爬虫过后的链接加入已访问列表;取出未访问列表里面的url按照爬虫步骤再次进行爬虫,爬虫完毕将爬虫结果放入一个文件中方便之后的指纹识别模块、框架漏洞扫描模块和基础漏洞扫描模块进行调用。
44.本实施例中的所述指纹识别模块通过查找几个常见的位置来确定当前框架类型,包括http头,http响应头的server,x-powered-by和cookies,具体包括以下步骤:
45.首先获取响应包里面的http头信息,接着确认里面是否有server,x-jenkins,x-powered-by,powered by这些http头,如果存在那么直接获取对应的java框架信息。
46.本实施例中的所述sql注入漏洞扫描子模块通过sql注入模块注入测试语句和不同测试语句的响应包的区别进行漏洞判断,具体包括:
47.b1,首先进行waf判断,尝试使用含有特殊字符的url访问被注入的网站(受攻击的网站),判断是否存在waf,若能绕过,则修改测试语句,尝试绕过payload后进入步骤b2;若不能绕过,则直接进入步骤b2;
48.b2,测试sql注入模块有报错注入、布尔盲注和延时盲注,采用常用sql注入中的报
错注入、联合查询语句进行测试,比较不同测试响应判断是否存在漏洞,若存在漏洞,则直接输出测试结果后,再测试布尔盲注和延时盲注;否则,直接测试布尔盲注和延时盲注。
49.本实施例中的所述使用含有特殊字符的url访问,判断是否存在waf具体包括:使用含有特殊字符的url访问,出现响应403,500或者响应含有banned,fierwall之类的关键词;
50.步骤b2包括:采用报错注入、布尔盲注和延时盲注作为sql基础测试,其中,所述报错注入,枚举口令以暴力测试的方式注入,获得正确口令,延时盲注,当页面无法回显查询信息时,可以考虑使用延时盲注,延时盲注攻击者通过构造延时语句,当数据库执行该语句时如果满足判断条件那么执行时间短,如果不满足判断条件会导致执行时间很长,攻击者就可以通过响应时间长短判断测试语句是否正确,从而得到数据库信息;布尔盲注主要用于没有回显的情形,一般用于查询,布尔盲注通过响应返回的true或者false来判断数据库信息使用布尔盲注之前需要先判断数据是字符型还是数字型,之后再构造布尔语句判断页面回显,用于查询数据库是否有该信息,若有则返回信息详情,若无则会有对应报错。
51.实施例2
52.本实施例中提供了一种面向java web服务的漏洞扫描方法,基于实施例1中所记载的java web服务的漏洞扫描系统实现,包括以下步骤:
53.s1,将待扫描的目标资产输入资产收集模块,采用广度优先爬虫算法爬取目标资产的全站url;
54.s2,将符合爬虫要求的url数据输入点提取出,并连同其目录节点保存至统一文件夹中;
55.s3,采用指纹识别模块对爬虫结果中的web框架进行识别,通过查找http头,http响应头的server,x-powered-by以及cookies识别框架类型;对于不同的框架类型,选用不同的漏洞扫描模块进行漏洞扫描过程;同时目录扫描模块能够找到一个网站所能提供服务界面进行扩展,后续的漏洞检测功能需要基于网站目录进行进一步扫描,从而测试此网站是否存在已知漏洞;
56.s4,基于s1到s3的扫描结果,形成漏洞扫描的结果报告。
57.步骤s2中具体包括:
58.s21,使用python的beautifulsoup模块,获取所有带href属性的a标签,把a标签中的href属性提取出来,去除重复链接,如果提取出来的非目标资产那么去除,如果是非http开头的则带上资产根目录,通过此处理好的链接加入未访问列表,已经爬虫过后的链接加入已访问列表;
59.s22,取出未访问列表里面的url按照爬虫步骤再次进行爬虫,爬虫完毕将爬虫结果放入一个文件中方便之后的指纹识别模块、框架漏洞扫描模块和基础漏洞扫描模块进行调用。
60.步骤s3中采用指纹识别模块对爬虫结果中的web框架进行识别,通过查找http头,http响应头的server,x-powered-by以及cookies识别框架类型,具体为:
61.针对比较特殊的struts2框架识别:
62.首先可以通过传递actionerrors参数,如果响应包出现异常,则可以认定为目标是基于struts2构建的。响应包出现异常主要有以下几种异常情况:
63.(1)响应包状态码400、500或者302;
64.(2)actionerrors传递的参数回显到了页面上面;
65.(3)页面的内容结构发生了明显的改变;
66.其次可以通过拼接/struts/webconsole.html是否存在来进行判断,如果响应包正常那么可以确定是struts框架。
67.最后通过keyword和checkbox_keyword参数,如果传递keyword=11,页面回显正常或者回显11到页面上,而传递checkbox_keyword=111回显错误,那么该网站可以确定是struts框架。
68.针对的weblogic框架识别,可以通过以下默认路径方式来识别weblogic框架:
69.(1)/console/login/loginform.jsp
70.(2)/wls-wsat/coordinatorporttype
71.(3)/_async/asyncresponseservice
72.(4)/ws_utc/config.do
73.待确定是struct2和weblogic框架,采用框架漏洞扫描模块,收集struct2和weblogic框架漏洞,分析struct2漏洞检测方法,struct2漏洞主要通过post或者get方式传递命令,接着判断返回包命令是否执行,如果命令成果执行,那么确定漏洞存在。通过执行命令{str1 str2},如果响应包里面含有str1 str2的结果,那么漏洞存在。
74.对于其他的框架类型,则采用基础漏洞扫描模块,包括xss扫描子模块和sql注入漏洞扫描子模块进行,其中,xss扫描子模块通过提取爬虫结果中获取的所有url的输入点,在输入点处换上xss测试语句,查看响应包中是否含有请求包里面构造的xss测试语句,如果存在xss测试语句那么可以验证该url存在xss漏洞。
75.本实施例中的sql注入漏洞扫描子模块则是通过sql注入测试语句和不同测试语句的响应包的区别,具体包括:
76.b1,首先进行waf判断,尝试使用含有特殊字符的url访问被注入的网站(受攻击的网站),判断是否存在waf,若存在,则判断是否能绕过waf,若能绕过,则修改测试语句,尝试绕过payload后进入步骤b2;若不能绕过,则直接进入步骤b2;
77.b2,测试sql注入模块有报错注入、布尔盲注和延时盲注,采用常用sql注入中的报错注入、联合查询语句进行测试,比较不同测试响应判断是否存在漏洞,若存在漏洞,则直接输出测试结果后,再测试布尔盲注和延时盲注;否则,直接测试布尔盲注和延时盲注。
78.本实施例中步骤b1中所述使用含有特殊字符的url访问,判断是否存在waf的方法具体包括:使用含有特殊字符的url访问,出现响应403,500或者响应含有banned,fierwall之类的关键词;
79.步骤b2包括:采用报错注入、布尔盲注和延时盲注作为sql基础测试,其中,所述报错注入采用枚举口令以暴力测试的方式注入,获得正确口令;当页面无法回显查询信息时,可以考虑使用延时盲注,延时盲注攻击者通过构造延时语句,当数据库执行该语句时如果满足判断条件那么执行时间短,如果不满足判断条件会导致执行时间很长,攻击者就可以通过响应时间长短判断测试语句是否正确,从而得到数据库信息;布尔盲注主要用于没有回显的情形,一般用于查询,布尔盲注通过响应返回的true或者false来判断数据库信息使用布尔盲注之前需要先判断数据是字符型还是数字型,之后再构造布尔语句判断页面回
显,用于查询数据库是否有该信息,若有则返回信息详情,若无则会有对应报错。
80.本实施例中的目录扫描模块主要实现方式:采用多线程方式,收集整理常用字典进行目录爆破,如果请求响应包状态码为200,302或者403,那么存在该目录。
81.通过采用本发明公开的上述技术方案,得到了如下有益的效果:
82.本发明提供了一种面向java web服务的漏洞扫描系统及方法,该方法在对于url处理上对于非该目标资产和无效链接进行url去除处理,提高扫描速率;在资产收集模块在常见搜索框登录框出对于输入参数进行收集整理;在目录扫描之前会处理收集到的url资产的子目录,提高目录扫描模块的发现率;之后的sql注入模块会对于waf进行识别绕过处理,该方法简单集成了常见java开发模板漏洞的漏洞库。
83.以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。
再多了解一些

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

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

相关文献