FastCGI协议
题目提示
先来认识一下FastCGI协议
fastcgi协议是服务器中间件和语言后端进行数据交换的协议
这里还涉及到PHP-FPM(fastcgi进程管理器) 这个东西是什么呢 FPM其实是一个fastcgi协议解析器。
nginx等服务器中间件用fastcgi规则把用户请求打包好发给FPM FPM按照fastcgi的协议将TCP流解析成真正的数据。
PHP-FPM默认监听9000端口,如果这个端口暴露在公网,则我们可以自己构造fastcgi协议,和fpm进行通信。这是漏洞形成的原理
知道了这些 我们就可以用gopher协议 后接TCP数据流为我们构造的恶意FastCGI协议报文,即可执行恶意命令
根据FastCGI攻击原理分析,我们需要满足三个条件:
PHP版本要高于5.3.3,才能动态修改PHP.INI配置文件(题目环境已满足)
知道题目环境中的一个PHP文件的绝对路径
PHP-FPM监听在本机9000端口(题目环境已满足)
这里的php文件的绝对路径我用的是var/www/html/index.php
/var/www/html是Linux操作系统中用于存储Web服务器文件的默认目录
index.php是一个用PHP语言开发的网站的首页,index是普遍意义上的“首页”,也就是你输入一个域名后会打开一个页面,基本上就是index.xxxx(基本上首页都不会把index.xxxx显示在url里,但也不绝对)
这里就不一一介绍了 题目附件写的非常详细 因为php方面的基础薄弱 花了好长时间也没搞特别懂
整道题的思路就是利用gopher协议以及fastcgi协议造成恶意代码执行 达到我们找到flag的目的
对fastcgi协议的利用有两种方式 第一种是利用exp脚本和监听端口 第二种是利用gopherus这个工具写出payload进行url编码
我这里提供的是第二种方法 提供一个php文件的绝对路径 在看他的根目录 找到flag的文件 在进行读取
但是我的不知道错在哪里 蚁剑也连不上 url编码也不管用 等明天再具体找错在哪里