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

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

缺陷编号: WooYun-2014-54906

漏洞标题: 建站之星 Sitestar 本地包含漏洞一枚

相关厂商: 建站之星

漏洞作者: ′雨。认证白帽子

提交时间: 2014-03-30 09:54

公开时间: 2014-06-28 09:55

漏洞类型: 文件包含

危害等级: 高

自评Rank: 20

漏洞状态: 厂商已经确认

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

Tags标签: 无

2人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-03-30: 细节已通知厂商并且等待厂商处理中
2014-03-31: 厂商已经确认,细节仅向厂商公开
2014-04-03: 细节向第三方安全合作伙伴开放(绿盟科技唐朝安全巡航无声信息
2014-05-25: 细节向核心白帽子及相关领域专家公开
2014-06-04: 细节向普通白帽子公开
2014-06-14: 细节向实习白帽子公开
2014-06-28: 细节向公众公开

简要描述:

过滤不严 包含漏洞。
虽然没有办法上传图片 但是还是有办法Getshell。

详细说明:

在module/mod_auth.php中。



code 区域
public function auth_callback(){

$this->_layout = NO_LAYOUT;
$type=$_REQUEST['type'];
$code=$_REQUEST['code'];
$db=MysqlConnection::get();
$db->query("SET sql_mode = ''");

try{
$className=$this->auth_lib($type);
if(empty($className)) die('Failed!');
$authclass=new $className();





type code可控。 无过滤。 然后进入auth_lib

来看看

code 区域
public static function auth_lib($type){
$dirname=P_LIB.'/auth/';
$classname=$type.'_auth';

$libfilename=$dirname.$classname.'.php';

if(is_file($libfilename)){
require_once($dirname."oauth_class.php");
require_once($libfilename);
return $classname;
}
}





只要文件存在就包含 。 虽然会自动加上.php 但是是可以截断后面的.php的。

截断后 就可以来包含了。

b1.jpg



这里 包含根目录下的robots.txt成功。 但是怎么来getshell呢?

我找了找 没有找到能上传图片的地方。 只有另外看其他的了。

看了会码 看到个这个。



code 区域
public function dologout() {
//日志写入
$reg_time = date("Y-m-d H:i:s",time());
$url = $_SERVER[SERVER_NAME].$_SERVER[REQUEST_URI];
$lastlog_time = date("Y-m-d H:i:s",SessionHolder::get('user/lastlog_time'));
$lastlog_ip = SessionHolder::get('user/lastlog_ip');
$user = SessionHolder::get('user/login');
$file = '#log#.log';
$str = <<<LOGSTR
注册时间:$lastlog_time\r\n
注册IP:$lastlog_ip\r\n
操作时间:$reg_time\r\n
操作类型:退出\r\n
用户源IP地址:$_SERVER[REMOTE_ADDR]\r\n
用户源端口号:$_SERVER[REMOTE_PORT]\r\n
用户名:$user\r\n
URL:$url\r\n
URL:$url\r\n
====================================================== \r\n
LOGSTR;
ParamParser::writeFile($file,$str);
SessionHolder::destroy();
// TODO: We need a logged out page and countdown redirecting to index.php
// Content::redirect(Html::uriquery('mod_auth', 'loginform'));
Content::redirect(Html::uriquery('frontpage', 'index'));
}



可以看到 这里 写了一个Log.txt 看看有没有可控的。



code 区域
注册时间:$lastlog_time\r\n
注册IP:$lastlog_ip\r\n
操作时间:$reg_time\r\n
操作类型:退出\r\n
用户源IP地址:$_SERVER[REMOTE_ADDR]\r\n
用户源端口号:$_SERVER[REMOTE_PORT]\r\n
用户名:$user\r\n
URL:$url\r\n
URL:$url\r\n



看这里 至少我们用户名是可以控制的。 然后我们就来注册一个phpinfo的用户

b2.jpg



注册成功 看看log 有没有成功写入。

b3.jpg



成功写入码。

然后直接包含这个。 可Getshell。

漏洞证明:

b4.jpg





成功Getshell。

修复方案:

过滤。

版权声明:转载请注明来源 ′雨。@乌云


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:10

确认时间:2014-03-31 10:01

厂商回复:

处理中,感谢

最新状态:

2014-04-03:补丁已经发布,请去官网更新补丁或下载最新安装包,谢谢。


漏洞评价:

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

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

评价

  1. 2014-06-28 10:10 | pandas ( 普通白帽子 | Rank:701 漏洞数:79 | 国家一级保护动物)
    1

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