掌桥专利:专业的专利平台
掌桥专利
首页

一种XXE攻击防御方法、装置、设备及存储介质

文献发布时间:2024-04-18 19:57:31


一种XXE攻击防御方法、装置、设备及存储介质

技术领域

本申请涉及网络安全领域,特别涉及一种XXE攻击防御方法、装置、设备及存储介质。

背景技术

由于业务需求,多WEB(互联网总称)应用程序往往会采用XML(eXtensible MarkupLanguage,可扩展标记语言)格式进行数据传输。当应用程序解析XML输入时,若没有禁止外部实体的加载,导致可加载恶意外部文件,将可能存在XXE(XML External EntityInjection,XML外部实体注入漏洞)漏洞,该漏洞可导致攻击者随意造成文件读取、内网端口扫描、命令执行等危害。

现有的技术手段一般都侧重于对XXE漏洞的检测,缺乏后续如何阻断XXE攻击和如何捕获到利用XXE进行攻击的攻击者身份信息。

因此,目前本领域技术人员迫切需要解决的技术问题是,如何及时有效地阻断攻击并且获取攻击者身份信息。

发明内容

有鉴于此,本申请的目的在于提供一种XXE攻击防御方法、装置、设备及存储介质,解决了现有技术中不能及时有效地阻断攻击并且获取攻击者身份信息的问题。

为解决上述技术问题,本申请提供了一种XXE攻击防御方法,包括:

根据规则匹配确定满足XXE攻击特征的POST请求;

当所述POST请求中存在有效的XXE攻击时,则将所述POST请求丢弃,并将预设数据包返回到攻击者终端,利用所述预设数据包中的JS代码访问JSONP探针获取攻击者身份信息;

利用所述攻击者身份信息对所述XXE攻击进行防御。

可选的,所述根据规则匹配确定满足XXE攻击特征的POST请求,包括:

获取网站业务中的HTTP数据包和预设snort规则;

利用所述预设snort规则对所述HTTP数据包进行特征匹配,确定符合XXE攻击特征的POST请求。

可选的,所述获取预设snort规则,包括:

获取预设snort规则,所述预设snort规则至少包括传输数据符合XML特征、声明中引入外部实体的格式特征和利用预设协议符合攻击协议特征的一项。

可选的,所述POST请求中存在有效的XXE攻击,包括:

将所述POST请求中的外部实体地址替换为预设DNSLOG服务器地址;

当所述预设DNSLOG服务器监听到预设的网络DNS请求,则所述POST请求中存在有效的XXE攻击。

可选的,还包括:

将所述外部实体地址进行记录,利用所述外部实体地址进行XXE攻击检测。

可选的,所述将预设数据包返回到攻击者终端,利用所述预设数据包中的JS代码访问JSONP探针获取攻击者身份信息,包括:

将所述预设数据包返回到所述攻击者终端;

通过所述攻击者终端加载所述预设数据包中的JS代码,向所述访问JSONP探针发出请求;

当所述攻击者终端中发出所述XXE攻击的浏览器未清理Cookie,则通过所述浏览器获取所述攻击者身份信息。

可选的,所述POST请求中存在有效的XXE攻击,包括:

当所述XXE攻击为回显型XXE攻击时,则通过接收到预设服务器文件或返回预设内容确定所述POST请求中存在有效XXE攻击。

本申请还提供了一种XXE攻击防御装置,包括:

POST请求确定模块,用于根据规则匹配确定满足XXE攻击特征的POST请求;

攻击者身份信息获取模块,用于当所述POST请求中存在有效的XXE攻击时,则将所述POST请求丢弃,并将预设数据包返回到攻击者终端,利用所述预设数据包中的JS代码访问JSONP探针获取攻击者身份信息;

防御模块,用于利用所述攻击者身份信息对所述XXE攻击进行防御。

本申请还提供了一种XXE攻击防御设备,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现上述的XXE攻击防御方法的步骤。

本申请还提供了一种存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述的XXE攻击防御方法的步骤。

可见,本申请通过根据规则匹配确定满足XXE攻击特征的POST请求;当POST请求中存在有效的XXE攻击时,则将POST请求丢弃,并将预设数据包返回到攻击者终端,利用预设数据包中的JS代码访问JSONP探针获取攻击者身份信息;利用攻击者身份信息对XXE攻击进行防御。本方法可以识别出有效的XXE攻击,并对该攻击进行拦截处理和利用探针请求获取攻击者信息,利用攻击者信息对XXE攻击进行防御。同时,正常的业务请求不受影响。

此外,本申请还提供了一种XXE攻击防御装置、设备及存储介质,同样具有上述有益效果。

附图说明

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

图1为本申请实施例提供的一种XXE攻击防御方法的流程图;

图2为本申请实施例提供的一种XXE攻击防御方法的流程示例图;

图3为本申请实施例提供的一种XXE攻击防御装置的结构示意图;

图4为本申请实施例提供的一种XXE攻击防御设备的结构示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

随着互联网的快速发展,越来越多的WEB应用被用于Internet(网络)中。对于WEB应用软件而言,是一种借助Internet技术加以连接的客户/服务器软件,并且可以传输数据。在市场需求的不断推动下,Web应用软件的种类与数量也不断增加,软件的复杂程度也不断增加,软件的质量与安全问题已成为人们越来越关注的问题。

XML是WEB中交换和传输数据中最常用的格式之一,很多的web server(提供Web服务的服务器)协议都是基于XML进行定义。JSON(JavaScript Object Notation,一种轻量级的数据交换格式)和XML是web传输中常见的两种文本格式。相比JSON,XML格式严格规范,更容易传输更加复杂的数据。由于业务需求,很多WEB应用程序往往会采用XML格式进行数据传输。当应用程序解析XML输入时,没有禁止外部实体的加载,导致可加载恶意外部文件,将可能存在XXE漏洞,该漏洞可让攻击者随意造成文件读取、内网端口扫描、命令执行等危害。本方法旨在自动检测发现XXE漏洞,并及时阻断恶意的攻击,以保障服务器和业务系统平稳安全运行。

请参考图1,图1为本申请实施例提供的一种XXE攻击防御方法的流程图。该方法可以包括:

S101:根据规则匹配确定满足XXE攻击特征的POST请求。

本实施例的执行主体为处理器。步骤S101从数据格式上判断POST请求是否符合XXE攻击的特征,根据规则匹配的方法。本实施例并不对具体的规则匹配方法做限定。例如,可以采用正则匹配的方法;或者还可以采用snort(一种开源入侵检测系统)规则匹配的方法。

进一步的,为了提高检测符合XXE攻击特征的POST请求的准确率,上述根据规则匹配确定满足XXE攻击特征的POST请求,可以包括以下步骤,具体可以包括:

步骤21:获取网站业务中的HTTP数据包和预设snort规则;

步骤22:利用预设snort规则对所述HTTP数据包进行特征匹配,确定符合XXE攻击特征的POST请求。

HTTP数据包中通常包括POST型HTTP请求和GET型HTTP请求,本实施例检测的对象是XML格式传输的数据包,由于XML往往采用POST型HTTP数据包进行传输,所以本申请检测对象重点是POST请求,利用预设snort规则对所述HTTP数据包中的各个POST请求进行特征匹配,确定符合XXE攻击特征的POST请求。本实施例并不对预设snort规则做限定。例如,可以是网络上现有的XXE攻击检测规则;或者还可以是自行编写的XXE攻击检测规则。

进一步的,为了XXE攻击检测的准确性,上述获取预设snort规则,可以包括以下步骤,具体可以包括:

获取预设snort规则,预设snort规则至少包括传输数据符合XML特征、声明中引入外部实体的格式特征和利用预设协议符合攻击协议特征的一项。

本实施例在snort规则中定义根据多个特征进行匹配,至少包括传输数据符合XML特征、声明中引入外部实体的格式特征、以及利用特定协议进行攻击。其中特定协议例如file(本地文件传输协议,用于访问本地计算机中的文件)协议和ftp(File TransferProtocol,文件传输协议)协议。

S102:当POST请求中存在有效的XXE攻击时,则将POST请求丢弃,并将预设数据包返回到攻击者终端,利用预设数据包中的JS代码访问JSONP探针获取攻击者身份信息。

当POST请求中存在有效的XXE攻击时,则将该请求丢弃,以阻断该攻击,并利用预先构建特定的返回数据包或探针的方式获取攻击者的身份信息,另以便根据身份信息进行分析,进一步进行反制或者攻击溯源。将特定的返回数据包即预设数据包返回到攻击者终端,在该攻击者终端加载特定数据包中JS代码访问JSONP探针获取攻击者身份信息。

进一步的,为了更快捷有效地检测POST请求中是否存在有效地XXE攻击,上述POST请求中存在有效的XXE攻击,可以包括以下步骤,具体可以包括:

步骤41:将POST请求中的外部实体地址替换为预设DNSLOG服务器地址;

步骤42:当预设DNSLOG服务器监听到预设的网络DNS请求,则POST请求中存在有效的XXE攻击。

本实施例的目的是判断满足规则匹配的POST请求中是否存在有效的XXE攻击。因为当后端程序不存在XXE漏洞或存在限制或过滤时,则该攻击请求无效,算作无效的XXE攻击,所以需要进行攻击有效性判断。当引入外部实体的地址中包含了DNSLOG(DNS的日志,DNS(Domain Name System,域名系统,负责把域名转换为IP地址)在域名解析时会留下域名和解析IP(Internet Protocol,网络协议)的记录)平台生成的特定域名,一旦后端请求解析了该域名地址DNSLOG平台会接收到该域名的DNS请求,则说明存在XXE漏洞。

进一步的,上述将预设数据包返回到攻击者终端,利用预设数据包中的JS代码访问JSONP探针获取攻击者身份信息,可以包括以下步骤,具体可以包括:

步骤61:将预设数据包返回到攻击者终端;

步骤62:通过攻击者终端加载预设数据包中的JS代码,向访问JSONP探针发出请求;

步骤63:当攻击者终端中发出XXE攻击的浏览器未清理Cookie,则通过浏览器获取攻击者身份信息。

本实施例将特定的数据包(预设数据包)返回到攻击者终端,并在特定的返回包中加载JS(Javascript,是一种由Netscape的LiveScript发展而来的脚本语言)代码,由于JS请求可跨域,可向JSONP(JSON with Padding,用于解决主流浏览器的跨域数据访问的问题)探针发出请求;如果攻击者在实施攻击时使用未清理Cookie(存储在用户本地终端上的数据)的常用浏览器,则可以通过蜜罐系统来捕获攻击者相关信息。

进一步的,为了针对特殊类型的XXE攻击可以采取特殊的手段,提高检测效率,上述POST请求中存在有效的XXE攻击,可以包括以下步骤,具体可以包括:

当XXE攻击为回显型XXE攻击时,则通过接收到预设服务器文件或返回预设内容确定POST请求中存在有效XXE攻击。

这是一种特殊情况,即当XXE攻击为回显型XXE攻击时,则可以通过接收到预设服务器文件或返回预设内容确定POST请求中存在有效XXE攻击。

S103:利用攻击者身份信息对XXE攻击进行防御。

对攻击者身份信息进行分析,进一步进行反制或者攻击溯源。

进一步的,为了便于后期的攻击阻断和反制攻击,还可以包括以下步骤,具体可以包括:

将外部实体地址进行记录,利用外部实体地址进行XXE攻击检测。

本实施例可以通过正则规则的方法匹配出外部实体地址;外部实体地址一般为攻击者所用,记录该地址有利于后期阻断和反制。

应用本申请实施例提供的XXE攻击防御方法,通过根据规则匹配确定满足XXE攻击特征的POST请求;当POST请求中存在有效的XXE攻击时,则将POST请求丢弃,并将预设数据包返回到攻击者终端,利用预设数据包中的JS代码访问JSONP探针获取攻击者身份信息;利用攻击者身份信息对XXE攻击进行防御。本方法可以识别出有效的XXE攻击,并对该攻击进行拦截处理和利用探针请求获取攻击者信息,利用攻击者信息对XXE攻击进行防御。同时,正常的业务请求不受影响。并且,利用snort规则匹配方法确定是否符合规则的POST请求,提高检测的准确性;并且,预设snort规则至少包括传输数据符合XML特征、声明中引入外部实体的格式特征和利用预设协议符合攻击协议特征的一项,进一步的提高XXE攻击检测的准确性;并且,将外部实体地址替换为预设DNSLOG服务器地址,并利用预设DNSLOG服务器进行监听,更快捷有效地检测POST请求中是否存在有效地XXE攻击;并且,针对特殊类型的XXE攻击可以采取特殊的手段,提高检测效率;并且,将外部实体地址进行记录,利用外部实体地址进行XXE攻击检测,更便于后期的攻击阻断和反制攻击。

为了使本申请更便于理解,具体请参考图2,图2为本申请实施例提供的一种XXE攻击防御方法的流程示例图;具体可以包括:

获取网站所有的POST请求,分析POST请求是否满足snort规则,当满足时将外部实体地址替换为预设DNSLOG服务器地址,预设DNSLOG服务器是否监听到DNS请求,当监听到DNS请求时,POST请求存在有效XXE攻击,则执行将POST请求丢弃,并记录外部实体地址,将构建的数据包返回到攻击者终端,通过攻击者终端加载预设数据包中的JS代码,向访问JSONP探针发出请求;当攻击者终端中发出XXE攻击的浏览器未清理Cookie,则通过浏览器获取攻击者身份信息。

下面对本申请实施例提供的XXE攻击防御装置进行介绍,下文描述的XXE攻击防御装置与上文描述的XXE攻击防御方法可相互对应参照。

具体请参考图3,图3为本申请实施例提供的一种XXE攻击防御装置的结构示意图,可以包括:

POST请求确定模块100,用于根据规则匹配确定满足XXE攻击特征的POST请求;

攻击者身份信息获取模块200,用于当所述POST请求中存在有效的XXE攻击时,则将所述POST请求丢弃,并将预设数据包返回到攻击者终端,利用所述预设数据包中的JS代码访问JSONP探针获取攻击者身份信息;

防御模块300,用于利用所述攻击者身份信息对所述XXE攻击进行防御。

基于上述实施例,其中POST请求确定模块100,可以包括:

请求和规则获取单元,用于获取网站业务中的HTTP数据包和预设snort规则;

特征匹配单元,用于利用所述预设snort规则对所述HTTP数据包进行特征匹配,确定符合XXE攻击特征的POST请求。

基于上述实施例,其中请求和规则获取单元中获取预设snort规则,可以包括:

获取子单元,用于获取预设snort规则,所述预设snort规则至少包括传输数据符合XML特征、声明中引入外部实体的格式特征和利用预设协议符合攻击协议特征的一项。

基于上述实施例,其中攻击者身份信息获取模块200中的POST请求中存在有效的XXE攻击,可以包括:

替换单元,用于将所述POST请求中的外部实体地址替换为预设DNSLOG服务器地址;

监听单元,用于当所述预设DNSLOG服务器监听到预设的网络DNS请求,则所述POST请求中存在有效的XXE攻击。

基于上述实施例,其中XXE攻击防御装置,还可以包括:

记录模块,用于将所述外部实体地址进行记录,利用所述外部实体地址进行XXE攻击检测。

基于上述任一实施例,其中攻击者身份信息获取模块200中将预设数据包返回到攻击者终端,利用所述预设数据包中的JS代码访问JSONP探针获取攻击者身份信息,可以包括:

返回单元,用于将所述预设数据包返回到所述攻击者终端;

加载单元,用于通过所述攻击者终端加载所述预设数据包中的JS代码,向所述访问JSONP探针发出请求;

获取单元,用于当所述攻击者终端中发出所述XXE攻击的浏览器未清理Cookie,则通过所述浏览器获取所述攻击者身份信息。

基于上述实施例,其中攻击者身份信息获取模块200中的POST请求中存在有效的XXE攻击,可以包括:

攻击确定单元,用于当所述XXE攻击为回显型XXE攻击时,则通过接收到预设服务器文件或返回预设内容确定所述POST请求中存在有效XXE攻击。

需要说明的是,上述XXE攻击防御装置中的模块以及单元在不影响逻辑的情况下,其顺序可以前后进行更改。

应用本申请实施例提供的XXE攻击防御装置,通过根据规则匹配确定满足XXE攻击特征的POST请求;当POST请求中存在有效的XXE攻击时,则将POST请求丢弃,并将预设数据包返回到攻击者终端,利用预设数据包中的JS代码访问JSONP探针获取攻击者身份信息;利用攻击者身份信息对XXE攻击进行防御。该装置可以识别出有效的XXE攻击,并对该攻击进行拦截处理和利用探针请求获取攻击者信息,利用攻击者信息对XXE攻击进行防御。同时,正常的业务请求不受影响。并且,利用snort规则匹配方法确定是否符合规则的POST请求,提高检测的准确性;并且,预设snort规则至少包括传输数据符合XML特征、声明中引入外部实体的格式特征和利用预设协议符合攻击协议特征的一项,进一步的提高XXE攻击检测的准确性;并且,将外部实体地址替换为预设DNSLOG服务器地址,并利用预设DNSLOG服务器进行监听,更快捷有效地检测POST请求中是否存在有效地XXE攻击;并且,针对特殊类型的XXE攻击可以采取特殊的手段,提高检测效率;并且,将外部实体地址进行记录,利用外部实体地址进行XXE攻击检测,更便于后期的攻击阻断和反制攻击。

下面对本申请实施例提供的XXE攻击防御设备进行介绍,下文描述的XXE攻击防御设备与上文描述的XXE攻击防御方法可相互对应参照。

请参考图4,图4为本申请实施例提供的一种XXE攻击防御设备的结构示意图,可以包括:

存储器10,用于存储计算机程序;

处理器20,用于执行计算机程序,以实现上述的XXE攻击防御方法。

存储器10、处理器20、通信接口31均通过通信总线32完成相互间的通信。

在本申请实施例中,存储器10中用于存放一个或者一个以上程序,程序可以包括程序代码,程序代码包括计算机操作指令,在本申请实施例中,存储器10中可以存储有用于实现以下功能的程序:

根据规则匹配确定满足XXE攻击特征的POST请求;

当POST请求中存在有效的XXE攻击时,则将POST请求丢弃,并将预设数据包返回到攻击者终端,利用预设数据包中的JS代码访问JSONP探针获取攻击者身份信息;

利用攻击者身份信息对XXE攻击进行防御。

在一种可能的实现方式中,存储器10可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统,以及至少一个功能所需的应用程序等;存储数据区可存储使用过程中所创建的数据。

此外,存储器10可以包括只读存储器和随机存取存储器,并向处理器提供指令和数据。存储器的一部分还可以包括NVRAM。存储器存储有操作系统和操作指令、可执行模块或者数据结构,或者它们的子集,或者它们的扩展集,其中,操作指令可包括各种操作指令,用于实现各种操作。操作系统可以包括各种系统程序,用于实现各种基础任务以及处理基于硬件的任务。

处理器20可以为中央处理器(Central Processing Unit,CPU)、特定应用集成电路、数字信号处理器、现场可编程门阵列或者其他可编程逻辑器件,处理器20可以是微处理器或者也可以是任何常规的处理器等。处理器20可以调用存储器10中存储的程序。

通信接口31可以为通信模块的接口,用于与其他设备或者系统连接。

当然,需要说明的是,图4所示的结构并不构成对本申请实施例中XXE攻击防御设备的限定,在实际应用中XXE攻击防御设备可以包括比图4所示的更多或更少的部件,或者组合某些部件。

下面对本申请实施例提供的存储介质进行介绍,下文描述的可读存储介质与上文描述的XXE攻击防御方法可相互对应参照。

本申请还提供一种存储介质,该存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述的XXE攻击防御方方法的步骤。

该存储介质可以包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应该认为超出本申请的范围。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系属于仅仅用来将一个实体或者操作与另一个实体或者操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其他任何变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。

以上对本申请所提供的一种XXE攻击防御方法、装置、设备及存储介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

技术分类

06120116458912