PHP-FPM未授权访问漏洞

一、环境

Vulhub - Docker-Compose file for vulnerability environment

docker直接搭建

二、研究步骤

我们nginx本来是监听的本地127.0.0.1:端口,但当我们监听端口写成0.0.0.0:端口,此时就有可能出现未授权访问的问题

2.1 拉取环境

2.2分析配置源码

docker中是127.0.0.1:9000但是映射给我们本地就是0.0.0.0:9000

我们先了解一下fastcgi和php以及php-fpm之间的交互关系

比如我们给传入一个数据?a=1&b=2,nginx会发送给index.php之后发送fastcgi,把其打包成一个个record,其中record主要是1和4,一个连接一个格式化,之后php-fpm将其解析为我们看得懂的key和valu,之后发送给php,php将其交给index.php后面拼接着我们的请求,index.php执行成功后返回给php-fpm,php-fpm再返回给fastcgi,fastcgi再返回给nginx,nginx返回给我们,这个是底层的流程

2.3nginx解析漏洞

看看这个靶场什么意思?

安全后缀为空,很明显这个不应该为空,这个会将任何后缀解析为php

搭建好访问之后就是一个文件提交

看一看docker镜像中自带图片的16进制,很明显最后面镶嵌了一个php的一句话木马

图片后面随便加个php就出现了

其实这个漏洞很简单,但是底层的代码是因为cgi_fix被开启所以有漏洞,而具体来说意思就是当程序发现后面的php不存在的时候,就会往上级走,发现nginx.png存在就会以php的权限去执行,这个就是解析漏洞的原理

php的cgi.fix_pathinfo解析_cgi.fix pathinfo()-CSDN博客

如何修复:1.关闭安全后缀,2.关闭cgi_fix

相关推荐
软件黑马王子5 小时前
4.单例模式问题2:重复挂载
开发语言·单例模式·c#
quantdash_cc5 小时前
批量请求和循环请求有什么区别?从 API 请求次数看量化数据获取的工程设计
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
qq_406981035 小时前
大白话rust系列01注释
开发语言·rust
橘子编程5 小时前
Java邮件发送全攻略:从入门到实战
java·开发语言·spring boot·spring·spring cloud·maven
Tizzy JJ5 小时前
Python + pytest 接口自动化测试框架实战:从零搭建企业级项目骨架
开发语言·python·pytest
海兰5 小时前
【 Python 量化交易】第8章:量化工具箱
开发语言·python
牛油果子哥q5 小时前
C++大型项目工程精讲:CMake完整实战、静态库&动态库、模块化拆分、单元测试、gdb调试、性能工具、工程踩坑全解
开发语言·c++·单元测试
Dream Cosmos5 小时前
C++ 多态上篇:从 virtual 到抽象类,彻底理解多态的使用
开发语言·c++
TheBestRucy5 小时前
Python九阳神功之柒:数据分析三剑客·执剑问道
开发语言·python·数据分析
qq_339191145 小时前
go cpu占比高排查,cpu100%排查,go pprof cpu命令
开发语言·后端·golang