亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

ThinkPHP中存在的文件包含漏洞有哪些

發布時間:2021-11-12 11:18:11 來源:億速云 閱讀:190 作者:小新 欄目:網絡管理

這篇文章主要介紹ThinkPHP中存在的文件包含漏洞有哪些,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

漏洞概要

本次漏洞存在于 ThinkPHP 模板引擎中,在加載模版解析變量時存在變量覆蓋問題,而且程序沒有對數據進行很好的過濾,最終導致 文件包含漏洞 的產生。漏洞影響版本: 5.0.0<=ThinkPHP5<=5.0.185.1.0<=ThinkPHP<=5.1.10

漏洞環境

通過以下命令獲取測試環境代碼:

composer create-project --prefer-dist topthink/think=5.0.18 tpdemo

composer.json 文件的 require 字段設置成如下:

"require": {
    "php": ">=5.6.0",
    "topthink/framework": "5.0.18"
},

然后執行 composer update ,并將 application/index/controller/Index.php 文件代碼設置如下:

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

創建 application/index/view/index/index.html 文件,內容隨意(沒有這個模板文件的話,在渲染時程序會報錯),并將圖片馬 1.jpg 放至 public 目錄下(模擬上傳圖片操作)。接著訪問 http://localhost:8000/index/index/index?cacheFile=demo.php 鏈接,即可觸發 文件包含漏洞ThinkPHP中存在的文件包含漏洞有哪些

漏洞分析

首先在官方發布的 5.0.19 版本更新說明中,發現其中提到該版本包含了一個安全更新。ThinkPHP中存在的文件包含漏洞有哪些我們可以查閱其 commit 記錄,發現其改進了模板引擎,其中存在危險函數 extract ,有可能引發變量覆蓋漏洞。接下來,我們直接跟進代碼一探究竟。ThinkPHP中存在的文件包含漏洞有哪些首先,用戶可控數據未經過濾,直接通過 Controller 類的 assign 方法進行模板變量賦值,并將可控數據存在 think\View 類的 data 屬性中。ThinkPHP中存在的文件包含漏洞有哪些接著,程序開始調用 fetch 方法加載模板輸出。這里如果我們沒有指定模板名稱,其會使用默認的文件作為模板,模板路徑類似 當前模塊/默認視圖目錄/當前控制器(小寫)/當前操作(小寫).html ,如果默認路徑模板不存在,程序就會報錯。ThinkPHP中存在的文件包含漏洞有哪些我們跟進到 Template 類的 fetch 方法,可以發現可控變量 $vars 賦值給 $this->data 并最終傳入 File 類的 read 方法。而 read 方法中在使用了 extract 函數后,直接包含了 $cacheFile 變量。這里就是漏洞發生的關鍵原因(可以通過 extract 函數,直接覆蓋 $cacheFile 變量,因為 extract 函數中的參數 $vars 可以由用戶控制)。ThinkPHP中存在的文件包含漏洞有哪些

漏洞修復

官方的修復方法是:先將 $cacheFile 變量存儲在 $this->cacheFile 中,在使用 extract 函數后,最終 include 的變量是 $this->cacheFile ,這樣也就避免了 include 被覆蓋后的變量值。ThinkPHP中存在的文件包含漏洞有哪些

攻擊總結

最后,再通過一張攻擊流程圖來回顧整個攻擊過程。ThinkPHP中存在的文件包含漏洞有哪些

以上是“ThinkPHP中存在的文件包含漏洞有哪些”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

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

AI

石首市| 营山县| 廉江市| 靖宇县| 苗栗市| 哈巴河县| 安泽县| 乐至县| 增城市| 周口市| 海城市| 元朗区| 小金县| 璧山县| 九江县| 将乐县| 三河市| 石门县| 印江| 固镇县| 葵青区| 五原县| 德保县| 金溪县| 江达县| 甘谷县| 天台县| 珠海市| 东乡族自治县| 新源县| 蒙城县| 亚东县| 本溪| 绥中县| 潜山县| 安化县| 天门市| 松潘县| 夏邑县| 固镇县| 库尔勒市|