文档章节

thinkcmf 渗透测试漏洞修复解决方案

 网站安全
发布于 11/20 09:06
字数 724
阅读 18
收藏 0

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

近段时间发现很多APP程序用的是thinkcmf,此程序源码存在getshell漏洞,我们Sine安全紧急对此高危漏洞进行了分析和漏洞修复,攻击者可以通过构造特定的请求包get请求即可在远程服务器上执行任意脚本代码。

根据index.php中的配置,项目路径为application,打开 Portal 下的 Controller 目录,选择一个控制类文件。

发现他的父类为Common\Controller\HomebaseController。

在HomeBaseController中加入如下测试代码

ThinkPHP是一套基于MVC的应用程序框架,被分成三个核心部件:模型(M)、视图(V)、控制器(C)。

由于添加的代码在控制器中,根据ThinkPHP框架约定可以通过a参数来指定对应的函数名,但是该函数的修饰符必须为Public, 而添加的代码正好符合该条件。

可以通过如下URL进行访问,并且可以添加GET参数arg1传递给函数。

cmfx-master/?a=test_public&arg1=run%20success

HomeBaseController类中有一些访问权限为public的函数,重点关注display函数.看描述就是可以自定义加载模版,通过$this->parseTemplate 函数根据约定确定模版路径,如果不符合原先的约定将会从当前目录开始匹配。

然后调用THinkphp Controller 函数的display方法

/**

* 加载模板和页面输出 可以返回输出内容

@access public

@param string $templateFile 模板文件名

@param string $charset 模板输出字符集

@param string $contentType 输出类型

@param string $content 模板输出内容

@return mixed

*/

public function display($templateFile = '', $charset = '', $contentType = '', $content = '', $prefix = '') {

parent::display($this->parseTemplate($templateFile), $charset, $contentType,$content,$prefix);

}

再往下就是调用Think View的fetch方法,这里的TMPL_ENGINE_TYPE 为Think, 最终模版内容解析在ParseTemplateBehavior中完成

如下调用即可加载任意文件

http://127.0.0.1:81/cmfx-master/?a=display&templateFile=README.md

五、执行漏洞

网站漏洞修复建议

通过此次审计代码发现问题的重点是对display 和 fetch 函数的修饰符模板函数进行修改,如果对程序代码不熟悉的话建议联系专业的网站安全公司来修复漏洞,国内做的比较专业的如Sinesafe,绿盟,启明星辰,等等,对此很多app调用此程序的api接口源码,建议大家遇到此问题首先要进行全面的网站漏洞检测和渗透测试,来达到事先预防此类攻击带来的危害。

© 著作权归作者所有

网站安全

粉丝 7
博文 183
码字总数 262942
作品 0
青岛
私信 提问
ThinkCMF 5.0.190312 正式版,包含安全更新!

更新日志 5.0.190312 增加composer第三方库支持 增加插件注解 增加后台模板动态设置 增加常量 优化url美化可能引起的安全漏洞(漏洞编号CVE-2019-6713 感谢topsec(zhan_ran)的及时反馈) 修复a...

ThinkCMF
03/13
1K
1
ThinkCMF 5.1.1 正式发布,优化 swoole 下性能

ThinkCMF5.1 做你的专属开发框架,让你更自由地飞 ThinkCMF5.1化繁为简,基于ThinkPHP 5.1重构所有核心代码 ,目标是做你的专属开发框架,让开发者更自由地创作,开发者只需关注,,和 的业务...

ThinkCMF
03/28
1K
3
ThinkCMF 5.0.181212 发布,包含安全更新

更新日志 5.0.181212 升级ThinkPHP到5.0.23(包含安全更新) 增加js-bootstrap-year前端组件 增加文件大小格式化函数cmffilesizeformat 修复网站在二级目录下无法设计模板问题 修复模板设计公共...

ThinkCMF
2018/12/12
776
10
ThinkCMF 内容管理框架 V1.1.1 发布

ThinkCMF内容管理框架发布以来受到广大爱好者的热情支持,大家献计献策使得代码质量得以快速提升,在此我代表我们整个团队道一声感谢~ V1.1.1的发布是对CMF新的完善,在新版本我们主要完成以...

ThinkCMF
2014/05/23
2.1K
6
ThinkCMF V1.1.2 发布啦!基于ThinkPHP 3.1.3框架

ThinkCMF V1.1.2 功能同ThinkCMFX1.0 主要更新: 统一前后台UI框架为simpleboot(bootstrap 2.3.2 ThinkCMF优化版) 后台增加风格一键切换功能 正在使用php5.2版本的站长们可以下载啦! ThinkC...

ThinkCMF
2014/07/16
6.6K
23

没有更多内容

加载失败,请刷新页面

加载更多

阿里巴巴的 Kubernetes 应用管理实践经验与教训

作者 | 孙健波(天元) 阿里巴巴技术专家 导读:本文整理自孙健波在 ArchSummit 大会 2019 北京站演讲稿记录。首先介绍了阿里巴巴基于 Kubernetes 项目进行大规模应用实践过程中遇到的问题;...

阿里巴巴云原生
10分钟前
2
0
pinpoint采样原理分析

使用pinpoint进行全链路监控时,支持对请求的采样,某条请求是否被采样,取决于整个链路开始的机器。该机器使用特定的采样算法。采样的标志会一直在链路中透传。比如在http里面,会在header里...

xiaomin0322
14分钟前
2
0
在IDEA开发工具中使用lombok

1. 首先我们需要安装IntelliJ IDEA中的lombok插件,打开IntelliJ IDEA后点击菜单栏中的File-->Settings,或者使用快捷键Ctrl+Alt+S进入到设置页面 我们点击设置中的Plugins进行插件的安装,在...

欧阳飘
15分钟前
2
0
爱码仕 5G生活畅想 (五) 每个人每个家庭都有一朵私有的云

30年前,微软让每个家庭都有一台电脑的理念成为了现实;而今云计算的观念已为老百姓们所熟识。数据就是能源;数据就是财富;谁生产了数据,这数据的所有权就归谁所有。随着原生云基础设施的完...

LitStone
17分钟前
3
0
嵌入式入门:嵌入式领域的职业发展方向是什么?

嵌入式入门:嵌入式领域的职业发展方向是什么? 在如今的IT市场上看,嵌入式的发展的应用都是广受欢迎的,在嵌入式入门学习中,我们可以发现嵌入式的发展方向有很多,门槛高低不一样。下面就...

xyd118
18分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部