概述
PHPGGC,全称为“PHP Guzzle Getters and Setters”,是一个库,包含了预构建的Guzzle HTTP客户端请求对象,这些对象可以被用来利用PHP应用中的反射或魔术方法漏洞。它的核心价值在于简化了对PHP应用程序潜在漏洞的探测过程,特别是对于那些可能存在的命令注入漏洞。
PHPGGC是一个unserialize()有效负载库,沿着一个从命令行或编程方式生成它们的工具。当在您没有代码的网站上遇到未序列化时,或者只是试图构建漏洞时,此工具允许您生成有效负载,而无需通过查找小工具并组合它们的繁琐步骤。它可以被看作是frohoff的ysoserial的等价物,但用于PHP。
目前,该工具支持小工具链,如:CodeIgniter 4,Doctrine,Drupal 7,Guzzle,Laravel,Magento,Monolog,Phalcon,Podio,Slim,SwiftMailer,Symfony,Wordpress,Yii和ZendFramework。
技术分析
该项目基于PHP编写,并且利用了Guzzle,这是一个流行的HTTP客户端库,能够处理HTTP请求。PHPGGC通过创建特殊的GETters和SETters,它们在发送HTTP请求时可以被恶意构造,从而触发不安全的代码执行。这种构造方式使得安全研究人员能够在各种不同的场景中快速验证是否存在代码注入风险,而无需手动编写复杂的payload。
PHPGGC还支持命令行界面(CLI),允许用户轻松地生成或搜索所需的GGC有效载荷。此外,其代码结构清晰,易于扩展,意味着你可以根据需要添加新的GGC类型或者自定义功能。
应用场景
- 渗透测试:在进行安全审计时,可以直接使用PHPGGC生成的payload尝试触发潜在的命令注入漏洞。
- 教育与学习:理解如何构建这类攻击载荷有助于提高开发者的安全意识。
- 自动化安全工具:集成到自动化安全扫描工具中,可以大规模检测目标系统的安全性。
命令行使用
运行PHPGGC需要 PHP >= 5.6。
下载项目
运行./phpggc -l获取gadget链列表。
过滤器小工具链 `ThinkPHP。
每个小工具链都有。
- Name:框架/库的名称
- Version:小工具所使用的框架/库的版本
- Type:利用类型:RCE,文件写入,文件读取,包含
- Vector:反序列化后触发链的向量(__destruct(),__toString(),offsetGet(),...)
- Informations:关于链条的其他信息
使用-i获取有关链的详细信息
运行./phpggc <gadget-chain> [parameters]以获取有效负载。
Wrapper
例如,如果易受攻击的代码看起来像这样:tinywan_wrapper.php 脚本
执行结果
你可以使用__toString()链,像这样包装它:tinywan_wrapper2.php 脚本