学习日志9:XXE+php://filter绕过WAF读内网文件

这篇学习日志详细介绍了如何利用XXE漏洞,结合php://filter和data://text/plain;base64规避WAF限制,读取内网PHP文件。通过设置浏览器断点绕过前端加密,然后构造payload,通过特定URL传递文件内容,成功获取目标机器上D:/path/index.php的内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

摘自freebuf
出处:https://www.freebuf.com/vuls/211822.html

基础知识:
1.php://filter是php中独有的一个协议,可以作为一个中间流来处理其他流,可以进行任意文件的读取;使用不同的参数可以达到不同的目的和效果:其中resource=<要过滤的数据流>,指定了要筛选过滤的数据流
2.php的data://text/plain;base64,数据流封装器,代表之后的数据为base64编码的
3.由于XXE漏洞的特殊性,在读取HTML、PHP等文件时可能会抛出此类错误parser error : StartTag: invalid element name。其原因是,PHP是基于标签的脚本语言,<?php ... ?>这个语法也与XML相符合,所以在解析XML的时候会被误认为是XML,而其中内容(比如特殊字符)又有可能和标准XML冲突,所以导致了出错。所以,为了读取包含有敏感信息的PHP等源文件,可以先将可能引发冲突的PHP代码进行base64编码,这里就会用到php://filter,例如php://filter/read=convert.base64-encode/resource=index.php代表将index.php进行base64编码后读取

漏洞发现过程:
1.发现页面存在xml调用,可能存在XXE,但是xml在前端进行了加密。
2.寻找加密的js函数,发现不可读。使用浏览器设置断点,先修改xml内容,再继续运行函数对xml加密,完成绕过。
3.构造XXE利用代码,请求远程文件时回显Error while parsing XML&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值