千家信息网

PHP文件包含哪些漏洞

发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇文章主要介绍了PHP文件包含哪些漏洞的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇PHP文件包含哪些漏洞文章都会有所收获,下面我们一起来看看吧。漏洞描述文件包含漏洞的
千家信息网最后更新 2025年11月07日PHP文件包含哪些漏洞

这篇文章主要介绍了PHP文件包含哪些漏洞的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇PHP文件包含哪些漏洞文章都会有所收获,下面我们一起来看看吧。

漏洞描述

文件包含漏洞的产生原因是在通过PHP的函数引入文件时,由于传入的文件名没有经过合理的校验,从而操作了预想之外的文件,就可能导致意外的文件泄露甚至恶意的代码注入。
PHP中引发文件包含漏洞的通常是以下四个函数:
1、include()当使用该函数包含文件时,只有代码执行到include()函数时才将文件包含进来,发生错误时只给出一个警告,继续向下执行。
2、include_once()功能和include()相同,区别在于当重复调用同一文件时,程序只调用一次。
3、require()只要程序一执行就会立即调用文件,发生错误的时候会输出错误信息,并且终止脚本的运行
4、require_once()它的功能与require()相同,区别在于当重复调用同一文件时,程序只调用一次。

漏洞危害

攻击者可利用该漏洞进行任意文件包含读取,获取服务器敏感信息。

漏洞影响版本

此漏洞的存在与版本无关

漏洞分析

在给PHP发送POST数据包时,如果数据包里包含文件区块,无论你访问的代码中有没有处理文件上传的逻辑,PHP都会将这个文件保存成一个临时文件(通常是/tmp/php[6个随机字符]),文件名可以在$ _FILES变量中找到。这个临时文件,在请求结束后就会被删除。
同时,因为phpinfo页面会将当前请求上下文中所有变量都打印出来,所以我们如果向phpinfo页面发送包含文件区块的数据包,则即可在返回包里找到$_FILES变量的内容,自然也包含临时文件名。
在文件包含漏洞找不到可利用的文件时,即可利用这个方法,找到临时文件名,然后包含之。
但文件包含漏洞和phpinfo页面通常是两个页面,理论上我们需要先发送数据包给phpinfo页面,然后从返回页面中匹配出临时文件名,再将这个文件名发送给文件包含漏洞页面,进行getshell。在第一个请求结束时,临时文件就被删除了,第二个请求自然也就无法进行包含。
这个时候就需要用到条件竞争,具体流程如下:
1)发送包含了webshell的上传数据包给phpinfo,这个数据包的header,get等位置一定要塞满垃圾数据。
2)phpinfo这时会将所有数据都打印出来,其中的垃圾数据会将phpinfo撑得非常大。
3)PHP默认缓冲区大小是4096,即PHP每次返回4096个字节给socket连接。
4)所以,我们直接操作原生socket,每次读取4096个字节,只要读取到的字符里包含临时文件名,就立即发送第二个数据包。
5)此时,第一个数据包的socket连接其实还没有结束,但是PHP还在继续每次输出4096个字节,所以临时文件还未被删除。
6)我们可以利用这个时间差,成功包含临时文件,最后getshell。

环境搭建

  1. 启动docker:
    service start docker

  2. 在docker-compose.yml文件所在的路径执行:
    docker-compose build
    docker-compose up -d

漏洞复现

  1. 访问http://your-ip:8080/phpinfo.php,可以看到页面出现phpinfo页面
    2. 再访问http://your-ip:8080/lfi.php?file=/etc/passwd,可以看到该页面是存在文件包含漏洞的。
    POC验证:
    使用方法:python3 PHP文件包含漏洞_poc.py --target-url http://192.168.60.244:8080

修复建议

设置白名单。

关于"PHP文件包含哪些漏洞"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"PHP文件包含哪些漏洞"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。

文件 漏洞 数据 页面 文件名 函数 代码 内容 变量 字节 知识 程序 相同 功能 区块 垃圾 字符 方法 时候 版本 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 负责网络安全运维工作的运维单位 高斯数据库的数据字典 金仓数据库主要特点 什么软件开发界面最漂亮 如何防止软件开发的坑 二道区什么是网络安全服务保障 大学生网络安全教学设计 福建生态软件开发一体化 服务器不支持版本的操作系统 怎么清空数据库表里面的数据 八年软件开发 已经不多 天津软件开发岗待遇 多大数据需要用数据库 喜欢计算机网络技术的理由 瑞星杀毒服务器版 我的世界幻想乡服务器实况 数据库查询引用时间 福建通信软件开发设施服务标准 u盘怎么进入网络安全模式 苹果怎么删除云端数据库 交易网站服务器 高中网络安全知识手抄报图片 苏州创新管理软件开发 网络安全的攻防论文 福建生态软件开发一体化 诊所网络安全管理制度 服务器批处理文件定时运行 机关 网络安全 心得 bilibili服务器维护 浙江机械软件开发售后保障
0