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外 部实体内容的。