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

安全性很难做到正确,即使在当今具有安全意识的世界中,也存在一些严重的漏洞,例如 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攻击的重要手段之一。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/564587.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Uds诊断协议的请求和响应的寻址

一根总线上挂载着很多ECU,那么基于CAN协议UDS的诊断请求报文,诊断仪是如何发给ECU的?如何精准的找到想要诊断的那个ECU?ECU又是如何将诊断响应的报文返回给诊断仪? 在UDS协议中,规定了诊断请求和响应报文发…

kerberos:适配华为FI

文章目录 一、hive1、hive thrift连接方式 一、hive 1、hive thrift连接方式 kerberos认证失败信息 缺少配置:{“hadoop.rpc.protection”:“privacy”},具体可参考:kerbros认证相关问题 华为FI参考资料: https://github.com…

Hive 解决数据倾斜方法

数据倾斜问题, 通常是指参与计算的数据分布不均, 即某个 key 或者某些 key 的数据量远超其他 key, 导致在 shuffle 阶段, 大量相同 key 的数据被发往同一个 Reduce, 进而导致该 Reduce 所需的时间远超其他 Reduce&…

easyui datagrid单元格点击进入编辑时,行会自动向上错位

现象描述,点击第20行可编辑的单元格进入编辑状态时,滚动条自动滚动到第19行了。导致第20行被分页遮挡,看不到无法编辑。 排查了一天百度AI说是滚动定位问题,最后发现是自己设置的列有问题,表格总共五列,全…

mysql面试题八(SQL语句)

目录 1.SQL 基本组成部分 常用操作示例 创建表 插入数据 查询数据 更新数据 删除数据 创建索引 授予用户权限 2.常见的聚合查询 1. 计数(COUNT) 2. 求和(SUM) 3. 平均值(AVG) 4. 最大值&…

4套java智慧型管理系统源码-智慧校园-智慧工地-智慧城管-智慧3D导诊

第一套:Java智慧校园系统源码 智慧学校源码 微信小程序电子班牌 智慧校园系统简介: 智慧校园的建设逐渐被师生、家长认可接受,智慧校园通过对在校师生、教务等所有人员的信息以及各种信息搜集与储存,进行数据优化与管理&#xf…

Formik:让用户体验更加出色的表单解决方案

hi, 大家好,我是徐小夕, 今天又到了我们的博学时间。今天和大家分享一款非常有价值的开源项目——Formik。 这款开源项目也是我研究零代码搭建平台——H5-Dooring 时参考的项目之一,它可以提高表单渲染引擎的性能和效率,构建出性能…

弱口令之暴力破解

目录 前言 弱口令与暴力破解介绍 漏洞挖掘实战专栏 个人介绍 第一关:基于表单的暴力破解 绕过步骤 1.第一步抓包观察 2.使用burp的攻击模块 3.选择攻击模式以及爆破字典 ​编辑 4.进行爆破 第二关 验证码绕过(on server) 绕过步骤 1.观察输入错误观察返回结果 2…

MATLAB中左边的大括号最后一行为什么会留很大的空白——解决

看了一些帖子说改字体,但是并没有什么用,在此给出亲测有效的方法:改变矩阵的行间距 先说一下问题 上图中留有大块空白 **解决办法:**光标放在矩阵上 格式——矩阵——更改矩阵,在矩阵设置中选中“行高相等”&#xff…

网络IO模型 select poll epoll的区别

epoll与select、poll的对比 1. 用户态将文件描述符传入内核的方式 select:创建3个文件描述符集并拷贝到内核中,分别监听读、写、异常动作。这里受到单个进程可以打开的fd数量限制,默认是1024。 poll:将传入的struct pollfd结构…

基于Springboot的社区防疫物资申报系统(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的社区防疫物资申报系统(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系…

插入排序的可视化实现(Python)

插入排序的Python代码 import tkinter as tk import random import timeclass InsertionSortVisualizer:def __init__(self, root, canvas_width800, canvas_height400, num_bars10):self.root rootself.canvas_width canvas_widthself.canvas_height canvas_heightself.nu…

MySQL学习笔记1(MySQL基础)

1.MySQL基础 1.数据库相关概念 ​ *数据库:存储数据的仓库,数据是有组织的进行存储 DtaBase(DB) ​ *数据管理系统:操纵和管理数据库的大型软件 DataBase Management System (DBMS) ​ *SQL:操作关系型数据库的编程语言&#…

抖音ip地址怎么换位置

抖音,作为一款短视频分享平台,已经成为了许多人展示生活、分享才艺的重要舞台。然而,在抖音的使用过程中,你是否想过更换自己的IP地址位置呢?更换IP地址不仅可以帮助你访问一些地域限制的内容,还可以为你的…

3D开发工具HOOPS助力CAM软件优化制造流程

在现代制造业中,计算机辅助制造(CAM)软件的发展已成为提高生产效率和产品质量的关键。为了满足不断增长的需求和日益复杂的制造流程,CAM软件需要具备高效的CAD数据导入、云端协作、移动应用支持以及丰富的文档生成能力。 Tech So…

node.js-模块化

定义:CommonJS模块是为Node.js打包Javascript代码的原始方式。Node.js还支持浏览器和其他Javascript运行时使用的ECMAScript模块标准。 在Node.js中,每个文件都被视为一个单独的模块。 概念:项目是由很多个模块文件组成的 好处&#xff1a…

09 JavaScript学习:对象

对象的概念 在计算机科学中,对象是一种数据结构,用于存储数据和方法(也称为函数)。对象可以包含属性(也称为成员变量)和方法(也称为成员函数),通过这些属性和方法可以描述…

开发必会:JWT技术揭秘,一次性拿捏

1. 引言 现在前后端分离项目已经成为 主流的开发模式,而在项目开发过程中多多少少都会接触到登录相关的业务,几乎是绕不开的一部分。而只要涉及到登录模块,大部分的开发中都会用提到一种叫做token的东西,顾名思义,tok…

c语言不难说C语言难的,已经说明你根本不适合计算机编程工作

对普通人来说C语言是学习编程的最佳入门语言,有效培养你的编程思维,你有了这个基础后去学其它语言,你会惊讶地发现原来其它语言原来这么好学,现在出现一个Python说小白最适合,在开始前我有一些资料,是我根据…

Proxyman Premium for Mac:网络调试利器,开发者首选!

Proxyman Premium for Mac是一款功能强大的网络调试和分析工具,专为开发者和测试人员打造。这款软件以其出色的性能和丰富的功能,帮助用户在网络开发和调试过程中更有效地分析和拦截网络请求,进行必要的修改和重发,从而进行更深度…