首页 > 其他分享 >XML和XXE基础

XML和XXE基础

时间:2024-03-29 20:35:38浏览次数:19  
标签:XML xml XXE 文件 实体 基础 xxe

XML和XXE基础

1.0 XML和XXE简介

简介:XML(eXtensible Markup Language)是一种可扩展标记语言,它是由万维网联盟

(W3C)制定的标准格式,主要用于数据存储、传输以及文档结构的描述。XML的设计目的

是为了提供一种灵活且结构化的数据交换手段,使得数据能够在不同的系统和应用程序之间

方便地共享。

和HTML区别:XML被设计为传输和存储数据,其焦点是数据的内容

XML External Entity (XXE) 是一种针对XML处理程序的安全漏洞,这种漏洞出现在应用程序

解析XML输入的过程中,当程序未能禁用或者适当地管理XML外部实体引用时,攻击者能够

通过构造恶意的

XML文档,注入外部实体声明并触发服务器解析该实体,从而达到以下目的:

文件读取:攻击者可以定义一个外部实体,指向服务器本地或网络可达的任意文件,借此读

取敏感文件内容,如配置文件、日志文件甚至密码文件等。

服务器端请求伪造 (SSRF):如果外部实体允许发起网络请求,攻击者可能利用此功能对内部

网络发起探测或攻击。

拒绝服务 (DoS):通过构造消耗大量资源的实体,可能导致服务器负载过高或崩溃。

盲XXE:即使服务器不返回实体解析的结果,攻击者也可以利用Blind XXE技巧泄露信

息,例如通过发送精心设计的请求观察服务器响应时间的变化,以此推测内部文件是否存

在。

最常见的利用就是利用其进行文件读取

通过XML传递的数据在数据包的header中可以找到相关信息

一般对xml的利用:

客户端:xml发送数据

服务端:xml解析数据

我们可以利用xml写一个带有文件读取的代码尝试发送,类似文件读取功能的实现

这里分享一个很好的博客,有关xml和xxe 这个 把xxe的一些实现和基础都讲的很清楚

1.1 XXE实现文件读取

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE xxe [
<!ELEMENT name ANY >
<!ENTITY xxe SYSTEM "file:etc/passwd" >]>
<root>
<name>&xxe;</name>
</root>

用file协议读取passwd

如果遇见了无回显的情况,可以进行带外测试,利用dnslog平台,从而判断究竟是不存在回

显,还是我们的代码写的有问题,或者说是请求了不存在的文件,如果经过测试确实是

不回显,这时候就得使用下面的技术

1.2 外部引用实体DTD

由于参数实体无法在内部子集中进行调用,我们想要把数据返回道我们自己的服务器就需要

外部引用实体dtd,具体的见我们上面推荐的博客,那个博客讲的很清楚,我就不多加赘述了

1.3 黑盒中的xxe

我们通过数据包判断出传输的是xml数据,就可以尝试去发送xml恶意代码去试试

xxe不仅在数据传输中出现,在文件上传引用插件解析或者预览也会造成文件中的xxe

payload执行

1.4 白盒中的xxe

xxe的搜索方向

1 通过应用功能追踪代码审计

2 通过特定函数搜索定位审计

由于xxe可能用到的地方很多,所以我们主要从特定函数去测试

直接在代码中搜处理xml的解析函数,然后对函数进行分析

标签:XML,xml,XXE,文件,实体,基础,xxe
From: https://www.cnblogs.com/rpup/p/18104556

相关文章

  • 计算机基础系列 —— 汇编器
    “TheAnalyticalEnginemightactuponotherthingsbesidesnumbers...Suppose,forinstance,thatthefundamentalrelationsofpitchedsoundsinthescienceofharmonyandofmusicalcompositionweresusceptibleofsuchexpressionandadaptations...Ifs......
  • 零基础自学网络安全的三个必经阶段(含学习路线图)
    一、为什么选择网络安全?这几年随着我国《国家网络空间安全战略》《网络安全法》《网络安全等级保护2.0》等一系列政策/法规/标准的持续落地,网络安全行业地位、薪资随之水涨船高。未来3-5年,是安全行业的黄金发展期,提前踏入行业,能享受行业发展红利。二、为什么说网络安全行......
  • 3.基础数据类型
    【一】基础数据类型1)整数类型(int)1.定义表示整数num=52.使用可以参与各种数学运算2)浮点数类型(float)1.定义表示带有小数部分的数值num=2.22.使用可以参与各种数学运算3)字符串类型(str)1.定义表示文本信息name='Tom'#(字符串可以使用单引号、双引号或三引......
  • 蓝桥杯 试题 基础练习 数列特征
    问题描述给出n个数,找出这n个数的最大值,最小值,和。输入格式第一行为整数n,表示数的个数。第二行有n个数,为给定的n个数,每个数的绝对值都小于10000。输出格式输出三行,每行一个整数。第一行表示这些数中的最大值,第二行表示这些数中的最小值,第三行表示这些数的和。样例输入5......
  • qml基础知识
    qml入门培训笔记QtQuick简介QtQuick是QtSDK4.7中引入的一种新的界面开发框架,用于创建供移动和嵌入式设备使用的动态触摸式界面和轻量级应用程序。它提供了一种高级用户界面技术,使得开发者能够轻松地为移动设备创建流畅的用户界面。QtQuick包括界面脚本语言QML、语言运行时、......
  • 蓝桥杯 试题 基础练习 查找整数
    问题描述给出一个包含n个整数的数列,问整数a在数列中的第一次出现是第几个。输入格式第一行包含一个整数n。第二行包含n个非负整数,为给定的数列,数列中的每个数都不大于10000。第三行包含一个整数a,为待查找的数。输出格式如果a在数列中出现了,输出它第一次出现的位置(位置......
  • 基础优化方法
    梯度下降梯度是一个向量(矢量),表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大(为该梯度的模)。梯度在物理学、机器学习和数学优化等领域有着广泛的应用。挑选一个初始值\(w_0\)重复迭代参数t=1,2,3沿梯度方向将......
  • 三通基础与实例
      三通three-waypipe(国标的链接)分类1-管径尺寸等径三通——接管端部均为相同的尺寸异径三通——主管接管尺寸相同,而支管的接管尺寸小于主管的接管尺寸分类2-T形与Y形               ......
  • c++基础知识
    deque的用法#include<deque>deque<type>d;//定义一个dequepush_back()//在队列的尾部插入元素。push_front()//在队列的头部插入元素。pop_back()//删除队列尾部的元素。pop_front()//删除队列头部的元素。back()//返回队列尾部元素的引用。front()//返回队列头部元素......
  • 基础小知识
    Gomake|new都是用于分配相应类型的内存空间。区别:make仅支持slice、map、channel三种数据类型的内存分配和初始化返回值是所创建类型的本身分配堆上的内存空间,通过GC回收new分配内存,内存里存的值是对应类型的零值。返回值是所创建类型的指针引用分配栈上的内存空间......