XXE浅析

XXE

原理

服务端接收和解析了来自用户端的xml数据,而又没有做严格的安全控制,从而导致xml外部实体注入,造成任意文件读取命令执行内网端口扫描攻击内网网站发起Dos攻击等危害

先来了解一下XML和DTD

DTD的基本概念:document type definition 文档类型定义
XML的基本概率:可扩展标记语言,标准通用标记语言的子集,简称XML。是一种用于标记电子文件使其具有结构性的标记语言
DTD文件一般和XML文件配合使用,主要是为了约束XML文件。
XML文件引入DTD文件,这样XML可以自定义标签,但又受到DTD文件的约束。

危害

1.DOS攻击

2.SSRF攻击

3.使用file协议读取任意文件

4.端口探测

5.执行系统命令

防御

-方案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

测试点

-XXE黑盒发现:
1、获取得到Content-Type或数据类型为xml时,尝试进行xml语言payload进行测试
2、不管获取的Content-Type类型或数据传输类型,均可尝试修改后提交测试xxe
3、XXE不仅在数据传输上可能存在漏洞,同样在文件上传引用插件解析或预览也会造成文件中的XXE Payload被执行
-XXE白盒发现:
1、可通过应用功能追踪代码定位审计
2、可通过脚本特定函数搜索定位审计
3、可通过伪协议玩法绕过相关修复等

参考

http://yym.show/XXE漏洞原理/

https://www.cnblogs.com/20175211lyz/p/11413335.html

个人建议

先学一下xml,对这个漏洞的理解可能会更深,利用也会更加清楚

网安学的东西很多很杂,加油网安人

posted @ 2022-04-28 19:25  阿力先生  阅读(75)  评论(0)    收藏  举报