XMLXXE 安全无回显方案OOB 盲注DTD 外部实体黑白盒挖掘
 # 详细点:  
 
 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 
 
 
 
  
  
  
 
