一、PHPGGC简介
PHPGGC(PHP Generic Gadget Chains,PHP通用反序列化利用链)是一款能够自动生成主流框架序列化测试payload的工具。它类似于Java中的ysoserial工具,但专为PHP设计。PHPGGC支持多种框架,包括但不限于Doctrine, Guzzle, Laravel, Magento, Monolog, Phalcon, Slim, SwiftMailer, Symfony, Yii和ZendFramework等。该工具可以帮助安全研究人员和渗透测试人员在遇到PHP反序列化漏洞时,快速生成利用payload,而无需手动寻找和组合各种利用链。
“Gadget” 这个单词在英语中通常指的是一种小型的机械设备或电子装置,它通常设计得非常精巧,用来执行特定的任务或功能。
二、主要特点
- 广泛的payload覆盖:支持多种PHP框架和组件的反序列化漏洞利用。
- 命令行界面:通过简单的命令行操作即可生成payload,方便快捷。
- PHAR文件支持:新增了对PHAR文件格式的支持,可以生成包含反序列化数据的PHAR文件。
- 多格式文件生成:支持生成多格式文件(如JPEG/PHAR),方便在不同场景下使用。
- 编码器支持:新增了多种编码器,如Base64编码、URL编码等,用户可以根据需要对生成的payload进行编码处理。
- 快速销毁标志:新增了
--fast-destruct
标志,确保生成的对象在反序列化后立即销毁,提高利用的可靠性。
三、部署安装
- 访问PHPGGC的GitHub页面:https://github.com/ambionics/phpggc
- git clone下载源代码并解压到Linux环境中(如Kali Linux或CentOS)。
注意:运行phpggc 的条件是php cli的版本>=5.6
四、使用方法
4.1 查看可选项
- 解压后进入安装目录,使用
php
命令运行PHPGGC,例如:php phpggc -l
或者./phpggc -l
列出支持的所有可选项。
通过./phpggc -l 可以列出所有可利用的组件,其中每条都包括组件的名称、版本范围、可利用其进行的操作(文件读写或RCE)、攻击向量(例如__destruct)
4.2 过滤利用链
./phpggc -l laravel
4.3 其他使用方法
- 显示组件相关信息: 使用命令
./phpggc 组件名 -i
可以显示与组件相关的信息,包括生成攻击payload所需要的参数。 - 生成payload: 根据需要生成的payload,使用命令
./phpggc 组件名 函数名 参数
来生成。例如,生成Laravel/RCE1的payload需要提供函数名以及传给该函数的参数,使用命令./phpggc Laravel/RCE1 system id
即可生成payload。 - 文件写入需求: 对于只能满足写文件需求的组件,要利用必须知道网站的绝对路径。
- 再次包装处理: PHPGGC中的
-w
参数还可以对序列化的数据进行再次包装处理。 - 编码格式: 如果需要对生成的payload进行编码,比如base64编码或URL编码,可以直接在命令后面加上相应的参数来完成编码。例如,
./phpggc ThinkPHP/RCE3 system() "cat /flag" --base64
。
总结
PHPGGC是一个用于PHP反序列化漏洞利用的工具,它能够自动生成针对多种PHP框架的利用链payload。通过简单的命令行操作,用户可以快速列出支持的组件、查看详细信息,并生成攻击载荷。PHPGGC支持多种编码格式,适用于安全测试和渗透测试中的反序列化漏洞利用。