thinkphp5.X系列web框架遠程命令執行

ThinkPHP5 5.0.23 遠程代碼執行漏洞

ThinkPHP是一款運用極廣的PHP開發框架。其5.0.23以前的版本中,獲取method的方法中沒有正確處理方法名,導致攻擊者可以調用Request類任意方法並構造利用鏈,從而導致遠程代碼執行漏洞。

漏洞分析

如上所述,此漏洞是因爲Request類中獲取method方法中沒有正確的處理方法名導致遠程命令執行。

使用docker搭建好環境後,進入bash環境

查看/var/www/thinkphp/library/think/Request.php即Request類

在這裏插入圖片描述

因爲太多截取含有method關鍵字的部分發現method函數定義並且可以發現這個函數主要在其他成員函數,因爲下面的return

發現沒?
每個return都是http的請求方法,說明此方法是用來對請求類型做判斷的。

在這裏插入圖片描述
接下來看一下這個類的構造函數,好吧說不上來畢竟不是搞開發的,總之影響漏洞的類就是這個request類,通過一系列的神奇操作,觸發request類的param方法覆蓋server變量,然後通過input方法實現任意代碼執行。

漏洞復現

引用payload實現遠程代碼執行

在這裏插入圖片描述

ThinkPHP5 5.0.22/5.1.29 遠程代碼執行漏洞

其版本5中,由於沒有正確處理控制器名,導致在網站沒有開啓強制路由的情況下(即默認情況下)可以執行任意方法,從而導致遠程命令執行漏洞。

漏洞分析

引一篇大佬的文章
https://www.cnblogs.com/st404/p/10245844.html

漏洞復現

http://your-ip:8080/index.php?s=/Index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=-1

在這裏插入圖片描述
相關文章

Thinkphp5開啓強制路由代碼示例詳解(防遠程攻擊必備)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章