CTFHub Web进阶-PHP:Bypass_disable_function通关4之PHP-FPM - 实践

目录

一、PHP-FPM绕过

1、 PHP-FPM 绕过核心原理

2、使用蚁剑进行PHP-FPM绕过

二、渗透实战

1、开启题目

2、打开靶场

3、源码分析

4、蚁剑直接连接

5、虚拟终端

6、蚁剑程序-disable function

(1)disable function插件

(2)连接新木马

(3)新木马-文件系统

(4)新木马-虚拟终端-获取flag


本文详细讲解CTFHub的Web进阶中disable-functions的PHP-FPM关卡的渗透全流程。通过分析PHP-FPM绕过原理(利用FastCGI协议直接通信),展示如何使用蚁剑工具连接Webshell并加载Bypass插件,最终成功执行系统命令获取flag。实战部分包括靶场环境搭建、源码分析、蚁剑连接、虚拟终端操作等全流程,重点演示了利用生成代理脚本绕过disable_function限制的技术方案。

一、PHP-FPM绕过

1、PHP-FPM 绕过核心原理

PHP-FPM绕过手法的核心在于与PHP-FPM服务直接通信,从而绕过PHP层面的限制。其基本原理能够概括为以下几步:

  • 利用条件:首先,你得有一个Webshell,并且服务器环境是Nginx+PHP-FPMApache+PHP-FPM。PHP-FPM通常会监听一个端口(如9000)或一个Unix Socket文件(如/var/run/php/php7.2-fpm.sock)。

  • 通信协议:PHP-FPM采用FastCGI协议进行通信。凭借向PHP-FPM监听的目标发送精心构造的FastCGI协议数据包,我们许可直接与其交互。

  • 执行任意PHP代码:在FastCGI协议中,可以通过设置某些参数(如PHP_VALUEPHP_ADMIN_VALUE)来动态修改PHP配置。攻击者可以借此开启auto_prepend_file等选项,或者直接传递PHP代码让其执行,从而突破disable_functions的限制

2、使用蚁剑进行PHP-FPM绕过

蚁剑(AntSword)是一款强大的Webshell管理工具,它集成了多种Bypass disable_function的插件,具体步骤如下所示:

  • 连接Webshell:使用蚁剑成功连接到你的Webshell。

  • 选择Bypass插件

    • 在蚁剑中,找到并加载"Bypass Disable Functions"相关插件。根据你的环境,选择Fastcgi/PHP-FPM 模式。

    • 插件通常会要求你填写PHP-FPM的通信地址:就是。这可以

      • TCP地址:例如 127.0.0.1:9000 (如果PHP-FPM监听端口)

      • Unix Socket地址:例如 unix:///var/run/php/php7.2-fpm.sock (你需要知道socket文件的准确路径,可以通过查看PHP配置文件或phpinfo()信息获取)

  • 生成代理脚本:配置好地址后,插件会在服务器上生成一个特殊的代理脚本(例如.antproxy.php)。 这个脚本的作用是将你的请求通过FastCGI协议转发给PHP-FPM服务

  • 切换连接:使用蚁剑重新连接这个新生成的代理脚本的URL。

  • 执行命令通过:连接成功后,你就能够通过这个代理在蚁剑的虚拟终端中正常执行系统命令了,例如 tac /flag

二、PHP-FPM关卡渗透实战

1、开启题目

打开靶场关卡,页面提示“正常情况下, PHP-FPM是不会对外开放的。在有webshell之后,这就变得不一样了。学习通过攻击PHP-FPM达到Bypass的目的”,如下所示。

2、打开靶场

http://challenge-20f79b9735a3d332.sandbox.ctfhub.com:10800/

3、源码分析

这段CTF题目源码通过eval($_REQUEST['ant'])提供远程代码执行入口,但关键系统函数已被禁用。题目要求攻击PHP-FPMFastCGI进程管理器)来绕过限制。攻击原理是利用PHP-FPM的未授权访问风险,通过构造特殊的FastCGI协议数据包,直接与PHP-FPM9000端口通信。当服务器采用FPM/FastCGI模式运行PHP时,攻击者可以伪造请求修改PHP配置,将任意文件扩展名解析为PHP,或直接执行PHP代码。此种技巧不依赖系统命令函数,而是通过网络协议层面的攻击实现代码执行,有效突破disable_function的限制。

http://challenge-20f79b9735a3d332.sandbox.ctfhub.com:10800/

CTFHub Bypass disable_function—— 攻击PHP-FPM

本环境来源于AntSword-Labs

<!DOCTYPE html>
<html>
<head>
<title>CTFHub Bypass disable_function —— 攻击PHP-FPM</title>
</head>
<body>
<h1>CTFHub Bypass disable_function —— 攻击PHP-FPM</h1>
<p>本环境来源于<a href="https://github.com/AntSwordProject/AntSword-Labs">AntSword-Labs</a></p>
</body>
</html>
<?php
@eval($_REQUEST['ant']);
show_source(__FILE__);
?>

很明显php代码是一个高危的Webshell后门,允许攻击者通过ant参数远程执行任意PHP代码,完全控制Web服务器,可进行文件操作、命令执行、数据库访问等恶意行为,严重威胁服务器安全。

  • @操作符:抑制错误显示,增强隐蔽性

  • $_REQUEST['ant']:接收GET或POST参数中的ant参数

  • eval():将字符串作为PHP代码执行,构成任意代码执行安全风险

4、蚁剑直接连接

http://challenge-20f79b9735a3d332.sandbox.ctfhub.com:10800/ 密码ant

5、虚拟终端

通过“选中木马的会话-右键-虚拟终端”进入在木马的虚拟终端窗口,如下所示。

如下所示,命令执行失败。

6、蚁剑器具-disable function

(1)disable function插件

大家通过蚁剑工具的disable function插件绕过服务器的限制,具体操作步骤如下所示。

插件选择Fastcgi/PHP-FPM模式,具体如下所示。

点击后进入如下界面。

FPM/FCGI 地址 localhost:9000,通讯地址我们选择本地的 (相当于他服务器的本地),然后点击开始如下所示。

此时进入根目录,目录中多了.antproxy.php文件,如下所示。

(2)连接新木马

http://challenge-7e5a3b55b4ffb061.sandbox.ctfhub.com:10800/.antproxy.php

密码ant

添加后如下所示。

(3)新木马-文件系统

通过“选中新木马的会话-右键-文件系统”进入在新木马的文件系统窗口,如下所示。

查看根目录,发现/readflag和/flag文件,如下所示。

查看/readflag文件,具体如下所示。

(4)新木马-虚拟终端-获取flag

在新弹木马的虚拟终端窗口,首先大家尝试执行ls命令,如下所示成功返回当前目录结构。

在新木马的虚拟终端中输入ls /、cat /readflag和tac /flag命令成功获取到flag,如下所示。

posted @ 2026-01-29 09:06  gccbuaa  阅读(144)  评论(0)    收藏  举报