1. 程式人生 > >ThinkPHP 3.2.3~5.0.10 快取函式設計缺陷後臺GetShell實戰

ThinkPHP 3.2.3~5.0.10 快取函式設計缺陷後臺GetShell實戰

0×00 前言

ThinkPHP是為了簡化企業級應用開發和敏捷WEB應用開發而誕生的,由於其簡單易用,很多cms都基於該框架改寫。然而 Thinkphp在快取使用卻存在缺陷,生成快取時,Thinkphp會將資料序列化存進一個php檔案,這就產生了很大的安全問題。

0×01 環境搭建

工具

phpstudy

http://www.phpstudy.net/phpstudy/phpStudy20161103.zip

Jymusic cms

http://www.jyuu.cn/topic/t/41

xyhcms

https://pan.baidu.com/s/1qYhTKc8

搭建

安裝好phpstudy,把jymusic目錄下的所有檔案及資料夾拷貝到phpstudy的www目錄下,瀏覽器訪問http://localhost/install.php,然後配置一下資料庫資訊即可。

另外xyhcms安裝類似,這裡不贅述。

0×02本地後臺getshell

Jymusic cms

先看一下管理員登入頁面的原始碼,看到核心入口為ThinkPHP.php,找到並開啟檢視

發現應用快取目錄為Temp資料夾

開啟Temp資料夾會發現有很多快取檔案,我們隨便開啟即可看看,可以發現裡面的內容有點像網站配置資訊,只不過是序列化後的結果

所以我們在後臺的網站設定處插入一句話,就會被ThinkPHP寫入快取檔案。而且這個快取檔案的檔名都是固定不變的,這也是導致getshell的原因。

成功插入後,我們來執行一下phpinfo()函式看看,菜刀也能成功連線

 

xyhcms

xyhcms和Jymusic cms一樣使用了ThinkPHP框架,這裡不贅述,直接給出快取檔案的位置

xyhcms其實還有一個漏洞,在模板管理處可以新增一個php字尾的模板,檔案內容也未做任何檢測過濾。下面是成功getshell過程

 

0×03總結

其實現在很多小型網站都是基於ThinkPHP框架開發的,很多都存在這種問題。當你找不到上傳點的時候,可以試試這種方法。當然,肯定有人會說,這個要後臺登入才能利用,你只是在本地復現,都沒實戰過,說個錘子。其實,我還真的實戰過,只是不方便貼圖,使用弱口令做密碼還是挺多的,所以錘子未必不可用。還有,有的網站,雖然說你用很簡單的方法getshell,但是其實可以研究的東西還有很多,比如你getshell之後發現許可權不夠,那就可以試試提權,例如用udf提權、使用mysql遠端連線結合sqlmap提權等等,雖然有些方法很早就有了,但是並不是每個人都會,而且一些老的思路還有可能啟發你新的思考,繼續加油吧!

轉自:https://www.freebuf.com/articles/web/148629.html