WEB漏洞——XXE

文章目录

  • 前言
  • 一、XXE简述及XML基础
    • XXE简述
    • XML基础
      • xml简介
      • 文档格式
      • xml树结构
      • xml其它
      • xml语法
        • 1、格式良好的xml
        • 2、编写第一段XML代码
      • DTD介绍
        • 内部文档声明(即DTD在XML源文件中)
        • 外部文档声明(DTD位于XML源文件的外部)
        • XML文档构建模块
          • Elements(元素)
            • 数量词的用法
          • Attributes(属性)
          • PCDATA(被解析的字符数据)
          • CDATA(字符数据)
            • 任务
          • Entities(实体)
            • 总结
  • 二、XXE漏洞原理
    • XXE的危害
    • XXE如何寻找
    • XXE限制条件
  • 三、XXE漏洞分类与利用
    • XML利用
      • 1.读取任意文件
      • 2.命令执行
      • 3.内网探测/SSRF
      • DTD不同类型的攻击列表
        • 1、拒绝服务攻击(DDoS)
        • 2、基本的XXE攻击
        • 3、高级的 XXE 攻击 — 外带数据(OOB)通道
        • 4、高级的XXE攻击(二)(了解)
        • 5、XML包含机制(XInclude)
        • 6、扩展样式表转换语言(XSLT)
  • 四、XXE漏洞练习
    • XXE的利用场景一:pikachu
    • XXE的利用场景二:CTF
    • XXE的利用
    • 扩展:XXE工具-XXE injector
  • 五、XXE漏洞防御
  • 总结


前言

本次文章主要介绍XXE漏洞的原理,利用以及防御的过程,另外还有介绍一点XML的基础知识,详情请见下文。


一、XXE简述及XML基础

XXE简述

在这里插入图片描述

XXE全称(XML External Entity),XML外部实体注入攻击
1、危害

XXE漏洞可能带来的危害:外界攻击者可读取商户服务器上的任意文件;执行系统命令;探测内网端口;攻击内网网站。商户可能出现资金损失的情况。

2、案例(0元也能买买买,微信支付的SDK曝出重大漏洞(XXE漏洞))

XML基础

xml简介

a) xml,eXtensible Markup Language,可扩展标记语言,是一种标记语言,使用简单标记描述数据
b) xml是一种非常灵活的语言,没有固定的标签,所有标签都可以自定义
c) 通常,xml被用于信息的传递和记录,因此,xml经常被用于充当配置文件

如果把HTML和XML进行对比的话,HTML进行对比的话,HTML旨在显示数据信息,而XML旨在用来进行数据的传输和存储。
在这里插入图片描述

文档格式

a) XML文档结构包括
1、XML声明
2、DTD-文档类型定义(可选)
3、文档元素。

在这里插入图片描述
xml的作用——程序之间的数据传输通讯

xml树结构

a)XML文档形成了一种树结构,它从“根部”开始,然后扩展到“枝叶”
在这里插入图片描述
在这里插入图片描述
b)父、子以及同胞等术语用于描述元素之间的关系。父元素拥有子元素。相同层级上的子元素成为同胞。
c)所有的元素都可以由文本内容和属性(类似HTML中)。
在这里插入图片描述

xml其它

a)XML文件后缀名 *.xml
b)XML编辑器:记事本、eclipse、notepad、…
c)判断XML文件是否写入正确。
d)IE5以上的浏览器内置了XML解析工具:Microsoft.XMLDOM

XML文件样例
在这里插入图片描述

xml语法

1、格式良好的xml

a)声明信息,用于描述xml的版本和编码方式

<?xml version="1.0" encoding="UTF-8"?>

b)xml有且只有一个根元素
在这里插入图片描述

c)成对标签(即标签必须关闭,html可以不关闭也能运行)
在这里插入图片描述
d)区分大小写
在这里插入图片描述

e)不可交叉编写

在这里插入图片描述

f)xml注释(和html一样)

<!--这是一个注释符-->

在这里插入图片描述
g)XML空格
1、HTML会把多个连续的空格字符裁剪(合并)为一个。
2、在XML中,文档中的空格不会被删减。

h)特殊字符使用实体
特殊字符在标签里面会被xml解析器解析。使用xml预定义的实体代替、引用。xml预定义实体有5个。

实体必须以符号“&”开头,以“;”结尾。

&lt;<less than
&gt>greater than
&amp;&ampersand
&apos;apostrophe
&quot;"quotation mark

注释:在XML中,只有字符“<”和“&”缺少是非法的。大于号是合法的,但是用实体引用来代替它是一个好习惯。

i)xml元素命名规则

  1. 名称可以包含字母、数字以及其它的字符
  2. 名称不能以数字或者表单符号开始
  3. 名称不能以字母xml(或者XML、Xml等等)开始
  4. 名称不能包括空格
  5. 可使用任何名称,没有保留的字词。

j)xml属性规则

  1. 属性不能包含多个值(元素可以)
  2. 属性不能包含树结构(元素可以)
  3. 属性不容易扩展(为未来的变化)
  4. 属性难以阅读和维护。请尽量使用元素来描述数据。而仅仅使用属性来提高与数据无关的信息。
<!--错误示范-->
<note day="10" mouth="01" year="2008" to="Tove" from="Jani" heading="Reminder"
body="Don't forget me this weekend!">
</note>

k)属性要用引号

  1. xml元素属性类似于html标签的属性,如img标签的src属性。
  2. xml属性必须要引号包裹
  3. 如果是单引号包裹,也会被解析为双引号。

在这里插入图片描述

2、编写第一段XML代码

使用XML描述下表中学生成绩信息,XML文件为scores.xml
在这里插入图片描述

<?xml version="1.0" encoding="UTF-8"?>
<scores>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/810108.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CISA :恶意软件分析平台Malware Next-Gen全新升级

本周三&#xff0c;美国网络安全和基础设施安全局&#xff08;CISA&#xff09;发布了新版恶意软件分析平台Malware Next-Gen&#xff0c;现在公众可以提交任意恶意软件样本供 CISA 分析。 据悉&#xff0c;Malware Next-Gen 可用于检查恶意软件样本中是否存在可疑项目。它最初…

数据生成 | Matlab实现基于SNN浅层神经网络的数据生成

数据生成 | Matlab实现基于SNN浅层神经网络的数据生成 目录 数据生成 | Matlab实现基于SNN浅层神经网络的数据生成生成效果基本描述模型描述程序设计参考资料 生成效果 基本描述 1.Matlab实现基于SNN浅层神经网络的数据生成&#xff0c;运行环境Matlab2021b及以上&#xff1b; …

在windows中anaconda中安装fasttext (whl 文件安装)

Anaconda安装第三方包&#xff08;whl文件&#xff09; windows 安装fasttext 一直不成功&#xff0c;python 版本3.8 网上教程都是 https://www.lfd.uci.edu/~gohlke/pythonlibs/#fasttext 下载然后安装&#xff0c;但是这个网站里我没找到哈哈哈。。。 然后就是成功方案&am…

Pygame教程10:在背景图片上,添加一个雪花特效

------------★Pygame系列教程★------------ Pygame经典游戏&#xff1a;贪吃蛇 Pygame教程01&#xff1a;初识pygame游戏模块 Pygame教程02&#xff1a;图片的加载缩放旋转显示操作 Pygame教程03&#xff1a;文本显示字体加载transform方法 Pygame教程04&#xff1a;dra…

移植 amd blas 到 cuda 生态

1&#xff0c;下载源码 GitHub - ROCm/rocBLAS: Next generation BLAS implementation for ROCm platform $ git clone --recursive https://github.com/ROCm/rocBLAS.git 2&#xff0c; 编译 2.1 不带Tensile的编译 如果是在conda环境中&#xff0c;需要deactive conda 环境…

信息学奥赛一本通T1457-Power Strings【KMP】

信息学奥赛一本通T1457-Power Strings - C语言网 (dotcpp.com) #include <iostream> #include <algorithm> #include <cstring> using namespace std; const int N1e6100; char str[N]; int nex[N]; int res0; signed main() {while(scanf("%s",st…

[2024]最新激活Navicat教程附激活码

PS&#xff1a;在开始前&#xff0c;建议先断开本地网络&#xff01;&#xff01;&#xff01;建议先断开本地网络&#xff01;&#xff01;&#xff01;建议先断开本地网络&#xff01;&#xff01;&#xff01; 1 安装 1.1 点击下一步 1.2 许可证选择“我同意”&#xff0c…

【云计算】云网络产品体系概述

云网络产品体系概述 在介绍云网络产品体系前&#xff0c;先介绍几个与云计算相关的基础概念。 阿里云在基础设施层面分为 地域 和 可用区 两层&#xff0c;关系如下图所示。在一个地域内有多个可用区&#xff0c;每个地域完全独立&#xff0c;每个可用区完全隔离&#xff0c;同…

ViT:拉开Trasnformer在图像领域正式挑战CNN的序幕 | ICLR 2021

论文直接将纯Trasnformer应用于图像识别&#xff0c;是Trasnformer在图像领域正式挑战CNN的开山之作。这种简单的可扩展结构在与大型数据集的预训练相结合时&#xff0c;效果出奇的好。在许多图像分类数据集上都符合或超过了SOTA&#xff0c;同时预训练的成本也相对较低   来源…

安装 Kali NetHunter (完整版、精简版、非root版)、实战指南、ARM设备武器化指南

From&#xff1a;https://www.kali.org/docs/nethunter/ NetHunter 实战指南&#xff1a;https://www.vuln.cn/6430 乌云 存档&#xff1a;https://www.vuln.cn/wooyundrops 1、Kali NetHunter Kali NetHunter 简介 Net&#xff08;网络&#xff09;&#xff0c;hunter&#x…

今天讲讲MYSQL数据库事务怎么实现的!

目录 什么是数据库事务 Mysql如何保证原子性 Mysql如何保证持久性 MySQL怎么保证隔离性 事务隔离级别 脏读的解决 不可重复读的解决 幻读的解决 MVCC实现 Read View 那么RC、RR级别下的InnoDB快照读有什么不同&#xff1f; 什么是数据库事务 数据库事务是指一组数据…

Geotrust SSL证书:安全加密与身份验证的坚实后盾

Geotrust&#xff0c;作为全球知名的数字证书颁发机构&#xff0c;以其高度的安全性、可靠性和广泛的兼容性&#xff0c;在网络安全领域中占据了举足轻重的地位。尤其在SSL&#xff08;Secure Sockets Layer&#xff09;证书服务上&#xff0c;Geotrust更是凭借其卓越的技术实力…

LongVLM:让大模型解读长视频 SOTA 的方法

LongVLM&#xff1a;让大模型解读长视频 SOTA 的方法 使用LongVLM处理长视频的步骤LongVLM 方法3.1 总体架构3.2 局部特征聚合3.3 全局语义整合 效果4.1 实验设置4.2 主要结果4.3 消融研究4.4 定性结果 论文&#xff1a;https://arxiv.org/pdf/2404.03384.pdf 代码&#xff1a…

组合数学<1>——组合数学基础

今天我们聊聊组合数学。(本期是给刚刚学习组合数学的同学看的&#xff0c;dalao们可以自行忽略) 建议:不会求逆元的出门左转数论<2>&#xff0c;不会数论的出门右转数论<1>。 加乘原理 加乘原理小学奥数就有。 总的来说:加法原理:分类;乘法原理:分步 比如说&a…

test4121

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;滤波估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能等相关领域的知识和…

<Windows>【建议收藏】《Windows笔记本设置WIFI热点后经常自行断开如何解决?》

第一步&#xff1a;输入Win键x&#xff0c;打开设置 第二步&#xff1a;选择高级网络设置 第三步&#xff1a;点击下拉按钮选择编辑 第四步&#xff1a;选择配置 第五步&#xff1a;电源管理中取消勾选

取数游戏(dfs)

前言&#xff1a; 该题取自洛谷P1123&#xff0c;题主用的dfs&#xff08;深度优先搜索&#xff09; 题目描述&#xff1a; 数据范围&#xff1a; 思路&#xff1a; 思路见代码&#xff0c;注释的很清晰嗷 AC代码&#xff1a; #include <iostream> #include <alg…

Ubuntu系统使用Docker本地部署Android模拟器并实现公网访问

文章目录 1. 虚拟化环境检查2. Android 模拟器部署3. Ubuntu安装Cpolar4. 配置公网地址5. 远程访问小结 6. 固定Cpolar公网地址7. 固定地址访问 本文主要介绍如何在Ubuntu系统使用Docker部署docker-android安卓模拟器&#xff0c;并结合cpolar内网穿透工具实现公网远程访问本地…

【绩效管理】建立员工绩效考核机制,提升企业绩效管理水平

随着企业的迅猛发展&#xff0c;其内部管理问题日益突出&#xff0c;已经制约了企业的进一步发展。一方面&#xff0c;员工工作懒散、积极性不高&#xff0c;出错的次数也逐步上升&#xff0c;另一方面&#xff0c;管理者也无法有效评价员工的工作好坏。面对这些问题&#xff0…

Pillow教程11:九宫格切图的实现方法(安排!!!)

---------------Pillow教程集合--------------- Python项目18&#xff1a;使用Pillow模块&#xff0c;随机生成4位数的图片验证码 Python教程93&#xff1a;初识Pillow模块&#xff08;创建Image对象查看属性图片的保存与缩放&#xff09; Pillow教程02&#xff1a;图片的裁…