真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

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

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

創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比西烏珠穆沁網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式西烏珠穆沁網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋西烏珠穆沁地區(qū)。費(fèi)用合理售后完善,十年實(shí)體公司更值得信賴。

漏洞概要

本次漏洞存在于 ThinkPHP 模板引擎中,在加載模版解析變量時(shí)存在變量覆蓋問(wèn)題,而且程序沒(méi)有對(duì)數(shù)據(jù)進(jìn)行很好的過(guò)濾,最終導(dǎo)致 文件包含漏洞 的產(chǎn)生。漏洞影響版本: 5.0.0<=ThinkPHP5<=5.0.185.1.0<=ThinkPHP<=5.1.10。

漏洞環(huán)境

通過(guò)以下命令獲取測(cè)試環(huán)境代碼:

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

composer.json 文件的 require 字段設(shè)置成如下:

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

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

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)容隨意(沒(méi)有這個(gè)模板文件的話,在渲染時(shí)程序會(huì)報(bào)錯(cuò)),并將圖片馬 1.jpg 放至 public 目錄下(模擬上傳圖片操作)。接著訪問(wèn) http://localhost:8000/index/index/index?cacheFile=demo.php 鏈接,即可觸發(fā) 文件包含漏洞 。ThinkPHP中存在的文件包含漏洞有哪些

漏洞分析

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

漏洞修復(fù)

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

攻擊總結(jié)

最后,再通過(guò)一張攻擊流程圖來(lái)回顧整個(gè)攻擊過(guò)程。ThinkPHP中存在的文件包含漏洞有哪些

以上是“ThinkPHP中存在的文件包含漏洞有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


新聞標(biāo)題:ThinkPHP中存在的文件包含漏洞有哪些
當(dāng)前地址:http://weahome.cn/article/pcgesj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部