【学习园地】XXE漏洞

admin 2022年7月15日02:07:34评论71 views字数 1427阅读4分45秒阅读模式

【学习园地】XXE漏洞
【学习园地】XXE漏洞

【学习园地】XXE漏洞

1

什么是XXE



XXE(XML External Entity Injection)即XML外部实体类注入漏洞。XXE漏洞发生在应用程序解析XML输入时,没有禁止外部实体的加载,导致可加载恶意外部文件,造成文件读取、命令执行、内网端口扫描、攻击内网网站、发起dos攻击等危害。XXE漏洞触发的点往往是可以上传XML文件的位置,没有对上传的XML文件进行过滤,导致可上传恶意XML文件。


今天训练营将给大家介绍和演示XXE漏洞,下面是一个XML示例,和HTML相似但是标签更加随意


<?xml version="1.0" encoding="UTF-8"?><note><to>这是个示例</to><from>标签是随意的</from><heading>Reminder</heading><body>Don't forget me this weekend!</body></note>



2
DTD概念


文档类型定义(DTD)可定义合法的XML文档构建模块。它使用一系列合法的元素来定义文档的结构。

DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用。

这个是DTD文件的格式

<!ELEMENT 元素名 类型>

下面是一个DTD文件的示例

<!ELEMENT note (to,from,heading,body)><!ELEMENT to (#PCDATA)><!ELEMENT from (#PCDATA)><!ELEMENT heading (#PCDATA)><!ELEMENT body (#PCDATA)>



3
漏洞演示


比如我们可以通过DTD来访问目标电脑的上的某些文件,例如

<?xml version="1.0"?><!DOCTYPE ANY [    <!ENTITY content SYSTEM "file:///etc/passwd">]><note>    <name>&content;</name></note>   

     

【学习园地】XXE漏洞


在安装了expect扩展时我们还可以让其执行一些系统命令



4
防御手段


可以使用语言提供的禁用外部实体的方法、

例如PHP

libxml_disable_entity_loader(true);

JAVA

DocumentBuilderFactory dbf =DocumentBuilderFactory.newInstance();dbf.setExpandEntityReferences(false);.setFeature("http://apache.org/xml/features/disallow-doctypedecl",true);.setFeature("http://xml.org/sax/features/external-generalentities",false).setFeature("http://xml.org/sax/features/external-parameterentities",false);

Python

from lxml importetreexmlData=etree.parse(xmlSource,etree.XMLParser(resolve_entities=False))


或者对XML进行检查对关键字进行黑名单

比如SYSTEM和PUBLIC。






大学生网络安全尖锋训练营

邮箱|[email protected] 
地址|北京市海淀区奥北科技园20号楼5层

【学习园地】XXE漏洞





原文始发于微信公众号(大学生网络安全尖锋训练营):【学习园地】XXE漏洞

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年7月15日02:07:34
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【学习园地】XXE漏洞https://cn-sec.com/archives/1177303.html

发表评论

匿名网友 填写信息