thinkcmf5.0.180901 远程代码执行漏洞分析

最近thinkcmf爆出了一个后台登录后的远程代码执行漏洞。

非常好奇看了下决定写一个分析过程分析下如何执行代码的。如何搭建环境就不多介绍了,大家可以phpstudy或者xampp,thinkcmf
的源代码可以直接从github或者码云上下载。https://gitee.com/thinkcmf/ThinkCMF/releases/ 历史版本自己找下,下面开始我的分析。
首先先执行下漏洞,安装好后admin身份直接登陆,在后台-设置-url美化-添加url规则,设置内容 原始网址 portal/List/index 显示网址 list/:id’.file_put_contents(‘1.php’,’<?php phpinfo();’).’ 之后就保存在去public目录下查看就会发现多出了一个1.php文件
在这里插入图片描述
在去数据库里面搜寻会在表cmf_route里面发现一条一样的记录。
之后在去代码里寻找那个地方触发了漏洞,我们修改刚才的显示网址让他报错list/:id’.file_put_contents(‘1.php’,‘aaa’,’<?php phpinfo();’).’
然后切换左侧菜单就会报错如下
在这里插入图片描述
找到文件data/conf/route.php打开查看代码
<?php return array (
‘list/:id’.file_put_contents(‘1.php’,‘aaa’,’<?php phpinfo();’).’’ =>
array (
0 => ‘portal/List/index’,
1 =>
array (
),
2 =>
array (
‘id’ => ‘\d+’,
),
),
);

发现这里多了我们刚才添加进来的规则,url直接用.拼接起来,在php里面这样会直接执行内部的代码就导致触发了远程的代码直接漏洞。
那到底是什么时候触发呢,这就和cms采用的thinkphp框架有关了。
我们在用phpstorm加载目录下的代码,直接分开下断看什么时候结束
最后发现断在了这里在这里插入图片描述
框架在初始化的时候会去加载规则,而thinkcmf把规则设置成了可以后台添加并且保存到数据库,之后在从数据库读取加载,加载的时候没有严格过滤导致了框架加载的时候include直接执行了。到这里一切思路就变得清楚了。由于要后台登陆修改就显得这个漏洞变得有点鸡肋了,不如thinkphp5最近爆出的直接远程代码执行漏洞来的直接。就当做练习吧。

ThinkCMF是一款基于ThinkPHP MySQL开发的中文内容管理框架(CMF),我们一直秉承ThinkPHP大道至简的理念,坚持做最简约的ThinkPHP开源软件,多应用化开发方式,让您更快地完成自己的创业项目。 ThinkCMF 5.0.180901 更新日志: 增强模板设计,提供可视化模板设计;增加模板设计界面钩子;增加验证码图片钩子;增加后台设置网站信息界面钩子;增加后台清除缓存界面钩子;增加后台导航管理界面钩子;增加后台友情链接管理界面钩子;增加后台幻灯片管理界面钩子;增加后台幻灯片页面列表界面钩子;增加后台幻灯片页面添加界面钩子;增加后台幻灯片页面编辑界面钩子;增加后台管理员列表界面钩子;增加后台管理员添加界面钩子;增加后台管理员编辑界面钩子;增加后台角色管理界面钩子;增加后台角色添加界面钩子;增加后台角色编辑界面钩子;增加后台角色授权界面钩子;增加用户管理本站用户列表界面钩子;增加资源管理列表界面钩子;增加用户管理第三方用户列表界面钩子;增加后台首页界面钩子;增加后台回收站界面钩子;增加后台菜单管理界面钩子;增加后台自定义登录是否开启钩子;增加admin.jsjs-ajax-btn组件;优化插件加载;优化前后台上传js。[门户应用]增加文章音频,视频功能;增加门户后台文章管理列表界面钩子;增加门户后台文章添加界面钩子;增加门户后台文章编辑界面钩子;增加门户后台文章分类管理列表界面钩子;增加门户后台文章分类添加界面钩子;增加门户后台文章分类编辑界面钩子;增加门户后台页面管理列表界面钩子;增加门户后台页面添加界面钩子;增加门户后台页面编辑界面钩子;增加门户后台文章标签管理列表界面钩子;增加门户后台文章添加编辑界面右侧栏钩子;增加门户后台文章添加编辑界面主要内容钩子;增加后台文章分类显示隐藏功能;增加后台文章分类列表搜索功能;增加后台文章分类列表层级折叠功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值