伪协议filter_代码审计php伪协议利用

作者:小刚 一位苦于信息安全的萌新小白帽, 记得   586e9174de2bc816ac5031aa95684fbd.png 本实验仅用于信息防御教学,切勿用于它用途 826bfc7aa06c748fd24a45a1813c50f0.png

什么是伪协议

PHP 带有很多内置  URL 风格 的封装协议,可用于类似 fopen()、 copy()、 file_e xists() 和 filesize() 的文件系统函数。
file://访问本地文件系统
http://访问 HTTP(s) 网址
ftp://访问 FTP(s) URLs
php://访问各个输入/输出流(I/O streams)
zlib://压缩流
data://数据(RFC 2397)
glob://查找匹配的文件路径模式
phar://PHP 归档
ssh2://Secure Shell 2
rar://RAR
ogg://音频流
expect://处理交互式的流

    这些伪协议的使用主要受allow_url_fopen和allow_url_include的影响

在漏洞挖掘过程中,可以利用文件包含漏洞 include()  通过以上协议实现漏洞的进一步挖掘 还可以利用curl-exec进行ssrf攻击和内网渗透

常用协议

1.file://访问本地文件系统

文件系统是 PHP 使用的默认封装协议,显示本地文件内容利用方法:
?test=file:///path/123.txt?test=file://C:/windows/win.ini
将直接 输出文件 里面的 内容

2.php:// 访问各个输入/输出流

php://input 是个可以访问请求的原始数据的只读流。
php://output 是一个只写的数据流, 允许你以 print 和 echo 一样的方式 写入到输出缓冲区。
php://filter 是一种元封装器,设计用于数据流打开时的筛选过滤应用。利用方式:
?test=php://input  【post data】<?php phpinfo();?>
通过input流在 POST数据 处进行行传入数据,实现代码执行
?test=php://filter/resource=1.txt?test=php://filter/read=convert.base64-encode/resource=123.php
通过此方法可以 读取源码 ,通常使用第二种将源码转为 base64 的方式,防止特殊字符报错。

3.data:// — 数据

利用方式:
?test=data://test/plain,<?php phpinfo();?>?test=data:text/plain,<?php phpinfo();?>?test=data://text/plain;base64,PD9waHAgcGhwaW5mbygpOz8+
通过data伪协议将 数据上传并执行 。
1和2 是两种不同的写法,实现效果相同

4.zip和phar

利用zip或phar伪协议可以读取压缩包中的文件,解压的压缩包与后缀无关。
如将file.txt压缩成zip,改后缀为jpg 绕过上传限制
?test=phar://./123/file.jpg/1.php?test=zip://./123/file.zip/1.php
在通过phar 读取压缩包 内的内容。

总结

伪协议的利用可以读取本地文件,窃取源码信息,导致代码执行等,危害巨大。
但php伪协议的使用受限于 allow_url_fopen 和 allow_url_include 的开启
allow_url_fopen是默认开启的
allow_url_include是默认关闭的
所以把控好配置的开关,最好把远程文件包含关闭。
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值