什么是XXE攻击?如何进行防护

devtools/2024/12/22 11:19:54/

安全性很难做到正确,即使在当今具有安全意识的世界中,也存在一些严重的漏洞,例如 XML 外部实体 (XXE),它们被忽视并最终成为破坏的原因。 XML 外部实体 (XXE) 攻击是一种计算机安全漏洞,通常存在于 Web 应用程序中,允许攻击者泄露通常受到连接网络或服务器保护的文件。 XXE 漏洞现已为人所知十多年,但自动化工具仅在最近才开始检测此问题的基本案例。 因此,如果利用此漏洞,损害可能非常严重,从信息泄露到拒绝服务,甚至在一切就绪的情况下远程执行代码。

一、什么是XXE攻击?

XXE攻击是一种利用XML解析器的漏洞,通过引入外部实体(External Entity)来执行恶意代码或获取敏感信息的攻击方式。攻击者通常在XML文档中嵌入恶意的外部实体引用,当XML解析器处理这些文档时,会触发对外部资源的访问,进而执行攻击者指定的恶意操作。

二、XXE攻击原理是什么?


XXE攻击的核心在于利用XML解析器对外部实体引用的支持。XML规范允许在XML文档中引用外部资源,如文件、网络地址等。然而,一些XML解析器在实现过程中,并未对外部实体引用的来源和内容进行严格的验证和过滤,从而导致攻击者可以利用这一漏洞执行恶意操作。

攻击者通常通过构造恶意的XML文档,将恶意代码或敏感信息嵌入到外部实体引用中。当目标系统解析这些文档时,会触发对恶意外部实体的访问,进而执行攻击者指定的恶意操作。这些恶意操作可能包括文件读取、命令执行、拒绝服务攻击等,严重威胁目标系统的安全


三、什么是XML实体?

XML允许使用实体。实体充当将在xml文档中使用的数据的“值”占位符。它们有助于缩小重复信息的条目并允许更轻松地编辑。XML 有几个预定义的实体,用于引用特殊字符,如”和‘&’。XML 还允许用户定义自定义实体。

根据应用程序的 XML 解析器的设置方式,可以通过多种方式利用 XXE。


四、XXE是如何被利用的?

XXE可以通过多种方式被利用,具体取决于应用程序的XML解析器的设置方式以及响应在客户端的呈现方式。该漏洞利用的一些载体包括应用程序的输出、后端评估和外部交互。

本地文件披露–场景1

当应用程序评估易受攻击的请求并在客户端打印数据时,本地文件泄露是可能的。使用正确配置的攻击向量,配置不当的解析器现在将查看服务器的系统文件并以攻击者请求的内容进行响应。

本地文件披露–场景2

如果请求的文件不包含文本数据或者是损坏的xml文件,那么我们需要采取不同的方法。我们将需要使用子DTD来提取这些文件类型。 这里使用参数实体而不是一般实体。

本地文件披露–场景3

当应用程序评估用户输入并能够查找外部文件但不会在屏幕上打印任何输出数据时,我们将需要通过称为带外XXE的方法提取数据。

拒绝服务

创建拒绝服务的方法之一是使用“外部实体扩展”,可以在其中引用外部xml文件。如果XML解析器配置不正确,这将向攻击者IP发出 HTTP请求。

攻击者IP上的目标文件可以以递归引用其他外部实体的方式编写。在XML解析器处理此文件之前,它必须检索所有已定义的实体。这可能导致所有可用资源的耗尽并有效地造成拒绝服务。

根据应用程序及其 XML 解析器的配置方式,可以利用 XXE 来实现高级攻击,例如:

1.内部端口扫描

端口扫描是指某些别有用心的人发送一组端口扫描消息,试图以此侵入某台计算机,并了解其提供的计算机网络服务类型(这些网络服务均与端口号相关)。端口扫描是计算机解密高手喜欢的一种方式。攻击者可以通过它了解到从哪里可探寻到攻击弱点。实质上,端口扫描包括向每个端口发送消息,一次只发送一个消息。接收到的回应类型表示是否在使用该端口并且可由此探寻弱点。

2.服务器端请求伪造

服务器端请求伪造(Server-Side Request Forgery,SSRF)是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。产生SSRF漏洞的环节就出现在目标网站接受请求后在服务器端验证请求是否合法。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。SSRF形成的原因是服务端提供了从其他服务器应用获取数据的功能,在用户可控的情况下,未对目标地址进行过滤与限制,导致此漏洞的产生。SSRF在攻击中扮演了中间者的角色,有时候直接攻击无法成效,通过SSRF可以利用其他主机的漏洞,攻击目标。如SSRF+SQL注入攻击内部的SQL 数据库 。

3.远程代码执行

远程代码执行是指攻击者可能会通过远调用的方式来攻击或控制计算机设备,无论该设备在哪里。会使得攻击者在用户运行应用程序时执行恶意程序,并控制这个受影响的系统。攻击者一旦访问该系统后,它会试图提升其权限。

五、XXE攻击防范措施

1.升级XML解析器:及时升级XML解析器到最新版本,以修复已知的漏洞和缺陷。同时,关注安全漏洞通报和修复信息,及时采取相应的防护措施。

2.限制外部实体引用:在XML解析器的配置中,限制或禁用外部实体引用的功能。这可以防止攻击者利用外部实体引用执行恶意操作。

3.输入验证和过滤:对XML文档的输入进行严格的验证和过滤,确保其中不包含恶意代码或敏感信息。使用白名单机制来限制允许的输入内容,防止潜在的攻击。

4.访问控制和权限管理:严格控制对XML解析器的访问权限,确保只有经过授权的用户和应用程序能够执行相关操作。同时,对敏感数据和关键操作进行权限管理,防止未经授权的访问和操作。

除此之外,我们知道XXE攻击是一种利用XML解析器的漏洞,通过引入外部实体(External Entity)来执行恶意代码或获取敏感信息的攻击方式。可以通过漏洞扫描服务来进行针对性的防护。

漏洞扫描服务(Vulnerability Scan Service)集Web漏洞扫描、操作系统漏洞扫描、资产内容合规检测、配置基线扫描、弱密码检测五大核心功能,自动发现网站或服务器在网络中的安全风险,为云上业务提供多维度的安全检测服务,满足合规要求,让安全弱点无所遁形。为什么说漏洞扫描服务这么适合呢?漏洞扫描服务主要的优势在于:

一、扫描全面

涵盖多种类型资产扫描,支持云内外网站和主机扫描,支持内网扫描、智能关联各资产之间的联系,自动发现资产指纹信息,避免扫描盲区。

二、高效精准

采用web2.0智能爬虫技术,内部验证机制不断自测和优化,提高检测准确率,时刻关注业界紧急CVE爆发漏洞情况,自动扫描,最快速了解资产安全风险。

三、简单易用

配置简单,一键全网扫描。可自定义扫描事件,分类管理资产安全,让运维工作更简单,风险状况更清晰了然。

四、报告全面

清晰简洁的扫描报告,多角度分析资产安全风险,多元化数据呈现,将安全数据智能分析和整合,使安全现状清晰明了。


漏洞扫描服务能提供的服务内容:

一、针对Web漏洞扫描--网站的漏洞与弱点易于被黑客利用,形成攻击,带来不良影响,造成经济损失。

1.常规漏洞扫描

丰富的漏洞规则库,可针对各种类型的网站进行全面深入的漏洞扫描,提供专业全面的扫描报告。

2.最紧急漏洞扫描

针对最紧急爆发的VCE漏洞,安全专家第一时间分析漏洞、更新规则、提供最快速专业的VCE漏洞扫描。

二、针对弱密码扫描--主机或中间件等资产一般使用密码进行远程登录,攻击者往往使用扫描技术来探测其用户名和弱口令。

1.多场景可用

全方位的OS连接,涵盖90%的中间件,支持标准Web业务弱密码检测、操作系统、数据库等弱口令检测。

2.丰富的弱密码库

丰富的弱密码匹配库,模拟黑客对各场景进行弱口令探测,同时支持自定义字典进行密码检测。

三、针对中间件扫描--中间件可帮助用户灵活、高效地开发和集成复杂的应用软件,一旦被黑客发现漏洞并利用,将影响上下层安全

1.丰富的扫描场景

支持主流Web容器、前台开发框架、后台微服务技术栈的版本漏洞和配置合规扫描。

2.多扫描方式可选

支持通过标准包或者自定义安装等多种方式识别服务器中的中间件及其版本,全方位发现服务器中的漏洞风险。

四、针对内容合规检测--网站被发现有不合规言论时,会给企业造成品牌和经济上的多重损失。

1.精准识别

同步更新时政热点和舆情事件的样本数据,准确定位各种涉黄、涉暴涉恐、涉政等敏感内容。

2.智能高效

对文本、图片内容进行上下文语义分析,智能识别复杂变种文本。

总之,XXE攻击是一种具有隐蔽性、多样性和跨平台性的网络攻击手段。为了有效防范此类攻击,我们需要关注XML解析器的安全漏洞和缺陷,采取相应的防范措施来确保系统的安全。同时,加强网络安全意识和培训,提高员工对网络安全问题的认识和应对能力,也是防范XXE攻击的重要手段之一。


http://www.ppmy.cn/devtools/2221.html

相关文章

Day37|贪心算法part06:738.单调递增的数字、968. 监控二叉树、贪心总结

738. 单调递增的数字 总体思想就是从后往前遍历,比较第i位和第i1位的大小,不符合顺序char[i]减1,i1位填9,找到需要填9的最先位置,然后填9。 class Solution {public int monotoneIncreasingDigits(int n) {String s …

WEB前端-笔记(二)

一、事件 1.1类型 focus 获取焦点事件 ipt.addEventListener("focus", () > {.log("") }) blue 失去焦点事件 ipt.addEventListener("blur", () > {console.log("") }) inout 文本输入事件 txt.addEventListener("i…

Elasticsearch克隆索引

我所使用的Elasticsearch的版本是基于7.17.7。 需求是将某个ES的索引进行克隆。例如我要将索引test_0419_1克隆一份新的索引test_0419_2。步骤如下: 首先将源索引进行修改PUT /test_0419_1/_block/write,即禁止对这个索引进行写数据操作。然后执行克隆…

ArrayList的基本使用

我们知道,在java当中,当我们需要将一些相同数据放入一块时,需要使用数组,但是它有个弊端,数组在创建时必须声明长度,也就是数组长度不可变。但是,当我们使用ArrayList时,它相当于一个…

ASP.NET MVC中Filter过滤器的使用

MVC Filter是典型的AOP(面向切面编程)应用,在ASP.NET MVC中的4个过滤器类型,如下: 但是默认实现它们的过滤器只有三种,分别是ActionFilter(方法),Authorize(授…

Python零基础从小白打怪升级中~~~~~~~生成器和迭代器

第十七节:生成器和迭代器 一、迭代器 本质: 一个实现了__iter__方法和__next__方法的对象 注意 Iterator对象和 Iterable对象,一个是迭代器,一个是可迭代对象 1、list、dict、str、tuple、set是可迭代对象但不是迭代器&#x…

Kafka 知识汇总学习

kafka:消息发布队列、具有存储的功能 生产者 消费者 优势:吞吐量高,性能好; 具有良好的伸缩性,支持在线水平扩展; 具有容错性和可靠性; 与大数据生态结合 Kafka 是一个分布式系统,由服务器和客户端组成&…

新型物联网创新实践教学体系建设

新型物联网创新实践教学体系建设 一、设计背景 随着物联网技术的快速发展,物联网已成为当今科技创新的重要领域。为了培养能够紧跟物联网技术发展趋势的高素质人才,高校物联网专业教学急需构建一套创新实践教学体系。本毕业设计旨在探索和设计一套新型…