文件包含

  • 文件包含漏洞
    web应用对用户输入没有进行严格过滤就带入文件包含函数中执行,在代码引入其他文件作为PHP文件执行时,未对文件进行严格过滤,导致用户指定任意文件,都作为php文件解析执行。
    文件包含漏洞也是一种注入型漏洞,输入一段用户能够控制的脚本或代码,并让服务端执行。
    包含:PHP中,把重复使用的函数写入单个文件中,在使用该函数时,直接调用此文件,无需再次编写函数,这个过程叫包含。
    1、本地文件包含:读取和打开本地文件
    2、远程文件包含:通过HTTP、HTTPS、PHP伪协议等加载远程文件,在php.ini中开启allow_url_include、allow_url_fopen选项。 开启后可以直接执行任意代码。
  • PHP文件包含函数
    1、include():使用此函数,只有代码执行到此函数时才将文件包含进来,发成错误时之警告并继续执行。
    2、include_once():功能与前者一样,区别在于当重复调用同一文件时,程序只调用一次。
    3、require():使用此函数,只要程序执行,立即调用此函数包含文件,发生错误时,会输出错误信息并立即终止程序。
    4、require_once():功能和前者一样,区别在于当重复调用同一文件时,程序只调用一次。
  • 文件包含利用
    1、读取任意敏感文件
    2、远程包含shell
    3、图片上传并包含图片shell
    4、使用为协议
    5、包含日志文件GetShell
    6、截断包含
  • 文件包含修复方案
    1、禁止远程文件包含allow_url_include=off
    2、配置open_basedir=指定目录,限制访问区域,防止目录遍历。
    3、过滤../等特殊符号
    4、修改Apache日志文件的存放地点
    5、开启魔术引号magic_quotes_qpc=on
    6、尽量不使用动态变量调用文件,直接写要包含的文件或动态包含文件设置白名单,只允许读取白名单文件
    7、php版本升级,防止%00截断
  • 本地文件包含LFI
    1、配合文件上传使用
    当找不到文件上传漏洞,无法上传webshell,可以先上传一个图片格式的webshell到服务器,再利用本地文件包含进行解析。
    2、包含apache日志文件
    对日志文件可读,知道日志文件存储目录,一般情况下日志存储目录会被修改,需要读取服务器配置文件(httpd.conf,nginx.conf)或者根据phpinfo()中的信息来得知
    日志记录的信息都可以被调整,比如记录报错的等级,或者内容格式。在用户发起请求时,服务器会将请求写入access.log,当发生错误时将错误写入error.log。
    3、包含session文件
    找到session内的可控变量,session文件可读写,并且知道存储路径

    4、包含临时文件
  • 远程文件包含RFI
    如果PHP的配置选项allow_url_include、allow_url_fopen状态为ON的话,则include/require函数是可以加载远程文件的,这种漏洞被称为远程文件包含(RFI)
  • 文件包含绕过
    1、%00截断:php小于5.3.4允许使用%00截断
    指定前缀绕过
    2、目录遍历:../../../
    3、编码绕过:url编码、二次编码、容器/服务器编码
    指定后缀绕过
    4、利用协议绕过
    5、数据溢出,超过目录最大长度字节后面数据被丢弃。
  • PHP伪协议

    1、file://协议
    file://[文件的绝对路径和文件名]用于访问本地文件系统,在CTF中通常用来读取本地文件且不受allow_url_include的影响。
    2、php://协议
    php://访问各个输入/输出流(I/O streams),
    php://filter/convert.base64-encode/resource=文件路径 。用于读取源码,并进行base64编码输出allow_url_fopen :off/on allow_url_include:off/on
    php://input用于执行php代码 allow_url_fopen :off/on allow_url_include:on
    3、ZIP://协议
    zip://绝对路径。zlib://、bzip://
    可以访问压缩包里面的文件,当它与包含函数结合时,zip://流会被当作php文件执行。
    要用#分割压缩包和压缩包里面的内容,并且#要用url编码成%23。只需要时zip压缩包即可,后缀名可以任意更改。

    4、data://协议

    5、伪协议利用

本文作者:予遂计划

本文链接:https://www.cnblogs.com/ysjh/p/18719869

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   予遂计划  阅读(5)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起
  1. 1 404 not found REOL
404 not found - REOL
00:00 / 00:00
An audio error has occurred.