xxe漏洞简介

本文详细介绍了XXE漏洞的原因、原理、常见payload以及防御措施。在新版本中,simplexml_load_file函数需要指定解析实体参数以避免XXE。XXE攻击可以通过读取文件、DoS或CSRF等方式进行,防御措施包括禁用外部实体解析、升级补丁和加强系统监控。此外,还提到了XXE盲注的概念。

xxe漏洞无法复现原因

主要是simplexml_load_file这个函数的问题,在旧版本中是默认解析实体的,但是在新版本中,已经不再默认解析实体了,需要在simplexml_load_file函数中指定第三个参数为LIBXML_NOENT,不然不会解析实体的。


xxe实体注入详解

0x00背景

XXE Injection即XML External Entity Injection,也就是XML外部实体注入攻击.漏洞是在对非安全的外部实体数据进行处理时引发的安全问题.在XML1.0标准?里,XML文档结构里定义了实体(entity)这个概念.实体作用类似word中的"宏",也可以理解为DW中的模板,你可以预先定义一个entity,然后在一个文档中多次调用,或者在多个文档中调用同一个entity(XML定义了两种类型的entity.一种是我们这里说的普通entity,在XML文档中使用;另一种是参数entity,在DTD文件中使用.)

entity的定义语法为

<!DOCTYPE filename
[ <!ENTITY entity-name "entity-content"
]>

定义好的entity在文档中的引用语法为:

&entity-name;

ENTITY可以使用SYSTEM关键字,调用外部资源,而这里是支持很多的协议,如:http;file等 例如:

file:///path/to/file.ext
http://url/file.ext
php://filter/read=convert.base64-encode/resource=conf.php

0x01原理

如果在产品功能设计当中,解析的xml是由外部可控制的,那将可能形成,如:文件读取,DoS,CSRF等漏洞。各种语言都有支持xml的组件及函数。在PHP中默认处理的函数为: xml_parse和simplexml_load。 xml_parse的实现方式为expat库,默认情况不会解析外部实体,而simplexml_load默认情况下会解析外部实体,造成安全威胁.。 自己写个脚本测试一下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值