反序列化工具之PHPGGC


一、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” 这个单词在英语中通常指的是一种小型的机械设备或电子装置,它通常设计得非常精巧,用来执行特定的任务或功能。

二、主要特点

  1. 广泛的payload覆盖:支持多种PHP框架和组件的反序列化漏洞利用。
  2. 命令行界面:通过简单的命令行操作即可生成payload,方便快捷。
  3. PHAR文件支持:新增了对PHAR文件格式的支持,可以生成包含反序列化数据的PHAR文件。
  4. 多格式文件生成:支持生成多格式文件(如JPEG/PHAR),方便在不同场景下使用。
  5. 编码器支持:新增了多种编码器,如Base64编码、URL编码等,用户可以根据需要对生成的payload进行编码处理。
  6. 快速销毁标志:新增了--fast-destruct标志,确保生成的对象在反序列化后立即销毁,提高利用的可靠性。

三、部署安装

注意:运行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 其他使用方法

  1. 显示组件相关信息: 使用命令 ./phpggc 组件名 -i 可以显示与组件相关的信息,包括生成攻击payload所需要的参数。
  2. 生成payload: 根据需要生成的payload,使用命令 ./phpggc 组件名 函数名 参数 来生成。例如,生成Laravel/RCE1的payload需要提供函数名以及传给该函数的参数,使用命令 ./phpggc Laravel/RCE1 system id 即可生成payload。
  3. 文件写入需求: 对于只能满足写文件需求的组件,要利用必须知道网站的绝对路径。
  4. 再次包装处理: PHPGGC中的 -w 参数还可以对序列化的数据进行再次包装处理。
  5. 编码格式: 如果需要对生成的payload进行编码,比如base64编码或URL编码,可以直接在命令后面加上相应的参数来完成编码。例如,./phpggc ThinkPHP/RCE3 system() "cat /flag" --base64

总结

PHPGGC是一个用于PHP反序列化漏洞利用的工具,它能够自动生成针对多种PHP框架的利用链payload。通过简单的命令行操作,用户可以快速列出支持的组件、查看详细信息,并生成攻击载荷。PHPGGC支持多种编码格式,适用于安全测试和渗透测试中的反序列化漏洞利用。


文章作者: 司晓凯
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 司晓凯 !
  目录