版本:v2.0.4
官网:http://www.yunucms.com/
目前官方已经更新到2.0.8版本

云优CMS是一款基于TP5.0框架为核心开发的一套免费+开源的城市分站内容管理系统。云优CMS前身为远航CMS,团队自2013年起自主研发城市分站内容管理系统,5年来,修复升级上千个功能性问题。

MVC简介
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。

优势

1.耦合性低,任何一层的改变,对其他层影响不大
2.重用性高
3.可维护性高

TP5是标准的MVC结构,YUNUCMS的文件结构如下,核心业务代码在app下

1.文件包含导致Getshell
文件路径:app/index/controller/Index.php
方法名:buildHtml
index模块没有对权限校验,可以直接调用此方法

跟进fetch(),来到Controller中

继续跟进,来到view中

继续跟进,来到Think中

继续跟进,来到Template中

接着会进入parseTemplateFile方法

只判断模板是否为文件,是文件就会包含该文件,会导致文件包含漏洞

2.api/master/api_list SQL注入漏洞
文件路径:app/api/controller/Master.php
函数:api_list
参数:orderby
先看api_list函数代码,在判断orderby参数时,只要字符串含有 desc/asc,即把输入的参数带入查询

161行组装参数,进行查询:

$_infolist = db('content')->where($_where)->order("$orderby")->limit(($pages-1)*$limit,$limit)->select();

debug跟进查看
http://localhost/index.php?s=api/master/api_list

POST:cid=29&titlelen=1&orderby=extractvalue(1,concat(0x7e,user())) desc&keyword=%


可以看到,恶意SQL语句被拼接进去了