一种批量检测SSRF漏洞的方法及系统与流程

文档序号:14022817阅读:281来源:国知局
一种批量检测SSRF漏洞的方法及系统与流程

本发明涉及信息安全的技术领域,具体涉及一种批量检测ssrf漏洞的方法及系统。



背景技术:

目前,很多web应用都提供了从其他的服务器上获取数据的功能。比如,用户输入一个url,web应用可以根据该url获取图片,下载文件,读取文件内容等。附图1显示的就是提供这种功能的典型web应用(百度识图)。可以看到,在输入框中可以粘贴图片网址。

但是,这个功能如果被恶意使用,攻击者可以利用存在漏洞的web应用作为代理,攻击远程或者本地的服务器。这种形式的攻击称为服务端请求伪造攻击(server-siderequestforgery,ssrf)。一般情况下,ssrf攻击的目标是从外网无法访问的内部系统。ssrf形成的原因是由于web应用没有对用户输入的url和远程服务器返回的信息进行过滤与限制。

攻击者利用ssrf可以实现的攻击主要有5种:(1)可以对外网、服务器所在内网、本地进行端口扫描,获取一些服务的banner信息;(2)攻击运行在内网或本地的应用程序(比如溢出);(3)对内网web应用进行指纹识别,通过访问默认文件实现;(4)攻击内外网的web应用,主要是使用get参数就可以实现的攻击(比如struts2,sqli等);(5)利用file协议读取本地文件等。



技术实现要素:

基于上述问题,本发明提出了一种批量检测ssrf漏洞的方法及系统,基于scrapy框架,提取结构性数据而编写的应用框架,根据响应判断是否存在ssrf漏洞。

本发明提供如下技术方案:

一方面,本发明提供了一种批量检测ssrf漏洞的方法,包括:

步骤101,采集含有关键字的url或手动导入需要检测的url的文件;

步骤102,读取含有至少一个url的文件,对于每一个url,发送http请求,获取服务器端的第一响应,所述请求为正常的请求;

步骤103,手动输入ssrf攻击荷载,或选择载入包含多个ssrf攻击荷载的文件,再次发送http请求,请求的参数中包含ssrf攻击荷载,获取服务器端的第二响应,所述请求为包含荷载的请求;若所述第二响应为利用file协议读取本地文件且返回了文件内容,则检测到ssrf漏洞,对所述ssrf漏洞进行标记,执行步骤105;

步骤104,比较所述第一响应和第二响应,判断是否存在ssrf漏洞;

步骤105,检测结束,输出检测结果并保存。

其中,若所述文件为图片,比较所述第一响应和第二响应,两次响应加载的图片不同,则存在ssrf漏洞。

其中,采集含有关键字的url具体为:输入关键字或手动导入关键字文件,利用搜索引擎,收集含有关键字的url并生成url字典;手动导入需要检测的url的文件为输入该文件的绝对路径。

优选的,所述检测在可视化图形界面中进行。

另外,本发明还提供了一种批量检测ssrf漏洞的系统,所述系统包括:

采集模块,用于采集含有关键字的url或手动导入需要检测的url的文件;

正常请求模块,用于读取含有至少一个url的文件,对于每一个url,发送http请求,获取服务器端的第一响应,所述请求为正常的请求;

荷载请求模块,用于手动输入ssrf攻击荷载,或选择载入包含多个ssrf攻击荷载的文件,再次发送http请求,请求的参数中包含ssrf攻击荷载,获取服务器端的第二响应,所述请求为包含荷载的请求;若所述第二响应为利用file协议读取本地文件且返回了文件内容,则检测到ssrf漏洞,对所述ssrf漏洞进行标记,并转向输出模块输出;

比较模块,比较所述第一响应和第二响应,判断是否存在ssrf漏洞;

输出模块,检测结束时输出检测结果并保存。

其中,若所述文件为图片,比较所述第一响应和第二响应,两次响应加载的图片不同,则存在ssrf漏洞。

其中,采集含有关键字的url具体为:输入关键字或手动导入关键字文件,利用搜索引擎,收集含有关键字的url并生成url字典;手动导入需要检测的url的文件为输入该文件的绝对路径。

优选的,所述系统包括可视化界面,所述检测在可视化图形界面中进行。

本发明提供了一种批量检测ssrf漏洞的方法及系统,采集含有关键字的url或手动导入需要检测的url的文件,读取含有至少一个url的文件,对于每一个url,发送http请求,获取服务器端的第一响应,手动输入ssrf攻击荷载或选择载入包含多个ssrf攻击荷载的文件,再次发送http请求,请求的参数中包含ssrf攻击荷载,获取服务器端的第二响应,所述请求为包含荷载的请求,比较所述第一响应和第二响应,判断是否存在ssrf漏洞;本发明快速地检测web应用是否存在ssrf漏洞,提高工作效率。

附图说明

图1是本发明的方法流程图;

图2是本发明的系结构框图。

具体实施方式

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。

本发明可以批量检测web应用是否存在ssrf漏洞。很多web应用提供了从其他服务器应用获取数据的功能,但是没有对用户输入的url进行过滤与限制,导致web应用存在ssrf漏洞。比如,访问http://www.example.com/api/get.php?url=file:///etc/passwd可读取本地/etc/passwd文件。

本发明基于scrapy框架。scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。利用该框架,可以实现访问搜索引擎网站,根据关键字进行收集url,并生成url字典的功能。同时,利用该框架,可以实现访问每一个需要检测的url(正常的请求与包含ssrf攻击荷载的请求),并获取服务器端的响应,根据响应判断是否存在ssrf漏洞的功能。

本发明支持采集含有关键字的url(利用搜索引擎),并生成url字典(urls.txt)。本发明同时支持手动导入需要检测的多个url的文件。渗透测试工程师可以选择其中一种方法。第一种方法能够批量检测包含同一关键字的多个url。第二种方法能够手动、灵活配置需要检测的url。

在需要对多个web应用进行ssrf漏洞测试时,渗透测试工程师可以利用本发明快速地检测web应用是否存在ssrf漏洞,提高工作效率。

基于上述,一方面,本发明的实施方式提供了一种批量检测ssrf漏洞的方法,附图1为本发明的方法流程图,附图2为本发明的系统结构框图,包括:

步骤101,采集含有关键字的url或手动导入需要检测的url的文件;

首先选择采集含有关键字的url,或者选择手动导入需要检测的url的文件。如果选择第一种方法,需要输入关键字,或者手动导入关键字文件,然后利用搜索引擎,收集含有关键字的url并生成url字典(urls.txt)。如果选择第二种方法,需要输入该文件的绝对路径。

本发明基于scrapy框架,易于扩展。使用该框架,可以实现访问搜索引擎网站(比如,baidu,bing,google),采集含有关键字的url,例如,可以从url中寻找以下关键字:share、wap、url、link、src、source、target、u、3g、display、sourceurl、imageurl、domain。渗透测试工程师可以输入关键字或者手动导入关键字文件。根据关键字搜索完成后,采集匹配关键字的url,并生成url字典(urls.txt)。该字典中每一行记录一个url。然后程序可以读取该url字典,对于其中的每一个url,发送http请求,获取服务器端的响应。同时支持手动导入需要检测的url的文件。渗透测试工程师可以输入文件的绝对路径,然后程序同样可读取该文件,检测其中的每一个url是否存在ssrf漏洞。

步骤102,读取含有至少一个url的文件,对于每一个url,发送http请求,获取服务器端的第一响应,所述请求为正常的请求;

读取步骤101中的含有一个或多个url的文件。对于每一个url,发送http请求,获取服务器端的响应。这时发送的是正常的请求。

步骤103,手动输入ssrf攻击荷载,或选择载入包含多个ssrf攻击荷载的文件,再次发送http请求,请求的参数中包含ssrf攻击荷载,获取服务器端的第二响应,所述请求为包含荷载的请求;若所述第二响应为利用file协议读取本地文件且返回了文件内容,则检测到ssrf漏洞,对所述ssrf漏洞进行标记,执行步骤105;

选择手动输入ssrf攻击荷载(payload),或者选择载入包含多个ssrf攻击荷载的文件(payloads.txt)。再次发送http请求,请求的参数中包含ssrf攻击荷载(payload)。获取服务器端的响应。这时发送的是包含payload的请求。

步骤104,比较所述第一响应和第二响应,判断是否存在ssrf漏洞;

将发送正常的请求时服务器端的响应,与发送包含payload的请求时服务器端的响应相比较。需要根据payload的不同以及服务器端的响应,判断是否存在ssrf漏洞。比如,payload是file:///etc/passwd,即利用file协议读取本地文件/etc/passwd。如果服务器端的响应返回了/etc/passwd文件的内容,则证明存在ssrf漏洞,如果没有返回文件内容,则证明不存在ssrf漏洞。而payload为http://127.0.0.1:8080/phpmyadmin/themes/original/img/b_tblimport.png的情况时,目的是通过访问该文件来判断phpmyadmin是否安装。如果服务器端的响应中包含了该文件,则证明存在ssrf漏洞。而如果没有包含该文件,则证明不存在ssrf漏洞。

如果payload为内网另外一台服务器上的文件,比如http://192.168.0.10/123.txt时,如果该文件存在,会在原来的图片处显示文件的内容,如果该文件不存在,一般会显示404notfound。这时ssrf漏洞的作用是探测内网。由于不知道服务器上是否存在该名称的文件,如果文件也是一幅图片,则需要与正常请求时服务器端的响应比较,两次加载的图片不同,则说明存在ssrf漏洞。这时就需要比较正常请求时的响应与包含payload请求时的响应。

步骤105,检测结束,输出检测结果并保存。

优选的,所述检测在可视化图形界面中进行。

本发明支持采集含有关键字的url(利用搜索引擎),并生成url字典(urls.txt)。同时支持手动导入需要检测的多个url的文件,然后可以选择手动输入ssrf攻击荷载(payload),或者选择载入包含多个ssrf攻击荷载的文件(payloads.txt)。对于每一个url,根据payload的不同以及服务器端的响应,判断是否存在ssrf漏洞。以上提及的关键字、url文件以及payload文件均可灵活配置。在需要对多个web应用进行ssrf漏洞测试时,渗透测试工程师可以利用本发明快速地检测web应用是否存在ssrf漏洞,提高工作效率。

本发明提供了一种批量检测ssrf漏洞的方法,采集含有关键字的url或手动导入需要检测的url的文件,读取含有至少一个url的文件,对于每一个url,发送http请求,获取服务器端的第一响应,手动输入ssrf攻击荷载或选择载入包含多个ssrf攻击荷载的文件,再次发送http请求,请求的参数中包含ssrf攻击荷载,获取服务器端的第二响应,所述请求为包含荷载的请求,比较所述第一响应和第二响应,判断是否存在ssrf漏洞;本发明快速地检测web应用是否存在ssrf漏洞,提高工作效率。

另一方面,本发明的实施方式提供了一种批量检测ssrf漏洞的系统,附图1为本发明的方法流程图,附图2为本发明的系统结构框图,所述系统包括:

采集模块201,用于采集含有关键字的url或手动导入需要检测的url的文件;

首先选择采集含有关键字的url,或者选择手动导入需要检测的url的文件。如果选择第一种方法,需要输入关键字,或者手动导入关键字文件,然后利用搜索引擎,收集含有关键字的url并生成url字典(urls.txt)。如果选择第二种方法,需要输入该文件的绝对路径。

本发明基于scrapy框架,易于扩展。使用该框架,可以实现访问搜索引擎网站(比如,baidu,bing,google),采集含有关键字的url,例如,可以从url中寻找以下关键字:share、wap、url、link、src、source、target、u、3g、display、sourceurl、imageurl、domain。渗透测试工程师可以输入关键字或者手动导入关键字文件。根据关键字搜索完成后,采集匹配关键字的url,并生成url字典(urls.txt)。该字典中每一行记录一个url。然后程序可以读取该url字典,对于其中的每一个url,发送http请求,获取服务器端的响应。同时支持手动导入需要检测的url的文件。渗透测试工程师可以输入文件的绝对路径,然后程序同样可读取该文件,检测其中的每一个url是否存在ssrf漏洞。

正常请求模块202,用于读取含有至少一个url的文件,对于每一个url,发送http请求,获取服务器端的第一响应,所述请求为正常的请求;

读取步骤101中的含有一个或多个url的文件。对于每一个url,发送http请求,获取服务器端的响应。这时发送的是正常的请求。

荷载请求模块203,用于手动输入ssrf攻击荷载,或选择载入包含多个ssrf攻击荷载的文件,再次发送http请求,请求的参数中包含ssrf攻击荷载,获取服务器端的第二响应,所述请求为包含荷载的请求;若所述第二响应为利用file协议读取本地文件且返回了文件内容,则检测到ssrf漏洞,对所述ssrf漏洞进行标记,并转向输出模块输出;

选择手动输入ssrf攻击荷载(payload),或者选择载入包含多个ssrf攻击荷载的文件(payloads.txt)。再次发送http请求,请求的参数中包含ssrf攻击荷载(payload)。获取服务器端的响应。这时发送的是包含payload的请求。

比较模块204,用于比较所述第一响应和第二响应,判断是否存在ssrf漏洞;

将发送正常的请求时服务器端的响应,与发送包含payload的请求时服务器端的响应相比较。需要根据payload的不同以及服务器端的响应,判断是否存在ssrf漏洞。比如,payload是file:///etc/passwd,即利用file协议读取本地文件/etc/passwd。如果服务器端的响应返回了/etc/passwd文件的内容,则证明存在ssrf漏洞,如果没有返回文件内容,则证明不存在ssrf漏洞。而payload为http://127.0.0.1:8080/phpmyadmin/themes/original/img/b_tblimport.png的情况时,目的是通过访问该文件来判断phpmyadmin是否安装。如果服务器端的响应中包含了该文件,则证明存在ssrf漏洞。而如果没有包含该文件,则证明不存在ssrf漏洞。

如果payload为内网另外一台服务器上的文件,比如http://192.168.0.10/123.txt时,如果该文件存在,会在原来的图片处显示文件的内容,如果该文件不存在,一般会显示404notfound。这时ssrf漏洞的作用是探测内网。由于不知道服务器上是否存在该名称的文件,如果文件也是一幅图片,则需要与正常请求时服务器端的响应比较,两次加载的图片不同,则说明存在ssrf漏洞。这时就需要比较正常请求时的响应与包含payload请求时的响应。

输出模块205,检测结束,用于输出检测结果并保存。

优选的,所述系统包括可视化界面,所述检测在可视化图形界面中进行。

本发明支持采集含有关键字的url(利用搜索引擎),并生成url字典(urls.txt)。同时支持手动导入需要检测的多个url的文件,然后可以选择手动输入ssrf攻击荷载(payload),或者选择载入包含多个ssrf攻击荷载的文件(payloads.txt)。对于每一个url,根据payload的不同以及服务器端的响应,判断是否存在ssrf漏洞。以上提及的关键字、url文件以及payload文件均可灵活配置。在需要对多个web应用进行ssrf漏洞测试时,渗透测试工程师可以利用本发明快速地检测web应用是否存在ssrf漏洞,提高工作效率。

本发明提供了一种批量检测ssrf漏洞的系统,采集含有关键字的url或手动导入需要检测的url的文件,读取含有至少一个url的文件,对于每一个url,发送http请求,获取服务器端的第一响应,手动输入ssrf攻击荷载或选择载入包含多个ssrf攻击荷载的文件,再次发送http请求,请求的参数中包含ssrf攻击荷载,获取服务器端的第二响应,所述请求为包含荷载的请求,比较所述第一响应和第二响应,判断是否存在ssrf漏洞;本发明快速地检测web应用是否存在ssrf漏洞,提高工作效率。

对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其他实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1