062-Web攻防-框架类反序列化项目&分析文章等

知识点:

1、PHP-反序列化-开发框架类项目

2、PHP-反序列化-Payload生成项目

3、PHP-反序列化-Payload生成综合项目

反序列化链项目-PHPGGC&NotSoSecure

框架类的反序列化及对应POP链编写是非常复杂的。比CTF那种原生态反序列化源码难很多很多。

利用场景:当知道目标使用了某个框架及对应版本并且这个框架版本曝过反序列漏洞,那么就可以尝试利用该项目去生成反序列链

NotSoSecure(综合类)

项目地址:https://github.com/NotSoSecure/SerializedPayloadGenerator

为了利用反序列化漏洞,需要设置不同的工具,如 YSoSerial(Java)、YSoSerial.NET、PHPGGC 和它的先决条件。DeserializationHelper 是包含对 YSoSerial(Java)、YSoSerial.Net、PHPGGC 和其他工具的支持的Web界面。使用Web界面,您可以为各种框架生成反序列化payload.

  • Java – YSoSerial
  • NET – YSoSerial.NET
  • PHP – PHPGGC
  • Python - 原生

搭建过程

PHPGGC(单项类)

项目地址:https://github.com/ambionics/phpggc

PHPGGC是一个包含unserialize()有效载荷的库以及一个从命令行或以编程方式生成它们的工具。当在您没有代码的网站上遇到反序列化时,或者只是在尝试构建漏洞时,此工具允许您生成有效负载,而无需执行查找小工具并将它们组合的繁琐步骤。 它可以看作是frohoff的ysoserial的等价物,但是对于PHP。目前该工具支持的小工具链包括:CodeIgniter4、Doctrine、Drupal7、Guzzle、Laravel、Magento、Monolog、Phalcon、Podio、ThinkPHP、Slim、SwiftMailer、Symfony、Wordpress、Yii和ZendFramework等。

反序列化框架利用-ThinkPHP&Yii&Laravel

[安洵杯 2019]iamthinking Thinkphp V6.0.X 反序列化

网址:https://buuoj.cn/challenges#

PHPGGC参考:PHPGGC的使用介绍和安装

  1. 在此网址下面访问www.zip下载源码 打开编译器进行代码审计 可以看到这里使用的是think6.0版本
  2. 在app - controller - index.php 下有 有反序列化函数unserialize 这里不存在 —wakeup魔术方法
  3. 所以假设网上没有相关漏洞POC给你,但是你知道这个版本的thinkphp存在反序列化,你该怎么办?
    • 这里使用phpggc帮助我们生成一个thinkphp反序列化利用链
  4. 使用phpggc -l thinkphp列出关于针对thinkphp框架的可选项
    • ThinkPHP/FW1(FW指的是文件写入,意思就是利用反序列化漏洞进行文件写入)
    • version是(漏洞版本区间)
  5. 这里thinkphp漏洞框架是6.0所以使用rce3生成payload phpggc ThinkPHP/RCE3 system 'cat /flag'
    • **命令语法:**执行程序 框架名字 要执行的函数 具体的命令 什么编码格式
    • 如果对payload进行编码一定要在phpggc里面进行编译否则会出问题
  6. 将构造好的payload进行利用 拿到flag
image-20250603213814219

image-20250603213920055

image-20250603220547967

image-20250603214323970

image-20250603220735476

image-20250603221120103

image-20250603221306739

image-20250603221653124


CTFSHOW - 267

  1. 先进行账号登录 账号admin 密码admin
  2. 在about下面有源码泄露 GET:index.php?r=site%2Fabout&view-source
  3. ///backdoor/shell下code传参进行base64编码 在进行反序列化
  4. 右键查看源码可以看到是yii框架 点击可以看到此版本为2.0
  5. 打开phpggc 生成代码phpggc Yii/RCE2 exec 'cp /fla* tt.txt' --base64防止出现不回显情况
  6. 传入后门拿到flag

image-20250604084130638

image-20250604084321289

image-20250604085007067

image-20250604085143857

image-20250604085218080

image-20250604090341026

image-20250604100219060

image-20250604100229165

CTFSHOW - 271

  1. 从代码可知 这里使用的是Laravel 并且使用post传参

  2. 这里没有进行base64编码所以我们直接用url编码

  3. 成功查看当前用户是root 再生成查看cat /fla*拿到flag

image-20250604100600774 image-20250604100804210

image-20250604100907185

image-20250604101019341

image-20250604101300961

image-20250604101245171