ThinkPHP 6.0.X 反序列化漏洞利用指南(PHPGGC 工具版)

一、前置准备

1. 环境要求

  • 操作系统:Kali Linux(推荐)或任何支持 PHP >= 5.6 的环境
  • 目标:CTF 题目或测试环境(ThinkPHP 6.0.X 框架)
  • 工具:PHPGGC(PHP Generic Gadget Chains)

2. 工具安装

bash 复制代码
# 方式一:Git 克隆安装
git clone https://github.com/ambionics/phpggc.git
cd phpggc/

# 方式二:Kali 直接安装
apt install phpggc

工具地址:https://github.com/ambionics/phpggc


二、漏洞利用流程

步骤 1:确认目标框架及版本

通过代码审计识别目标站点特征:

  1. 目录特征 :检查是否存在 /think 文件或 vendor/topthink 目录,确认使用 ThinkPHP 框架
  2. 版本确认:通过源码审计或报错信息确认版本为 ThinkPHP 6.0.X

步骤 2:列出可用利用链

执行命令查看 ThinkPHP 相关利用链:

bash 复制代码
./phpggc -l thinkphp

执行结果将显示所有可用的 Gadget Chains,包括名称、版本范围、利用类型和触发向量:




关键信息解读

  • ThinkPHP/RCE3 :适用于 -6.0.1+,RCE 函数调用,通过 __destruct() 触发
  • ThinkPHP/RCE4 :适用于 -6.0.1+,RCE 函数调用,通过 __destruct() 触发(推荐用于 6.0.X)

步骤 3:生成自定义 Payload

需求 :触发 system('cat /flag') 并自动进行 URL 编码

执行命令:

bash 复制代码
./phpggc ThinkPHP/RCE4 system 'cat /flag' --url

参数说明

  • ThinkPHP/RCE4:选择利用链
  • system:要执行的函数
  • 'cat /flag':函数参数(命令)
  • --url:自动进行 URL 编码(避免特殊字符被过滤)

注意 :务必使用 --url 参数让程序自动编码,手动编码容易出现字符转义错误。


步骤 4:注入 Payload 到目标入口

  1. 定位入口 :审计代码确认反序列化触发点(通常是 unserialize($_GET['param']) 或类似代码)

  2. 确认参数 :找到 URL 中接收反序列化数据的参数名(如 ?c=?payload= 等)


  1. 注入利用:将生成的 URL 编码后的 Payload 拼接至目标参数后访问

示例

复制代码
http://target.com/public/?payload=O%3A17%3A%22think%5Cmodel%5CPivot%22%3A9%3A%7Bs%3A19%3A%22...

三、技术原理与对比

1. 核心利用链逻辑

ThinkPHP 6.0.X 反序列化链(RCE4)的核心触发路径:

复制代码
对象销毁触发 __destruct()
    ↓
调用回调函数(如 array_walk_recursive 或 call_user_func)
    ↓
执行系统命令(system('cat /flag'))

2. 工具对比

方式 优点 缺点
PHPGGC 生成 灵活可控,适配性强,支持自定义函数和参数 需要本地安装工具
网上现成 POC 快速直接使用 灵活性低,难以根据实际环境调整

3. 通用渗透流程

阶段 操作要点
找入口 定位代码中的 unserialize() 调用点,确认可控输入
判框架 通过目录结构、特征文件、报错信息识别框架及版本
打链条 使用 PHPGGC 生成对应版本的 Payload,自动编码后注入

四、注意事项

  1. 版本匹配:确保选择的利用链版本范围覆盖目标框架版本(RCE3/RCE4 均适用于 6.0.1+)
  2. 编码处理 :使用 --url 参数自动处理 URL 编码,避免手动编码错误
  3. 环境兼容:PHPGGC 主要设计用于 Linux 环境,Windows 用户建议安装 WSL 或虚拟机
  4. 安全测试:本方法仅用于授权的 CTF 竞赛或安全测试环境,请勿用于非法用途
相关推荐
闲云野鹤在人间1 小时前
docker 入门 | 第5章 网络详解
网络·docker·架构·华为云·php
域智盾系统来啦3 小时前
电脑远程监控软件具备哪些核心能力?电脑远程监控软件企业落地核心知识点汇总
安全·远程工作·电脑远程监控软件
hz567893 小时前
手术室视频示教系统解决方案:让临床教学突破空间限制
安全·音视频·实时音视频·信息与通信·智能硬件
PHP实战开发录4 小时前
MySQL连接数为什么会打满
系统架构·php·开发
VXbishe4 小时前
【课程设计】基于SpringBoot的乡村政务服务系统的设计与实现-计算机毕设77011
javascript·vue.js·spring boot·python·php·课程设计·政务
安全指北针4 小时前
数据安全产品 POC 验证怎么做?一套可落地的评估方法
大数据·安全
Linux运维技术栈4 小时前
如何避免绕过CDN的攻击?基于 CDN 回源请求头鉴权的防御实操与安全性剖析
nginx·安全·cdn
aixingpan5 小时前
aixingpan.cn API开发文档:api_docs_bichart_natalvssolar_return2接口指南
前端·php
曦夜日长6 小时前
Linux系统篇,进程概念(四):内核链表的深度理解、进程优先级的底层理解
linux·运维·服务器·php
hasty6 小时前
一次同秒竞态,如何把污染制品送进 npm 与 TestPyPI
安全·安全威胁分析·代码复审