当前位置: 首页 > news >正文

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进行说明
      以上
<!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实体名称 "实体的值">
  • 外部实体:
<!ENTITY实体名称SYSTEM "URL">
  • 参数实体
<!ENTITY % 实体名称 [SYSTEM] "URL">
<!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) &#xff0c;标准通用标记语言的子集&#xff0c;可以用来标记数据、定义数据类型…...

初识C++需要了解的一些东西(2)

&#x1f601;关注博主&#xff1a;翻斗花园第一代码手牛爷爷 &#x1f603;Gitee仓库&#xff1a;牛爷爷爱写代码 目录&#x1f30d;内联函数&#x1f315;内联函数概念&#x1f316;内联函数特性&#x1f313;auto关键字(C11)&#x1f31e;类型别名⭐️auto简介☀️auto的使…...

全国程序员薪酬大曝光!看完我酸了····

2023年&#xff0c;随着互联网产业的蓬勃发展&#xff0c;程序员作为一个自带“高薪多金”标签的热门群体&#xff0c;被越来越多的人所关注。在过去充满未知的一年中&#xff0c;他们的职场现状发生了一定的改变。那么&#xff0c;程序员岗位的整体薪资水平、婚恋现状、职业方…...

改进YOLO系列 | CVPR2023最新Backbone | FasterNet 远超 ShuffleNet、MobileNet、MobileViT 等模型

论文地址:https://export.arxiv.org/pdf/2303.03667v1.pdf 为了设计快速神经网络,许多工作都集中在减少浮点运算(FLOPs)的数量上。然而,作者观察到FLOPs的这种减少不一定会带来延迟的类似程度的减少。这主要源于每秒低浮点运算(FLOPS)效率低下。并且,如此低的FLOPS主要…...

Nginx常见用法

一、Niginx是什么&#xff1f; Nginx是一个高性能的HTTP和反向代理web服务器&#xff0c;同时也提供了IMAP/POP3/SMTP服务。Niginx是一款轻量级的web服务器/反向代理器&#xff0c;Nginx是高性能的HTTP和 反向代理的web服务器&#xff0c;处理高并发的能力十分强大&#xff0c…...

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 函数?

众所周知&#xff0c;Python中没有所谓的main函数&#xff0c;但是网上经常有文章提到“ Python的main函数”和“建议编写main函数”。 其实&#xff0c;可能他们是想模仿真正的main函数&#xff0c;但是许多人都被误导&#xff08;或误解&#xff09;&#xff0c;然后编写了非…...

【无标题】使用Bibtex4word 整理毕业论文参考文献

Bibtex4Word使用一览需要安装和配置的软件texLiveBibtex4word需要安装和配置的软件 texLive 这个就不多说啦&#xff0c;大家自己找教程安装吧&#xff0c;因为我之前装过这一系列所以就不再来一遍了&#xff0c;但是有两条配置需要注意&#xff01; 添加环境变量 key: BIB…...

19--网络API(java版)

什么是网络API在一个网站里面发起https请求是很常见的&#xff0c;但是&#xff0c;由于微信小程序是腾讯内部的产品&#xff0c;不能直接打开一个外部的链接&#xff0c;例如&#xff0c;您在微信小程序里面无法直接打开网站&#xff0c;但是&#xff0c;在做小程序开发的时候…...

ElasticSearch - 分片内部原理之动态更新索引、近实时搜索、持久化变更、段合并

文章目录01. ElasticSearch 倒排索引是什么&#xff1f;02. ElasticSearch 倒排索引为什么是不可变的&#xff1f;03. ElasticSearch 索引文档原理&#xff1f;04. ElasticSearch 如何动态更新索引&#xff1f;05. ElasticSearch 文档的新增、删除、更新&#xff1f;06. Elasti…...

模拟数据采集卡之ADCTDC 模拟时间/数字转换器组合应用选型指南

简介 产品组合包括一系列多功能时间到数字转换器(TDC)和模数转换器(ADC)。我们的许多客户的应用场景依赖于对飞行时 间(TOF)的测量。该系列产品非常适合用于质谱系统(TOF-MS)&#xff0c;光学相干断层扫描(OCT)&#xff0c;荧光寿命成像显微镜(FLIM)&#xff0c; 时间相关单光子…...

R语言编程基础

文章目录安装运算符判断函数递归安装 根据自己的操作系统&#xff0c;下载R语言环境后&#xff0c;安装&#xff0c;并将安装路径加入到环境变量&#xff0c;即可从命令行进入R环境 >rR version 4.2.2 (2022-10-31 ucrt) -- "Innocent and Trusting" Copyright …...

2023-03-15:屏幕录制并且显示视频,不要用命令。代码用go语言编写。

2023-03-15&#xff1a;屏幕录制并且显示视频&#xff0c;不要用命令。代码用go语言编写。 答案2023-03-15&#xff1a; 使用moonfdd/ffmpeg-go和moonfdd/sdl2-go库来实现屏幕录制并显示视频&#xff0c;大体流程如下&#xff1a; 1.使用libavdevice库中的AVInputFormat&…...

STM32外设-DMA

1. 简介 DMA(Direct Memory Access)—直接存储器存取&#xff0c;是单片机的一个外设&#xff0c;它的主要功能是用来搬数据&#xff0c;但是不需要占用 CPU&#xff0c;即在传输数据的时候&#xff0c; CPU 可以干其他的事情&#xff0c;好像是多线程一样。数据传输支持从外设…...

【面试题】面试官:如果后端给你 1w 条数据,你如何做展示?

最近一位朋友参加阿b的面试&#xff0c;然后面试官问了她这个问题&#xff0c;我问她咋写的&#xff0c;她一脸淡定的说&#xff1a;“虚拟列表。”大厂面试题分享 面试题库前后端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★地址&#xff1a;前端面…...

第十二届蓝桥杯省赛详解

试题A&#xff1a;空间 1B是8位&#xff0c;32位二进制数占用4B空间&#xff0c;1MB2^10KB2^20B 那么可以存放32位二进制数的个数为256*2^20*8/3267108864 试题B&#xff1a;卡片 分析&#xff1a;因为数据只有2021&#xff0c;所以直接模拟即可 结果为&#xff1a;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() 会修改原数组项的排序&#xff0c;sort() 结束后会返回一个数组结果&#xff0c;这个结果其实就是原数组。并不是说会返回一个新的数组。 原理讲解 JS 分为栈内存和堆内存&#xff0c;栈内存可以…...

07从零开始学Java之如何正确的编写Java代码?

作者&#xff1a;孙玉昌&#xff0c;昵称【一一哥】&#xff0c;另外【壹壹哥】也是我哦CSDN博客专家、万粉博主、阿里云专家博主、掘金优质作者前言在上一篇文章中&#xff0c;壹哥带领大家开始编写了第一个Java案例&#xff0c;在我们的cmd命令窗口中输出了”Hello World“这…...

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

生成xcframework

打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式&#xff0c;可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩

目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法

深入浅出&#xff1a;JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中&#xff0c;随机数的生成看似简单&#xff0c;却隐藏着许多玄机。无论是生成密码、加密密钥&#xff0c;还是创建安全令牌&#xff0c;随机数的质量直接关系到系统的安全性。Jav…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具

文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

在四层代理中还原真实客户端ngx_stream_realip_module

一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡&#xff08;如 HAProxy、AWS NLB、阿里 SLB&#xff09;发起上游连接时&#xff0c;将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后&#xff0c;ngx_stream_realip_module 从中提取原始信息…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持&#xff0c;都是在为未来积攒底气。 案例&#xff1a;OLED显示一个A 这边观察到一个点&#xff0c;怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 &#xff1a; 如果代码里信号切换太快&#xff08;比如 SDA 刚变&#xff0c;SCL 立刻变&#…...

蓝桥杯3498 01串的熵

问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798&#xff0c; 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...