【web安全】文件包含漏洞详细整理

news2025/1/18 8:49:46

前言

菜某的笔记总结,如有错误请指正。

本文用的是PHP语言作为案例

文件包含漏洞的概念

开发者使用include()等函数,可以把别的文件中的代码引入当前文件中执行,而又没有对用户输入的内容进行充分的过滤,所以导致用户可以通过改变输入访问任何文件。

危害

单单一个文件包含的话,并不能有什么大的威胁,但是他像艾滋病一样,他不会干掉你,但是他能让其他的漏洞危害无限放大,让其他漏洞干掉你。

最大功能:不管什么形式的文件,只要里面有PHP代码,就能带入当前文件中执行。

1.配合文件上传:让原本解析不了的文件通过文件包含直接解析。

2.读取网站中的敏感信息,一些储存在文件中的敏感信息,甚至可以跳出网站的文件夹看本盘的文件。

3.自我构建漏洞:即使没有漏洞,也可以直接写一个漏洞上传上去,然后用文件包含去执行。比如SQL注入和远程命令执行。从而实现攻击数据库和操作系统。

4.作为跳板机攻击内网或者其他网站:上传一个ssrf漏洞的代码,然后用文件包含去执行它。让这个服务器去访问其他资源。

有了他你就拥有了一切~

所以这个漏洞大大的强大。

类型

本地包含:包含本地文件

远程包含:包含远程的文件,这个是需要在PHP中进行配置的,可以从phpinfo中看到

最下面的,但是默认是这个off的状态。

这个怎么开百度一下吧,开启之后就可以输入想要包含文件的url,在自己网站上写一些漏洞或者后门让目标网站去包含就可以了。

 文件包含漏洞的基础案例演示

环境为本地搭建

文件位置以及源代码

 

利用方法

可以看到我们用这个漏洞访问了show.txt.

文件包含漏洞的检测方法

白盒:代码审计

黑盒:

1.扫描工具

2.cms平台的公开漏洞

3.根据URL判断

根据URL的判断方法

1.看传参,很明显这里能看出来他包含了show的文件

2.把传参去除看看页面是否一致,再或者访问一下show看看界面是否一致。

3.看英语含义,因为代码大多是用英语简写写的,传参的时候,id一般就是序号,file一般就是文件,file的话一般可能是包含的文件。

文件包含的防御方法

1.固定文件名的后缀

2.升级PHP防止%00的截断

3.使用waf

4.使用白名单,规定部分文件

5.上传的文件进行重命名,防止被读取

 文件包含的部分绕过

绕过固定后缀

源代码和文件

包含的文件强制添加了html后缀

 访问html正常

但是无法访问我们想要访问的txt文件了

绕过方法

%00截断法

前提:对方PHP版本小于5.3.4

因为我的版本比较高,所以就不演示了。

原理就是%00后面的内容会被截掉,.html就不起作用了。

下面这个有一定争议哈

长度截断法

当名称长过了一定限制之后,后面的就全没用了,所以.html在最后面就不起作用。

截断长度:windows长于256,linux长于4096

具体还是要看版本而定。

思路就是添加一些符号,但是系统会把这些符号过滤掉,但是长度过长。后缀限制也给移除了。

但是实测,我发现。。。我的并没有截断,但是有人能截断,这个还是看个人情况吧

文件包含的一些花活案例演示

配合文件上传进行攻击

这里我修改了pikachu靶场的文件上传模块让他含有文件包含漏洞

pikachu文件的修改如下

我在文件上传的部分添加了一个include和file的文件其中include包含了文件上传漏洞。

include代码

file中的代码

 首先我们看到文件包含漏洞是可以利用的

接下来开始文件上传操作

文件上传处只允许上传图片,假设这里过滤十分严谨没有能解析成PHP的可能。

但是我们利用文件包含漏洞

上传一个png文件里面写有一句话木马

 

上传毫无阻拦

这里利用文件包含漏洞去执行图片代码。

用蚁剑去连接

日网站成功!

跳出网站文件夹,包含上级文件

文件位置如下

包含文件路径如上

e盘中存在lookme.txt

我们需要向上跨越三级去包含这个文件。

成功日站。

伪协议

使用前提

各脚本的支持情况

 几个特殊的伪协议

php://协议

常用

php://filter用于读取源码

储存在PHP文件中,包含经常会直接运行,用这个协议可以读取源码。

让他返回一个base64的文件,然后解码。

语法:php://filter/convert.base64-encode/resource=文件路径


php://input用于执行php代码

把post请求中的数据作为代码执行

语法:php://input + [POST DATA]

post写法:<?php phpinfo(); ?>

phar://、zip://、bzip2://、zlib://

用来访问压缩包中的文件

语法案例:

zip://[压缩包绝对路径]#[压缩包内文件]

我的PHP版本高,演示不了。。。

还有一些其他的可以看一下这个

https://www.cnblogs.com/endust/p/11804767.html

总结

嗯,总之就是很强大。

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

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

相关文章

视频封面提取:精准截图,如何从指定时长中提取某一帧图片

在视频制作和分享过程中&#xff0c;一个有吸引力的封面或截图往往能吸引更多的观众点击观看。有时候要在特定的时间段内从视频中提取一帧作为封面或截图。如果每个视频都手动提取的话就会耗费很长时间&#xff0c;那么如何智化能批量提取呢&#xff1f;现在一起来看下云炫AI智…

AI人工智能和大模型的总结概述之一

GPT引领了AIGC时代的到来&#xff0c;即AI生成内容&#xff08;文本、图片、音频、视频&#xff09; GPT&#xff0c;GPT是一种生成式的、预训练的大模型&#xff0c;属于深度学习&#xff1a; G&#xff1a;Generative 生成式 GPT能够通过深度学习算法对已有数据库进行学习&…

工作中常用的RabbitMQ实践

目录 1.前置 2.导入依赖 3.生产者 4.消费者 5.验证 验证Direct 验证Fanout 验证Topic 1.前置 安装了rabbitmq&#xff0c;并成功启动 2.导入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-…

Vulnerability: File Upload(low)--MYSQL注入

选择难度&#xff1a; 1.打开DVWA&#xff0c;并登录账户 2.选择模式&#xff0c;这里我们选择 文件上载的最低级模式&#xff08;low&#xff09; 在vsc里面写个一句话木马 这里我们注意&#xff0c;因为这个是木马很容易被查杀&#xff0c;从而无法使用&#xff0c;所以我们…

Docker安装postgres最新版

1. postgres数据库 PostgreSQL是一种开源的关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;它是一种高度可扩展的、可靠的、功能丰富的数据库系统。以下是关于PostgreSQL的一些介绍&#xff1a; 开源性&#xff1a;PostgreSQL是一个开源项目&#xff0c;可以…

这个sql有点东西,记录一下

我有一个需求&#xff1a;在订单表里面查询指定时间的订单数据&#xff0c;如果要是没有订单的话&#xff0c;需要展示当天日期和数据&#xff0c;数据为0 先看一下效果&#xff1a; 话不多说&#xff0c;直接上SQL SELECTdate_range.date AS 日期,COUNT( oco.id ) AS 总订单…

返回列表中满足指定条件的连续元素:只返回第一个不符合条件元素之前的各元素itertools.takewhile()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 返回列表中满足指定条件的连续元素&#xff1a; 只返回第一个不符合条件元素之前的各元素 itertools.takewhile() [太阳]选择题 请问以下代码输出的结果是&#xff1f; import itertools a …

spark sql基于RBO的优化

前言 这里只对RBO优化进行简单的讲解。讲解RBO之前必须对spark sql的执行计划做一个简单的介绍。 这个里讲解的不是很清楚&#xff0c;需要结合具体的执行计划来进行查看 1、执行计划 在spark sql的执行计划中&#xff0c;执行计划分为两大类&#xff0c;即逻辑执行计划、物…

zxjy003- Spring Cloud后端工程搭建

1、创建 sprigboot 工程 guli-parent groupId &#xff1a; com.atguigu artifactId &#xff1a; guli-parent 2.删除src目录 3.配置pom.xml 修改版本为 &#xff1a;2.2.1.RELEASE<artifactId> 节点后面添加 pom类型 全部依赖&#xff0c;复制下面的即可&#xff0c…

Python 从入门到精通 学习笔记 Day02

Python 从入门到精通 第二天 今日目标 字符串基本操作、字符串序列操作、输入输出函数 字符串内置方法、运算符、练习之前学习的内容 一、字符串基本操作 在Python中&#xff0c;字符串的转义是指在字符串中使用特殊的字符序列来表示一些特殊字符。 在Python中&#xff0c;字…

小红书蒲公英平台开通后,有哪些注意的地方,以及如何进行报价?

今天来给大家聊聊当小红书账号过1000粉后&#xff0c;开通蒲公英需要注意的事项。 蒲公英平台是小红书APP中的一个专为内容创作者设计的平台。它为品牌和创作者提供了一个完整的服务流程&#xff0c;包括内容的创作、推广、互动以及转换等多个方面。 2.蒲公英平台的主要功能 &…

MySQL8.0新特性:函数索引,使用函数也不会导致索引失效~

文章目录 写在前面使用函数索引1、数据准备2、索引验证&#xff08;1&#xff09;普通索引&#xff08;2&#xff09;函数索引 总结 写在前面 之前我们知道&#xff0c;如果在查询中加入了函数&#xff0c;索引不生效&#xff0c;所以MySQL 8引入了函数索引&#xff0c;MySQL …

Uview------使用教程

一、点击一下链接安装&#xff1a; https://ext.dcloud.net.cn/plugin?id1593 如果使用HBuilderX编辑器的可以直接点击第一种方式自动安装即可 二&#xff1a;配置文件 在main.js中写入 记得要写在import Vue from vue下面 import uView from ./uni_modules/uview-ui Vue…

【EI征稿中|ACM出版】2023 人工智能、系统与网络安全国际学术会议 (AISNS 2023)

2023 人工智能、系统与网络安全国际学术会议 (AISNS 2023&#xff09; 2023 International Conference on Artificial Intelligence, Systems and Network Security 由西南科技大学计算机科学与技术学院主办的2023人工智能、系统与网络安全国际学术会议 (AISNS 2023&#xff…

windows MYSQL下载和自定路径安装,以及解决中文乱码问题。

文章讲的很详细&#xff0c;请耐心往下看。 一、mysql下载 下载网址&#xff1a;https://www.mysql.com/downloads/ 表示不登录&#xff0c;直接下载。 以上就把安装包下载完了。下载是8.0.35版本。 二、接下来看怎么安装 1.双击安装包&#xff0c;进行安装。 注意&#x…

MX6ULL学习笔记 (八) platform 设备驱动实验

前言&#xff1a; 什么是 Linux 下的 platform 设备驱动 Linux下的字符设备驱动一般都比较简单&#xff0c;只是对IO进行简单的读写操作。但是I2C、SPI、LCD、USB等外设的驱动就比较复杂了&#xff0c;需要考虑到驱动的可重用性&#xff0c;以避免内核中存在大量重复代码&…

MATLAB - 绘制立体图(平面+水深)

目录 代码结果 代码 % 在 X-Y 平面上绘图 % 正常绘制平面图 [X,Y,Z] peaks; contour(X,Y,Z,20); hold on% ****重点******************************************** % 改为三维视图&#xff0c;具体可以help % view(3); %此时的平面图对应z0 &#xff1b;默认az-37.5&#x…

Sql Server关于表的建立、修改、删除

表的创建&#xff1a; &#xff08;1&#xff09;在“对象资源管理器”面板中展开“数据库”节点&#xff0c;可以看到自己创建的数据库&#xff0c;比如Product。展开Product节点&#xff0c;右击“表”节点&#xff0c;在弹出的快捷菜单中选择“新建表”项&#xff0c;进入“…

[FPGA 学习记录] 快速开发的法宝——IP核

快速开发的法宝——IP核 文章目录 1 IP 核是什么2 为什么要使用 IP 核3 IP 核的存在形式4 IP 核的缺点5 Quartus II 软件下 IP 核的调用6 Altera IP 核的分类 在本小节当中&#xff0c;我们来学习一下 IP 核的相关知识。 IP 核在 FPGA 开发当中应用十分广泛&#xff0c;它被称为…

FastAPI查询参数和字符串校验

在FastAPI中&#xff0c;你可以为参数声明额外的信息和校验。这对于查询参数来说尤其有用&#xff0c;因为它们通常用于过滤或排序结果。本教程将引导你如何使用Query对象来添加这些额外的校验。 导入所需库 首先&#xff0c;你需要导入FastAPI以及Query对象&#xff1a; fr…