zoukankan      html  css  js  c++  java
  • 文件包含漏洞

    什么是文件包含漏洞

    PHP文件包含漏洞的产生原因是在通过PHP的函数引入文件时,由于传入的文件名没有经过合理的校验,从而操作了预想之外的文件,就可能导致意外的文件泄露甚至恶意的代码注入。最常见的就属于本地文件包含(Local File Inclusion)漏洞了。

    程序开发人员一般会把重复使用的函数写到单个文件中,需要使用某个函数时直接调用此文件,而无需再次编写,这种文件调用的过程一般被称为文件包含。

    程序开发人员一般希望代码更灵活,所以将被包含的文件设置为变量,用来进行动态调用,

    但正是由于这种灵活性,从而导致客户端可以调用一个恶意文件,造成文件包含漏洞。

    远程文件包含漏洞的类型

    1.       本地文件包含漏洞

    就是在网站服务器上本身存在恶意文件,然后利用本地包含使用。

    2.       远程文件包含漏洞

    远程文件包含漏洞就是调用其它网站的恶意文件进行打开

    常见的PHP文件包含函数

            require:找不到被包含的文件时会产生致命错误,并停止脚本执行。

            Include:找不到被包含的文件时只会产生警告,脚本将继续执行

            Include_once:与include类似,区别就是如果该文件中的代码已经被包含,则不会再次包含。

            Require_once:与require类似,区别就是如果该文件中的代码已经被包含,则不会再次包含。

    文件包含示例

    1.       本地包含

    修改ph配置文件php.ini

    写一个测试文件qswz,测试页面正常

    在写一个文件包含测试页qswz111.php

    这就是一个简单的文件包含过程

    接下来,我们把被包含的文件名改为txt文件测试

    事实说明,只要文件里面写的是php代码就会执行。当然,如果包含的不是php语法规则的内容则会暴露源码。

    2.       远程包含

    执行的是qswz.txt文件中的内容。

    文件包含的利用

    1.       读取敏感文件

    Eg: 访问URL:localhost/qswz111.php?page=http://127.0.0.1/qswz.txt如果目标主机文件存在,并且具有相应的权限,那么就可以读出文件的内容,反之会被警告。

    2.       远程包含shell

    如果目标主机allow_url_fopen选项是激活的,就可以尝试远程包含一句话木马

    3.     本地包含配合文件上传

    4.     PHP封装协议

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

    http://       访问HTTP(S)网址

    ftp://          访问FTP(s)URLs

    php://         访问输入/输出流  (I/O streams)

    zlib://          压缩流

    data://         数据(RFC   2397)

    ssh2://         Secure Shell 2

    expect://      处理交互式的流

    glob://            查找匹配的文件路径

    a.     可以使用封装协议读取php文件

    b.     可以使用封装协议写入php文件  php://input

    5.     包含apache 的日志文件

    6.     截断包含

     

    嗯,就先这么多吧

     

  • 相关阅读:
    springboot+mybatisplus使用xml找不到mapper的解决办法
    PDF转换成Word文档
    Mybatis-Plus增删改查
    Redis 常用命令
    Java 获取两个List<String>中不同的数据
    controller 返回界面 中文乱码
    Navicat已经成功连接,密码忘记的解决方案
    List数组指定切割
    xml字符串转换成Map
    Java 前一个月的最后一天日期计算
  • 原文地址:https://www.cnblogs.com/qswz/p/11852994.html
Copyright © 2011-2022 走看看