千家信息网

PHP文件包含哪些漏洞

发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,这篇文章主要介绍了PHP文件包含哪些漏洞的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇PHP文件包含哪些漏洞文章都会有所收获,下面我们一起来看看吧。漏洞描述文件包含漏洞的
千家信息网最后更新 2025年02月01日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安全错误 数据库的锁怎样保障安全 软件工程考研网络安全考研 正在运行服务器运行错误 数据库包含哪些内容 泉州网络安全好就业吗 log4j2数据库日志 西安一码通大数据库的电话多少 河北现代化软件开发收费 数据库文件的压缩 铁杆三国服务器排名活动 三海致网络技术北京 服务器内存溢出 服务器是否能安装安卓系统 明日之后星戈镇服务器什么时候开 国家网络安全保卫部门 木兰网互联网科技有限公司 刀片式服务器布局 深圳蜜芽互联网科技有限公司 主客观评价网络安全风险 东莞互联网科技公司官网 浙大网络安全考什么 蜗牛星际能安装服务器硬盘吗 数据库系统表示什么意思 陕西软件开发多少钱 射频驱动软件开发工程师 手游火影忍者能转苹果服务器吗 软件开发 算法 专业 锡山区信息化软件开发活动简介 数据库 分区存储 如何查询安卓手机软件开发商 数据库企业管理配置失败
0