#
详细点:
XML
被设计为传输和存储数据,
XML
文档结构包括
XML
声明、
DTD
文档类型定义(可
选)、文档元素,其焦点是数据的内容,其把数据从
HTML
分离,是独立于软件和硬件的
信息传输工具。等同于
JSON
传输。
XXE
漏洞
XML External Entity Injection
,
即
xml
外部实体注入漏洞,
XXE
漏洞发生在应用程序解析
XML
输入时,没禁止外部实体
的加载,导致可加载恶意外部文件,造成文件读取、命令执行、内网扫描、攻击内网等危
害。
XML
与
HTML
的主要差异:
XML
被设计为传输和存储数据,其焦点是数据的内容。
HTML
被设计用来显示数据,其焦点是数据的外观。
HTML
旨在显示信息 ,而
XML
旨在传输存储信息。
Example
:网站的
xml
文件解析
-XXE
黑盒发现:
1
、获取得到
Content-Type
或数据类型为
xml
时,尝试
xml
语言
payload
进行测试
2
、不管获取的
Content-Type
类型或数据传输类型,均可尝试修改后提交测试
xxe
3
、
XXE
不仅在数据传输上可能存在漏洞,同样在文件上传引用插件解析或预览也会造成
文件中的
XXE Payload
被执行
-XXE
白盒发现:
1
、可通过应用功能追踪代码定位审计
2
、可通过脚本特定函数搜索定位审计
3
、可通过伪协议玩法绕过相关修复等

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



