• 文件包含漏洞


    什么是文件包含漏洞

    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.     截断包含

     

    嗯,就先这么多吧

     

  • 相关阅读:
    MySQL、Redis 和 MongoDB 的优缺点
    解决数据库高并发
    数据库事务
    Mysql 数据库存储的原理?
    CSRF
    MVC模型和MVT模型
    AJAX
    正则表达式-re模块
    ddt-数据驱动测试
    python-时间格式化
  • 原文地址:https://www.cnblogs.com/qswz/p/11852994.html
Copyright © 2020-2023  润新知