基本格式
<!--第一部分: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文档定义语义约束。
- DTD内部声明
<! DOCTYPE根元素[元素声明]>
- DTD外部引用
<! DOCTYPE根元素名称 SYSTEM“外部DTD的URL>
- 引用公共DTD
<! DOCTYPE根元素名称 PUBLIC“DTD标识名”“公用DTD的URI">
外部实体引用 payload
<?xml version="1.0"?>
<!DOCTYPE ANY [
<!ENTITY f SYSTEM "file:///etc/passwd">
<x>&f;</x>
外部引用可以支持httpfileftp等协议。
如果一个接口支持接收xml数据,且没有对xml数据做任何安全上的措施,就可能导致XXE漏洞
simplexml_load_ string()
函数转换形式良好的XML字符串为 SimpleXMLElement对象
在PHP里面解析xml用的是libxml,其在≥29.0的版本中默认是禁止解析xml外部实体内容的。
XXE漏洞发生在应用程序解析XML输入时,没有禁止外部实体的加载,导致攻击者可以构造一个恶意的XML。
XML注入详解:
https://butian.360.cn/School/content?id=410
XML注入详解(二) xxe注入攻击:
网友评论