国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

php代碼審計(jì)之ThinkPHP5的文件包含漏洞詳解

瀏覽:222日期:2022-06-14 08:48:32
漏洞影響范圍

加載模版解析變量時(shí)存在變量覆蓋問題,導(dǎo)致文件包含漏洞的產(chǎn)生 漏洞影響版本:5.0.0<=ThinkPHP5<=5.0.18 、5.1.0<=ThinkPHP<=5.1.10

我復(fù)現(xiàn)用的是5.1.15

(PS:這里附上thinkphp5.1 手冊(cè)本站下載地址:https://www.jb51.net/books/729512.html)

環(huán)境配置要將將 application/index/controller/Index.php 文件代碼設(shè)置如下:

<?phpnamespace app\index\controller;use think\Controller;class Index extends Controller{? ? public function index() ? {? ? ? ? $this->assign(request()->get()); ? ? ? return $this->fetch(); // 當(dāng)前模塊/默認(rèn)視圖目錄/當(dāng)前控制器(小寫)/當(dāng)前操作(小寫).html ? }}

創(chuàng)建 application/index/view/index/index.html 文件,內(nèi)容隨意(沒有這個(gè)模板文件的話,在渲染時(shí)程序會(huì)報(bào)錯(cuò))

漏洞分析

先跟進(jìn)assign方法

再跟進(jìn)

array_merge() 函數(shù)用于把一個(gè)或多個(gè)數(shù)組合并為一個(gè)數(shù)組。

只是賦值操作,跟進(jìn)下面的fetch

繼續(xù)跟進(jìn)

用于$this引用當(dāng)前對(duì)象。用于self引用當(dāng)前類。換句話說, $this->member用于非靜態(tài)成員,self::$member用于靜態(tài)成員。

范圍解析運(yùn)算符(也稱為 Paamayim Nekudotayim)或更簡(jiǎn)單的術(shù)語是雙冒號(hào),是一個(gè)允許訪問類的 靜態(tài)、 常量和重寫屬性或方法的標(biāo)記。

fetch 前面的方法 主要是加載模板輸出。這里的method值可以追溯到view\driver\Think.php 視圖引擎

跟入84行fetch進(jìn)入think\templae.php

第200行在讀取的時(shí)候采用了一個(gè)read的方法。繼續(xù)跟進(jìn)read,進(jìn)入template\driver\File.php

危險(xiǎn)危險(xiǎn)危險(xiǎn)!!這里調(diào)用了一個(gè)extract函數(shù),可控變量 $vars 賦值給 $this->data 并最終傳入 File 類的 read 方法。而 read 方法中在使用了 extract 函數(shù)后,直接包含了 $cacheFile 變量。這里就是漏洞發(fā)生的關(guān)鍵原因(可以通過 extract 函數(shù),直接覆蓋 $cacheFile 變量,因?yàn)?extract 函數(shù)中的參數(shù) $vars 可以由用戶控制)。

這里extract 該函數(shù)使用數(shù)組鍵名作為變量名, EXTR_OVERWRITE 變量存在則覆蓋

EXTRACT() 函數(shù)用于返回日期/時(shí)間的單獨(dú)部分,比如年、月、日、小時(shí)、分鐘等等。

POChttp://localhost:8000/index/index/index?cacheFile=shell.jpg

圖片馬 shell.jpg 放至 public 目錄下(模擬上傳圖片操作)。

標(biāo)簽: PHP
相關(guān)文章:
主站蜘蛛池模板: 宜丰县| 和政县| 濮阳市| 聊城市| 荔波县| 奉化市| 德清县| SHOW| 泽州县| 武胜县| 岑溪市| 华容县| 通渭县| 柘城县| 睢宁县| 中西区| 罗田县| 孝义市| 垦利县| 巫山县| 土默特右旗| 泗水县| 岐山县| 运城市| 和龙市| 新安县| 清新县| 淮阳县| 武清区| 靖边县| 河东区| 乐东| 榕江县| 沈阳市| 平远县| 镇坪县| 景宁| 乌审旗| 吉隆县| 岳普湖县| 永清县|