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

前言

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

本文用的是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.mzph.cn/news/205441.shtml

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

相关文章

5G入门到精通 - 5G的十大关键技术

文章目录 一、网络切片二、自组织网络三、D2D技术四、低时延技术五、MIMO技术六、毫米波七、内容分发网络八、M2M技术九、频谱共享十、信息中心网络 一、网络切片 5G中的网络切片是一项关键技术&#xff0c;它允许将整个5G网络分割成多个独立的虚拟网络&#xff0c;每个虚拟网络…

CodeBlocks添加头文件,解决fatal error: ui.h No such file or directory

问题描述 在使用codeblocks工具进行LVGL仿真过程中报错&#xff0c;找不到头文件 原因分析&#xff1a; 没有将头文件加入编辑器搜索的目录中&#xff0c;编译时找不到头文件。 解决方案&#xff1a; 将要包含的头文件的目录加进去就可以了

BCI-Two-streams hypothesis(双流假说)

双流假说 双流假设(Two-stream hypothesis)是关于视觉和听觉神经处理的模型。该假设最初由大卫米尔纳&#xff08;David Milner&#xff09;和梅尔文古德尔&#xff08;Melvyn A. Goodale&#xff09;于1992年的一篇论文中进行了初步描述&#xff0c;认为人类拥有两个独立的视觉…

【爬取音乐,并将音乐信息储存到数据库中】

爬取音乐,并将音乐信息储存到数据库中 确定音乐网站的url并分析网站分析二级页面创建数据库使用Xpath解析&#xff0c;进行多层爬取保存信息完整代码结果 确定音乐网站的url并分析网站 分析二级页面 创建数据库 # 创建一个链接对象 conn pymysql.connect(hostmaster, userroo…

虚拟网络技术:bond技术

网卡bond也称为网卡捆绑&#xff0c;就是将两个或者更多的物理网卡绑定成一个虚拟网卡。 bond的作用&#xff1a; 1.提高网卡的吞吐量 2.增加网络的高可用&#xff0c;实现负载均衡。 一、bond简介 bond技术即bonding&#xff0c;能将多块物理网卡绑定到一块虚拟网卡上&…

六、C语言数组

1. 数组的概念 数组是⼀组相同类型元素的集合&#xff1b;从这个概念中我们就可以发现2个有价值的信息&#xff1a; 数组中存放的是1个或者多个数据&#xff0c;但是数组元素个数不能为0。数组中存放的多个数据&#xff0c;类型是相同的。 数组分为⼀维数组和多维数组&#xf…

Prometheus 发现机制和告警

1.服务发现 Prometheus Server的数据抓取工作于Pull模型&#xff0c;因而&#xff0c;它必需要事先知道各Target的位置&#xff0c;然后才能从相应的Exporter或Instrumentation中抓取数据。在不同的场景下&#xff0c;需要结合不同的机制来实现对应的数据抓取目的。 对于小型的…

企业级 接口自动化测试框架:Pytest+Allure+Excel

1. Allure 简介 简介 Allure 框架是一个灵活的、轻量级的、支持多语言的测试报告工具&#xff0c;它不仅以 Web 的方式展示了简介的测试结果&#xff0c;而且允许参与开发过程的每个人可以从日常执行的测试中&#xff0c;最大限度地提取有用信息。 Allure 是由 Java 语言开发…

【学习记录】从0开始的Linux学习之旅——字符型设备驱动及应用

一、概述 Linux操作系统通常是基于Linux内核&#xff0c;并结合GNU项目中的工具和应用程序而成。Linux操作系统支持多用户、多任务和多线程&#xff0c;具有强大的网络功能和良好的兼容性。基于前面应用与驱动的开发学习&#xff0c;本文主要讲述如何在linux系统上把应用与驱动…

参考信号速度变化存在跳跃时容易发生不稳定的阻抗调节

问题描述 当参考信号速度存在跳跃变化时&#xff0c;阻抗调节系统容易发生不稳定。这是因为阻抗调节系统需要根据参考信号的速度来调整其输出阻抗&#xff0c;以匹配负载阻抗&#xff0c;从而保持系统的稳定性。 当参考信号速度突然变化时&#xff0c;阻抗调节系统可能无法及…

『TypeScript』深入理解变量声明、函数定义、类与接口及泛型

&#x1f4e3;读完这篇文章里你能收获到 了解TypeScript变量声明与类型注解掌握TypeScript函数与方法的使用掌握TypeScript类与接口的使用掌握TypeScript泛型的应用 文章目录 一、变量声明与类型注解1. 变量声明2. 类型注解3. 类型推断 二、函数与方法定义1. 函数定义2. 方法定…

Jmeter 性能测试基础!

压力测试   压力测试分两种场景&#xff1a;一种是单场景&#xff0c;压一个接口的&#xff1b;第二种是混合场景&#xff0c;多个有关联的接口。压测时间&#xff0c;一般场景都运行10-15分钟。如果是疲劳测试&#xff0c;可以压一天或一周&#xff0c;根据实际情况来定。 压…

springboot 在自定义注解中注入bean,解决注入bean为null的问题

问题&#xff1a; 在我们开发过程中总会遇到比如在某些场合中需要使用service或者mapper等读取数据库&#xff0c;或者某些自动注入bean失效的情况 解决方法&#xff1a; 1.在构造方法中通过工具类获取需要的bean 工具类代码&#xff1a; import org.springframework.beans…

Spring到底是如何解决循环依赖问题的?

Spring作为当前使用最广泛的框架之一&#xff0c;其重要性不言而喻。所以充分理解Spring的底层实现原理对于咱们Java程序员来说至关重要&#xff0c;那么今天笔者就详细说说Spring框架中一个核心技术点&#xff1a;如何解决循环依赖问题&#xff1f; 什么是循环依赖问题&#x…

JVM理解

1、JVM是什么&#xff1f; JVM是Java Virtual Machine&#xff08;Java虚拟机&#xff09;的缩写&#xff0c;由一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域等组成。 他是帮助我们将java代码 生成编译后 的 class 文件。 2、JRE、JDK和JVM 的关系 …

用AI批量生成文章的工具有哪些?免费AI生成工具

人工智能&#xff08;AI&#xff09;技术不断演进&#xff0c;为许多领域带来了前所未有的便利。其中&#xff0c;AI生成文章技术作为一个备受关注的领域&#xff0c;为大家提供了独特的解决方案&#xff0c;特别是在批量文章生成的需求上。 1. AI生成文章的方法 开放式AI模型…

基于Browscap对浏览器工具类优化

项目背景 原有的启动平台公共组件库comm-util的浏览器工具类BrowserUtils是基于UserAgentUtils的&#xff0c;但是该项目最后一个版本发布于 2018/01/24&#xff0c;之至今日23年底&#xff0c;已有5年没有维护更新&#xff0c;会造成最新版本的部分浏览器不能正确获取到浏览器…

使用python操作excel文档

导入xlsxwriter包 python轻量化的语言&#xff0c;用来操作文档简直易如反掌&#xff0c;首先你需要导入的是import xlsxwriter包&#xff0c;他包括了操作文档所需要的全部工具方法&#xff0c;你只需要调用就好了。 操作excel指南 首先你需要创建一个文件xlsxwriter.Workb…

http与apache

目录 1.http相关概念 2.http请求的完整过程 3.访问浏览器背后的原理过程 4.动态页面与静态页面区别 静态页面&#xff1a; 动态页面&#xff1a; 5.http协议版本 6.http请求方法 7.HTTP协议报文格式 8.http响应状态码 1xx&#xff1a;提示信息 2xx&#xff1a;成功…

CPU密集型和IO密集型初学习

目录 1、CPU密集型 2、IO密集型 3、CPU密集型和IO密集型的区别 4、CPU密集型和IO密集型对CPU内核之间的关系 5、核心线程数计算公式 5、扩展&#xff1a;进程和线程 小结 1、CPU密集型 CPU密集型是指计算机程序或任务在执行过程中主要依赖于中央处理器&#xff08;CPU&…