thinkphp 5 x 3 x 檔案包含漏洞分析

2022-09-15 03:57:12 字數 1565 閱讀 7588

漏洞描述:

thinkphp在載入模版解析變數時存在變數覆蓋的問題,且沒有對 $cachefile 進行相應的消毒處理,導致模板檔案的路徑可以被覆蓋,從而導致任意檔案包含漏洞的發生。

主要還是變數覆蓋的問題。

漏洞範圍:

漏洞影響版本: 5.0.0<=thinkphp5<=5.0.18 、5.1.0<=thinkphp<=5.1.10

本地復現環境:

tp5.0.15   php version :7.0.12

<?php 

use\think\controller;

class index extends

controller

}

assign方法 進行了模板變數賦值  ,把可控資料存在\think\view 

主要問題出現在fetch 這裡 

細跟一下fetch 

fetch 前面的方法 主要是載入模板輸出 

這裡的 $method 的值為fetch  可以在view\driver\think.php 檢視引擎

這裡要跟到think\templae.php

在讀取的時候採用了乙個read的方法。

然後我們去跟read , 

關鍵的部分:

這裡extract 該函式使用陣列鍵名作為變數名, extr_overwrite 變數存在則覆蓋

原本cachefile的值:

e:\phpstudy\phptutorial\www\tp5.0.15\runtime\temp\cb64592f1fa49f590673c9beddff4365.php

被覆蓋成 echod.txt

* @param array $vars 模板輸出變數

我們輸入的cachefile=echod.txt

通過extract 該函式使 陣列鍵名作為變數名

變成$cachefile=echod.txt

最後的inclde $cachefile; 觸發 任意檔案包含漏洞。

這個洞在thinkcmf 後台的乙個upload處可以復現。

如果,allow_url_include 開啟,可利用此處 執行任意**

ThinkPHP5 x命令執行漏洞分析

在routecheck呼叫 request path 獲取相容模式s傳入的模組 控制器 方法 在routecheck中會讀取route.php中的路由並進行匹配傳入的路由,不成功會呼叫route parseurl處理 在parseurl函式1226行呼叫parseurlpath函式處理模組控制器方法...

thinkphp3 x中cookie方法的用法分析

一 cookie函式也是乙個多元化操作函式,完成cookie的設定 獲取和刪除操作。cookie 用於cookie 設定 獲取 刪除操作 用法 cookie name,valu程式設計客棧e option null 引數 name 必須 要操作的cookie變數 value 可選 要設定的cooki...

ThinkPHP 5 x遠端命令執行漏洞復現

thinkphp 5.x遠端命令執行漏洞復現 一 漏洞描述 2018年12月10日,thinkphp官方發布了安全更新,其中修復了thinkphp5框架的乙個高危漏洞 漏洞的原因是由於框架對控制器名沒有進行足夠的檢測,導致在沒有開啟強制路由 預設未開啟 的情況下可能導致遠端 執行,受影響的版本包括5...