• 文件包含


    一. 简单理解

    文件包含就是一个文件里面包含另外一个文件。一开始接触的时候是因为php里面,但是查找了一些资料这个存在在很多语言里面。
    程序开发人员一般会把重复使用的函数写到单个文件中,需要使用某个函数时直接调用此文件,而无需再次编写,这中文件调用的过程一般被称为文件包含。
    程序开发人员一般希望代码更灵活,所以将被包含的文件设置为变量,用来进行动态调用,
    但正是由于这种灵活性,从而导致客户端可以调用一个恶意文件,造成文件包含漏洞。
    几乎所有脚本语言都会提供文件包含的功能,但文件包含漏洞在PHP Web Application中居多,
    而在JSP、ASP、程序中却非常少,甚至没有,这是有些语言设计的弊端。
    在PHP中经常出现包含漏洞,但这并不意味这其他语言不存在。

    二.产生的原因

    通过引入文件时,用户可控,没有严格的检验,或是被绕过,操作一些敏感文件,导致文件泄露和恶意代码注入
    当包含文件在服务器本地上,就形成本地文件包含,当包含的文件在第三方服务器是,就形成可远程文件包含。

    包含文件的函数

    1.include()

    2.include_once()

    3.require()

    4.require_once()

    代码审计的时候,是否是变量,不过滤,过滤不严格,函数include/require

    远程文件包含和本地文件包含的配置区别

    • 本地文件包含php.ini配置文件中开启allow_url_include
    • 远程文件包含与本地文件包含的区别(开启allow_url_include和allow_url—ftp on)
    • 远程文件(包括本地文件包含)包含比本地文件包含的危害大

      本地文件包含利用

    • 上传图片GETshell
    • 读取文件,读取php文件
    • 包含日志文件获取webshell
    • 包含/proc/self/environ 文件webshell
    • phpinfo.php 可以包含临时文件(显示临时文件路径)写工具发包上传文件。查看返回信息路径。在使用include包含文件(速度要求快)
    • 包含data//或是php://input协议(伪协议,需要allow_url_include=On) 作者:青山i 链接:https://www.jianshu.com/p/110278faeddb

    使用PHP封装协议读取文件和写入PHP文件
    1.读取文件
    先看看读取文件,如输入page参数值为:php://filter/read=convert.base64-encode/resource=../../../../../var/www/dvwa/hackable/uploads/1.txt
    格式为上
    2.写入文件
    前提条件是allow_url_include为on,则构造如下URL:192.168.220.128/dvwa/vulnerabilities/fi/?page=php://input
    然后再POST需要输入的内容即可,这里通过Firefox的HackBar来POST数据

  • 相关阅读:
    Python3.6全栈开发实例[022]
    Python3.6全栈开发实例[021]
    Python3.6全栈开发实例[020]
    Python3.6全栈开发实例[019]
    Python3.6全栈开发实例[018]
    单选按钮QRadioButton
    QToolButton按钮
    文本编辑框QTextEdit
    信号-事件汇总
    QMessageBox消息框
  • 原文地址:https://www.cnblogs.com/hansermukk/p/11188736.html
Copyright © 2020-2023  润新知