XML是一种非常流行的标签语言。在分析外部实体的过程中,XML解析器可以根据url.External实体中指定的方案(协议)来查询各种网络协议和服务(DNS,FTP,HTTP,SMB等),对于创建动态非常有用文档中的参考文献,因此参考资源进行的任何更改都将在文档中自动更新。但是,在处理外部实体时,可以启动许多攻击应用程序。这些攻击包括泄漏本地系统文件。这些文件可能包括敏感数据,例如密码和私人用户数据,或使用各种方案的网络访问功能来操纵内部应用程序。通过将这些攻击与其他缺陷相结合,这些攻击的范围可以扩展到客户记忆损失,任意代码,执行,甚至服务中断,具体取决于这些攻击的上下文。
XML文档具有自己的格式规范。此格式规范由DTD(文档类型定义)控制。
上面的DTD定义了XML的根元素是消息,然后该元素下面有一些子元素。那么XML必须像以下内容一样写
实际上,除了定义DTD中的元素(实际上,它是XML中的标签)之外,我们还可以定义DTD中的实体(对应于XML标签中的内容)。毕竟
这是一个解释任何元素的元素,但是定义了XML的实体(实际上可以将实体视为变量,然后我们可以通过XML中的&符号引用它),然后可以将XML作为这种方式写入以这种方式写。
示例代码:
我们使用&xxe引用了上面定义的XXE实体,并且当输出输出时,&xxe将被“测试”代替。
示例代码:
当然,还有另一种使用参考公共DTD方法的参考方法。语法如下:
我们已经将实体分为两个派系(内部实体以及外部和外部),但是从另一个角度来看,该实体也可以分为两个派系(通用实体和参数实体)。
在DTD定义中使用,在XML文档中引用
(1)在DTD中定义的使用(此处不少于空间),并且只能在DTD文件中使用DTD(2)中的参考,参数实体的语句可以引用其他实体(3),与通用实体。参数与一般实体相同。实体还可以引用外部参考
示例代码:
转:参数实体在我们的盲人xxe中发挥了至关重要的作用
该实验的攻击场景模拟了服务何时可以接收和分析XML格式的输入,并且有一个恢复,我们可以输入自定义XML代码以通过引用外部实体方法引用服务器上的文件。
将解析XML的PHP代码放在本地服务器上:
xml.php
其中:libxml_noent:将XML中的实体替换为相应的值libxml_dtdload:在Doctype中加载DTD文件
触发xxe
读取本地服务器C驱动器的标志文件
来自外部实体阅读文件的报价
参考方法是读取参考公共DTD的方法
如果有备份情况,您可以直接在页面中看到有效负载的执行结果或现象。没有反向的情况也称为盲人xxe。您可以使用take -out数据频道提取data.content,然后将带有HTTP请求的内容发送到接收数据的服务器。
xml.php
test.dtd
有效载荷
从有效载荷中,我们可以看到三个参数实体%远程;%int;%发送;这是我们的使用顺序,远程远程调用%,并在远程服务器上的请求test.dtd呼叫后,与test.dtd income类似,然后test.dtd中的%file.dtd将是用于在服务器上获取敏感文件,然后在百分比发送之后填充%文件的结果(因为实体的值不能在百分比中,因此将其转换为HTML实体编码),然后我们再次调用%发送;将我们读取的数据发送到远程VPS,以便可以实现Take -Out数据的效果,并且XXE完美地求解XXEthere没问题。
这样,我们读取标志文件的内容。
https://xz.aliyun.com/t/3357#toc-10 0文章带您了解漏洞的脆弱性xxe脆弱性
实验:十四周|盲人XXE(天上的网络安全实验室)单击以输入练习>>
有关更多拍摄现场实验和在线安全学习材料,请单击此处>>
原始:https://juejin.cn/post/7096382411621023752