Thinkphp <= 5.0.10 緩存導致的Getshell


漏洞代碼:

    public function myCache(){
        $a = "\nphpinfo();//";
        Cache::set("hack to cache",$a);
        return "cache ok!!!";
    }

訪問:http://tp50.com/index.php/index/index/myCache

漏洞分析:

下斷點分析

首先是Cache::set("hack to cache",$a);,該類沒有實例化,進行自動加載機制進行實例化

然后先來到Cache::set方法中

隨后就是先進入 init 的初始化方法中 接着繼續進入connect方法中

先調用Cache::get方法,該方法中是返回 cache的相關的參數

然后返回 來到connecct方法中,該方法默認返回File類的實例化

最后進入 set 方法中

其中 file_put_contents 方法寫入的內容可控 導致 緩存文件getshell

最后自己發現的是:tp5下面 如果web目錄設置為./public下 那么也無法通過路由訪問runtime

修復:

看一下修復之后的結果(v5.0.15)

文章參考:https://www.cnblogs.com/litlife/p/11241571.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM