【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

总结

嗯,总之就是很强大。

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

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

相关文章

算法通关村第十八关-青铜挑战回溯是怎么回事

大家好我是苏麟 , 今天聊聊回溯是怎么个事 . 回溯是最重要的算法思想之一&#xff0c;主要解决一些暴力枚举也搞不定的问题&#xff0c;例如组合、分割、子集、排列&#xff0c;棋盘等。从性能角度来看回溯算法的效率并不高&#xff0c;但对于这些暴力都搞不定的算法能出结果就…

区分node,npm,nvm

目录 一&#xff0c;nodejs二&#xff0c;npm三&#xff0c;nvm 区分node&#xff0c;npm&#xff0c;nvm 几年前学习前端的时候学习的就是htmlcssjs 三件套。 现在只学习这些已经不能满足需要了。 一&#xff0c;nodejs nodejs是编程语言javascript运行时环境。&#xff08;比…

【复杂gRPC之Java调用go】

1 注意点 一般上来说如果java调用java的话&#xff0c;我们可以使用springcloud来做&#xff0c;而面对这种跨语言的情况下&#xff0c;gRPC就展现出了他的优势。 代码放在这了&#xff0c;请结合前面的go服务器端一起使用 https://gitee.com/guo-zonghao/java-client-grpc /…

阿里云实时数据仓库HologresFlink

1. 实时数仓Hologres特点 专注实时场景&#xff1a;数据实时写入、实时更新&#xff0c;写入即可见&#xff0c;与Flink原生集成&#xff0c;支持高吞吐、低延时、有模型的实时数仓开发&#xff0c;满足业务洞察实时性需求。亚秒级交互式分析&#xff1a;支持海量数据亚秒级交…

量子算力引领未来!玻色量子出席第二届CCF量子计算大会

​8月19日至20日&#xff0c;中国计算机学会&#xff08;CCF&#xff09;主办的第二届CCF量子计算大会暨中国量子计算峰会&#xff08;CQCC 2023&#xff09;在中国合肥成功举办。本届大会以“量超融合&#xff0c;大国算力”为主题&#xff0c;设有量子计算软件、硬件、应用生…

机器学习应用 | 使用 MATLAB 进行异常检测(上)

异常检测任务&#xff0c;指的是检测偏离期望行为的事件或模式&#xff0c;可以是简单地检测数值型数据中&#xff0c;是否存在远超出正常取值范围的离群值&#xff0c;也可以是借助相对复杂的机器学习算法识别数据中隐藏的异常模式。 在不同行业中&#xff0c;异常检测的典型…

智能优化算法应用:基于材料生成算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于材料生成算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于材料生成算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.材料生成算法4.实验参数设定5.算法结果6.参考…

Tomcat头上有个叉叉

问题原因&#xff1a; 这是因为它就是个空的tomcat,并没有导入项目运行 解决方案&#xff1a; war模式&#xff1a;发布模式&#xff0c;正式发布时用&#xff0c;将WEB工程以war包的形式上传到服务器 war exploded模式&#xff1a;开发时用&#xff0c;将WEB工程的文件夹直接…

Navicat 连接 GaussDB分布式的快速入门

Navicat Premium&#xff08;16.3.3 Windows版或以上&#xff09;正式支持 GaussDB 分布式数据库。GaussDB分布式模式更适合对系统可用性和数据处理能力要求较高的场景。Navicat 工具不仅提供可视化数据查看和编辑功能&#xff0c;还提供强大的高阶功能&#xff08;如模型、结构…

【2023年网络安全优秀创新成果大赛专刊】医疗机构临床数据合规共享解决方案(美创科技)

“2023年网络安全优秀创新成果大赛”由中央网信办网络安全协调局指导&#xff0c;中国网络安全产业联盟&#xff08;CCIA&#xff09;主办。本次大赛由3场分站赛、3场专题赛、1场大学生创新创业作品赛组成。 在杭州分站赛&#xff0c;美创科技—“医疗机构临床合规共享解决方案…

redis-学习笔记(list)

因为 list 可以头插头删, 尾插尾删, 所以其实更像 C 中的 deque (双端队列) ---- 知道就好, 别乱说, 具体底层编码是啥, 俺也不知道(没注意过) 可以通过组合, 把 list 当作队列 / 栈来用 list 的几种底层编码: ziplist(压缩列表) , linkedlist(链表) , quicklist ziplist 就是将…

docker镜像仓库hub.docker.com无法访问

docker镜像仓库hub.docker.com无法访问 文章主要内容&#xff1a; 介绍dockerhub为什么无法访问解决办法 1 介绍dockerhub为什么无法访问 最近许多群友都询问为什么无法访问Docker镜像仓库&#xff0c;于是我也尝试去访问&#xff0c;结果果然无法访问。 大家的第一反应就是…

如何优雅使用 vue-html2pdf 插件生成pdf报表

使用 vue-html2pdf 插件 业务背景&#xff0c;老板想要一份能征服客户的pdf报表&#xff0c;传统的pdf要手撕&#xff0c;企业中确实有点耗费时间&#xff0c;于是github上面看到开源的这个插件就…废话不多说&#xff0c;直接上教程 1.使用下面命令安装 vue-html2pdf npm i…

PHPstudy小皮的数据库打开失败问题解决

如果你的MYSQL服务启动后停止&#xff0c;多次重启依然无法解决的情况下&#xff0c;大概率是和本地mysql冲突了 但是&#xff0c;千万不要卸载掉本地mysql&#xff0c;只需要在服务中停止本地mysql即可 将此服务关闭&#xff0c;小皮的mysql即可使用

AtCoder ABC周赛2023 11/4 (Sat) D题题解

目录 原题截图&#xff1a; 题目大意&#xff1a; 主要思路&#xff1a; 注意事项&#xff08;很多人再这个地方掉坑&#xff09;&#xff1a; 代码&#xff1a; 原题截图&#xff1a; 题目大意&#xff1a; 给你两个数组&#xff08;A和B)长度都为n&#xff0c;然你求出一…

从零开发短视频电商 在AWS SageMaker已创建的模型列表中进行部署

1.导航到 SageMaker 控制台。 2.在 SageMaker 控制台的左侧导航栏中&#xff0c;选择 “模型” 选项。 3.在模型列表中&#xff0c;找到您要部署的模型。选择该模型。 4.点击 “创建端点” 选项或者点击 “创建端点配置” 选项都可以进行部署。 选择创建端点进去后还是会进行…

Axure原型组件库,数据可视化动态元件库(超详细Axure9可视化素材)

专门针对Axure制作的动态图表元件库&#xff0c;帮助产品经理更高效地制作高保真图表原型&#xff0c;是产品经理必备元件工具。现分享完整的组件库&#xff0c;大家一起学习。 每一个动态组件在原型文件中都配有详细介绍&#xff0c;文末可下载完整原型组件包~ 1. 本组件库的…

Appium获取toast方法封装

一、前置说明 toast消失的很快&#xff0c;并且通过uiautomatorviewer也不能获取到它的定位信息&#xff0c;如下图&#xff1a; 二、操作步骤 toast的class name值为android.widget.Toast&#xff0c;虽然toast消失的很快&#xff0c;但是它终究是在Dom结构中出现过&…

如何在Spring Boot中集成RabbitMQ

如何在Spring Boot中集成RabbitMQ 在现代微服务架构中&#xff0c;消息队列&#xff08;如RabbitMQ&#xff09;扮演了关键的角色&#xff0c;它不仅能够提供高效的消息传递机制&#xff0c;还能解耦服务间的通信。本文将介绍如何在Spring Boot项目中集成RabbitMQ&#xff0c;…

华为配置Smart Link负载分担示例

Smart Link基本概念 Smart Link通过两个端口相互配合工作来实现功能。这样的一对端口组成了一个Smart Link组。为了区别一个Smart Link组中的两个端口&#xff0c;我们将其中的一个叫做主端口&#xff0c;另一个叫做从端口。同时我们利用Flush报文、Smart Link实例和控制VLAN等…