XXE基础知识整理(附加xml基础整理)
-
全称:XML External Entity
- 外部实体注入攻击
-
原理
- 利用xml进行读取数据时过滤不严导致嵌入了恶意的xml代码;和xss原理雷同

- 利用xml进行读取数据时过滤不严导致嵌入了恶意的xml代码;和xss原理雷同
-
危害
- 外界攻击者可读取商户服务器上的任意文件;
- 执行系统命令;
- 探测内网端口;
- 攻击内网网站。
- 商户可能出现资金损失的情况
-
防御
- 升级libxml的版本>2.9.1
- 该版本之后默认不解析外部实体
- 禁用外部实体解析
- 过滤用户的提交文本中的关键词<!DOCTYPE等
- 不允许xml中有自己声明的DTD
- 设置xml解析使用静态的DTD文件;不允许引用外部的DTD
- 升级libxml的版本>2.9.1
-
查找方法
- 抓包,查看MIME类型是否为xml
- 抓包,post请求+以下一种格式则可能存在xxe
- content-type:application/xml text/xml application/json
- 页面文件为.ashx格式
- 可以修改文本类型为application/xml进行注入尝试
- 这对前端无回显的情况
- 将网站生成的连接作为实体引入
- 通过该网站进行查看是否有回显:DNSLOG Platform (dig.pm)
-
XML语言:可扩展的标记语言
- 用于程序之间的数据通信;常用于配置文件中
-
文档结构
-
xml声明
- <?xml version=“1.0” encoding=“UTF-8”?>
-
DTD:文档类型定义(文档框架)
-
内部文档声明
- <!DOCTYPE 根元素名称 [声明元素的位置] >
- <!DOCTYPE note[<!ELEMENT note(to,from,heading,body)> <!ELEMENT to(#PCDATA)> <!ELEMENT form(#PCDATA)><!ELEMENT heading(#PCDATA)><!ELEMENT body(#PCDATA)>]>
-
外部文档声明
- <!DOCTYPE 根元素名称 SYSTEM "文件名"
- <!DOCTYPE note SYSTEM "http:127.0.0.1/1.txt">
-
实体:<!ENTITY >
- 普通实体
- <!DOCTYPE ANY[<!ENTITY xxe "123">]> <value>&xxe</value> 内部引用
- <!DOCTYPE ANY[<!ENTITY xxe "http://127.0.0.1/1.txt">]> <value>&xxe</value> 外部引用
- 参数实体(只能用于DTD中)
- <!DOCTYPE root[<!ENTITY %A "<!ENTITY xxe "123">">%A;]> <value>&xxe</value>
- <!DOCTYPE root[<!ENTITY %A SYSTEM "http://127.0.0.1/1.txt">%A;]> <value>&xxe</value>
- 普通实体
-
-
元素
-
实体:用于定义普通文本的变量
-
PCDATA:需要被解析的字符数据
- CDATA:不被解析的字符数据
-
元素类型(声明时用)
- EMPTY :不能包含子元素和文本;但可以有属性
- ANY :可以包含DTD中的任意元素
- #PCDATA :可以使用任意字符数据;但不能有子元素
-
属性
- 属性声明语法
- <!ATTLIST 元素名称 属性名称 属性类型 默认值>
- <!ATTLIST student id CDATA #REQUIRED>
- 属性类型
- CDATA
- (en1|en2|..)
- ID
- 默认值
- #REQUIRED :必须有
- #IMPLIED :不是必须的
- #FIXED value :固定值
- 属性声明语法
-
-
-
规则和限制
-
基础规则
- xml文档中有且只能有一个根元素
- 区分大小写
- 标签格式必须闭合而且一一对应;只有双标签;否则出错
- 特殊字符必须用文本实体编码代替;& " ' < >等
- 实体编码必须以&开头;结束;格式要规范
- 允许多余空格保留
-
元素命名规则
- 不能有xml(大小写)开头的名字
- 不能数字和标点符号开头
- 不能包含空格
- 名字中可以有字符、数字、特殊符号
-
属性规则
- 不能包含多个值
- 不能包含子节点
- 值必须用引号包裹;引号都会用双引号进行解析
-
相关文章:
XXE基础知识整理(附加xml基础整理)
全称:XML External Entity 外部实体注入攻击 原理 利用xml进行读取数据时过滤不严导致嵌入了恶意的xml代码;和xss原理雷同 危害 外界攻击者可读取商户服务器上的任意文件; 执行系统命令; 探测内网端口; 攻击内网网站…...
【pytorch】anaconda使用及安装pytorch
https://zhuanlan.zhihu.com/p/348120084 https://blog.csdn.net/weixin_44110563/article/details/123324304 介绍 Conda创建环境相当于创建一个虚拟的空间将这些包都装在这个位置,不需要了可以直接打包放入垃圾箱,同时也可以针对不同程序的运行环境选…...
SpringBoot过滤器获取响应的参数
一、背景 在项目开发过程中,需要对于某些接口统一处理。 这时候就需要获取响应的报文,再对获取的报文进行统一处理。 二、了解过滤器 首先了解一下过滤器拦截器的区别: JAVA中的拦截器、过滤器:https://blog.csdn.net/qq_38254…...
数据挖掘实战-基于决策树算法构建北京市空气质量预测模型
🤵♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞Ǵ…...
SOLID原理:用Golang的例子来解释
随着软件系统变得越来越复杂,编写模块化、灵活和易于理解的代码非常重要。实现这一目标的方法之一是遵循SOLID原则。这些原则是由罗伯特-C-马丁(Robert C. Martin)提出的,以帮助开发人员创建更容易维护、测试和扩展的代码。 本文将…...
mysql是如何使用索引的?
摘自官网 MySQL使用索引进行以下操作: WHERE条件中,快速查找匹配的行。(快速查询数据) 从准备查询的数据中消除多余行。如果可以在多个索引之间进行选择,则MySQL通常会使用查找最少行数的索引。 如果表具有多列索引,那么优化器可以使用索引的任何最左前缀来查找行。 举例来…...
自动驾驶IPO第一股及商业化行业标杆 Mobileye
一、Mobileye 简介 Mobileye 是全球领先的自动驾驶技术公司,成立于 1999 年,总部位于以色列耶路撒冷。公司专注于开发视觉感知技术和辅助驾驶系统 (ADAS),并在自动驾驶领域处于领先地位。Mobileye 是高级驾驶辅助系统(ADAS&#…...
Linux前后端程序部署
1.总述 首先安装包类型分为 二进制发布包安装:找到对应自己的linux平台版本(CentOS还是redhat等),的具体压缩文件,解压修改配置 源码编译安装:需要自己进行编译 对于redhat安装包,可以使用rpm命令进行安装,但是rpm命令安装不能够解决依赖库的问题,常用的rpm命令,只用于卸载…...
手把手 S32K344移植FreeRTOS
版本信息 RTD:2.0.0.2022 S32DS:3.4.0.2020 下载 从S32K3参考软件下载FreeTROS FreeRTOS安装链接:https://www.nxp.com/webapp/swlicensing/sso/downloadSoftware.sp?catidSW32K3-REFSW-D 根据S32DS版本和S32K3 RTD 2.0.0 Package找到对应的FreeRTOS的zip安装…...
《云原生安全攻防》-- 云原生安全概述
从本节课程开始,我们将正式踏上云原生安全的学习之旅。在深入探讨云原生安全的相关概念之前,让我们先对云原生有一个全面的认识。 什么是云原生呢? 云原生(Cloud Native)是一个组合词,我们把它拆分为云和原生两个词来…...
综合分享1
VM及安装配置windows server 2008 1)安装配置VM 确保是否正确安装: 1)检查本地“网络与internal设置”中的虚拟网卡是否创建成功(vmnet1和vmnet8) 2)必须通过services.msc查看vmware的所有是否已经…...
Redis -- set集合
挑战自己,每天进步一点点,成就将属于不停止脚步的你。 目录 Redis集合? 集合基本命令 sadd smembers sismember scard spop srandmember smove srem 集合间操作 sinter sinterstore sunion sdiff sdiifstore Redis集合&#…...
明天是几号(c++题解)
题目描述 题目描述 在某国,每年有 个月,每个月有 天。 求 年 月 日的下一天的日期。 输入格式 第一行:两个整数 。 第二行:三个整数 输出格式 输出三个整数,表示 年 月 日的下一天的日期。 样例 样例…...
PHP安装后错误处理
一:问题 安装PHP后提示错误如下 二:解决 1:Warning: Module mysqli already loaded in Unknown on line 0解决 原因:通过php.ini配置文件开启mysqli扩展的时候,开启了多次 解决:将php.ini配置文件中多个…...
Unity3D开发之鼠标单双击判断
在开发游戏和交互式应用程序时,经常需要对用户的鼠标点击进行准确的响应。其中,单击和双击事件的判断是常见需求之一。本文将介绍如何在Unity中优雅地实现鼠标单双击判断,使代码结构清晰、易读、易维护。 背景 在许多项目中,我们…...
openGauss学习笔记-214 openGauss 性能调优-确定性能调优范围
文章目录 openGauss学习笔记-214 openGauss 性能调优-确定性能调优范围214.1 性能因素214.2 调优范围确定 openGauss学习笔记-214 openGauss 性能调优-确定性能调优范围 数据库性能调优通常发生在用户对业务的执行效率不满意,期望通过调优加快业务执行的情况下。正…...
JAVA——Stream流
1.Stream流的作用(流水线) 结合了Lambda表达式,简化集合、数组的操作; 2.Stream流的使用步骤 ①先得到一条Stream流(流水线),并将数据放上去; ②利用Stream流中的API进行各种操作…...
QXlsx Qt操作excel(1)
QXlsx 是一个用于处理Excel文件的开源C库。它允许你在你的C应用程序中读取和写入Microsoft Excel文件(.xlsx格式)。该库支持多种操作,包括创建新的工作簿、读取和写入单元格数据、格式化单元格、以及其他与Excel文件相关的功能。 关于QXlsx的…...
20240131在ubuntu20.04.6下使用whisper不同模式的比对
20240131在ubuntu20.04.6下使用whisper不同模式的比对 2024/1/31 16:07 首先你要有一张NVIDIA的显卡,比如我用的PDD拼多多的二手GTX1080显卡。【并且极其可能是矿卡!】 2、请正确安装好NVIDIA最新的驱动程序和CUDA。可选安装! 3、配置whisper…...
HTTP相关问题
目录 1.从输入URL到页面展示到底发生了什么? 2.HTTP状态码有哪些? 2.1 2XX(成功状态码) 2.2 3XX(重定向状态码) 2.3 4XX(客户端错误状态码) 2.4 5XX(服务端错误状态码) 3.HTTP 请求头中常见的字段有哪些? 4.HTTP和HTTPS有什么区别&…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...
Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...
MODBUS TCP转CANopen 技术赋能高效协同作业
在现代工业自动化领域,MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步,这两种通讯协议也正在被逐步融合,形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
云原生玩法三问:构建自定义开发环境
云原生玩法三问:构建自定义开发环境 引言 临时运维一个古董项目,无文档,无环境,无交接人,俗称三无。 运行设备的环境老,本地环境版本高,ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...
使用LangGraph和LangSmith构建多智能体人工智能系统
现在,通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战,比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...
Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...
WebRTC从入门到实践 - 零基础教程
WebRTC从入门到实践 - 零基础教程 目录 WebRTC简介 基础概念 工作原理 开发环境搭建 基础实践 三个实战案例 常见问题解答 1. WebRTC简介 1.1 什么是WebRTC? WebRTC(Web Real-Time Communication)是一个支持网页浏览器进行实时语音…...
Python网页自动化Selenium中文文档
1. 安装 1.1. 安装 Selenium Python bindings 提供了一个简单的API,让你使用Selenium WebDriver来编写功能/校验测试。 通过Selenium Python的API,你可以非常直观的使用Selenium WebDriver的所有功能。 Selenium Python bindings 使用非常简洁方便的A…...
论文阅读:Matting by Generation
今天介绍一篇关于 matting 抠图的文章,抠图也算是计算机视觉里面非常经典的一个任务了。从早期的经典算法到如今的深度学习算法,已经有很多的工作和这个任务相关。这两年 diffusion 模型很火,大家又开始用 diffusion 模型做各种 CV 任务了&am…...
