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

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

缺陷编号:wooyun-2014-072477

漏洞标题:dota的站点与论坛可导致getshell以及脱裤

相关厂商:完美时空

漏洞作者: CoffeeSafe

提交时间:2014-08-15 12:42

修复时间:2014-09-29 19:28

公开时间:2014-09-29 19:28

漏洞类型:系统/服务运维配置不当

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-08-15: 细节已通知厂商并且等待厂商处理中
2014-08-18: 厂商已经确认,细节仅向厂商公开
2014-08-28: 细节向核心白帽子及相关领域专家公开
2014-09-07: 细节向普通白帽子公开
2014-09-17: 细节向实习白帽子公开
2014-09-29: 细节向公众公开

简要描述:

http://www.wooyun.org/bugs/wooyun-2014-071920
亲,上次没礼物,这次有没有?详细看漏洞修复里的总结。

详细说明:

上次发了完美世界无冬ol主站以及Arc页游平台getwebshell脱裤
本次在服务器又出了dota的站点与论坛可导致getshell以及脱裤
原因是《无冬OL》Xbox 官方网站 存在命令执行(具体看上一个漏洞)
本次发现,跨目录不仅仅是上次描述的那样简单!

1.jpg


本次漏洞涉及:http://tishow.dota2.com.cn
http://www.dota2bbs.org
http://bbs.dota2.com.cn

漏洞证明:

本次我不上传木马什么演示的!我只贴出相关信息。你们可以看看。
路径:/web/webapps/Dota2BBS/config/config_ucenter.php

<?php
define('UC_CONNECT', 'mysql');
define('UC_DBHOST', '127.0.0.1');
define('UC_DBUSER', 'ultrax');
define('UC_DBPW', 'ultrax123!@#');
define('UC_DBNAME', 'ultrax');
define('UC_DBCHARSET', 'utf8');
define('UC_DBTABLEPRE', '`ultrax`.pre_ucenter_');
define('UC_DBCONNECT', 0);
define('UC_CHARSET', 'utf-8');
define('UC_KEY', 'c017C0kdX9J9E1q8963cyfU4z0G1gbI0Xc8749K4x2taT1id0c25y3Var9q7RdB6');
define('UC_API', 'http://bbs.scgl.dota2.com.cn/uc_server');
define('UC_APPID', '1');
define('UC_IP', '');
define('UC_PPP', 20);


路径:/web/webapps/Dota2BBS/config/config_ucenter_default.php

<?php
/**
* [Discuz!] (C)2001-2099 Comsenz Inc.
* This is NOT a freeware, use is subject to license terms
*
* $Id: config_ucenter_default.php 11023 2010-05-20 02:23:09Z monkey $
*/
// ============================================================================
define('UC_CONNECT', 'mysql'); // 连接 UCenter 的方式: mysql/NULL, 默认为空时为 fscoketopen(), mysql 是直接连接的数据库, 为了效率, 建议采用 mysql
// 数据库相关 (mysql 连接时)
define('UC_DBHOST', '127.0.0.1'); // UCenter 数据库主机
define('UC_DBUSER', 'ultrax'); // UCenter 数据库用户名
define('UC_DBPW', 'ultrax123!@#'); // UCenter 数据库密码
define('UC_DBNAME', 'ucenter'); // UCenter 数据库名称
define('UC_DBCHARSET', 'utf8'); // UCenter 数据库字符集
define('UC_DBTABLEPRE', '`ucenter`.uc_'); // UCenter 数据库表前缀
define('UC_DBCONNECT', '0'); // UCenter 数据库持久连接 0=关闭, 1=打开
// 通信相关
define('UC_KEY', 'yeN3g9EbNfiaYfodV63dI1j8Fbk5HaL7W4yaW4y7u2j4Mf45mfg2v899g451k576'); // 与 UCenter 的通信密钥, 要与 UCenter 保持一致
define('UC_API', 'http://localhost/ucenter/branches/1.5.0/server'); // UCenter 的 URL 地址, 在调用头像时依赖此常量
define('UC_CHARSET', 'utf-8'); // UCenter 的字符集
define('UC_IP', '127.0.0.1'); // UCenter 的 IP, 当 UC_CONNECT 为非 mysql 方式时, 并且当前应用服务器解析域名有问题时, 请设置此值
define('UC_APPID', '1'); // 当前应用的 ID
// ============================================================================
define('UC_PPP', '20');
?>


路径:/web/webapps/Dota2BBS/config/config_global_default.php

<?php
/**
* [Discuz!] (C)2001-2099 Comsenz Inc.
* This is NOT a freeware, use is subject to license terms
*
* $Id: config_global_default.php 32891 2013-03-20 10:51:37Z zhengqingpeng $
*/
$_config = array();
// ---------------------------- CONFIG DB ----------------------------- //
// ---------------------------- 数据库相关设置---------------------------- //
/**
* 数据库主服务器设置, 支持多组服务器设置, 当设置多组服务器时, 则会根据分布式策略使用某个服务器
* @example
* $_config['db']['1']['dbhost'] = 'localhost'; // 服务器地址
* $_config['db']['1']['dbuser'] = 'root'; // 用户
* $_config['db']['1']['dbpw'] = 'root';// 密码
* $_config['db']['1']['dbcharset'] = 'gbk';// 字符集
* $_config['db']['1']['pconnect'] = '0';// 是否持续连接
* $_config['db']['1']['dbname'] = 'x1';// 数据库
* $_config['db']['1']['tablepre'] = 'pre_';// 表名前缀
*
* $_config['db']['2']['dbhost'] = 'localhost';
* ...
*
*/
$_config['db'][1]['dbhost'] = '127.0.0.1';
$_config['db'][1]['dbuser'] = 'ultrax';
$_config['db'][1]['dbpw'] = 'ultrax123!@#';
$_config['db'][1]['dbcharset'] = 'utf8';
$_config['db'][1]['pconnect'] = 0;
$_config['db'][1]['dbname'] = 'ultrax';
$_config['db'][1]['tablepre'] = 'pre_';
/**
* 数据库从服务器设置( slave, 只读 ), 支持多组服务器设置, 当设置多组服务器时, 系统每次随机使用
* @example
* $_config['db']['slave']['1']['dbhost'] = 'localhost';
* $_config['db']['slave']['1']['dbuser'] = 'root';
* $_config['db']['slave']['1']['dbpw'] = 'root';
* $_config['db']['slave']['1']['dbcharset'] = 'gbk';
* $_config['db']['slave']['1']['pconnect'] = '0';
* $_config['db']['slave']['1']['dbname'] = 'x1';
* $_config['db']['slave']['1']['tablepre'] = 'pre_';
*
* $_config['db']['slave']['2']['dbhost'] = 'localhost';
* ...
*
*/
$_config['db']['slave'] = array();
/**
* 数据库 分布部署策略设置
*
* @example 将 common_member 部署到第二服务器, common_session 部署在第三服务器, 则设置为
* $_config['db']['map']['common_member'] = 2;
* $_config['db']['map']['common_session'] = 3;
*
* 对于没有明确声明服务器的表, 则一律默认部署在第一服务器上
*
*/
$_config['db']['map'] = array();
/**
* 数据库 公共设置, 此类设置通常对针对每个部署的服务器
*/
$_config['db']['common'] = array();
/**
* 禁用从数据库的数据表, 表名字之间使用逗号分割
*
* @example common_session, common_member 这两个表仅从主服务器读写, 不使用从服务器
* $_config['db']['common']['slave_except_table'] = 'common_session, common_member';
*
*/
$_config['db']['common']['slave_except_table'] = '';
/**
* 内存服务器优化设置
* 以下设置需要PHP扩展组件支持,其中 memcache 优先于其他设置,
* 当 memcache 无法启用时,会自动开启另外的两种优化模式
*/
//内存变量前缀, 可更改,避免同服务器中的程序引用错乱
$_config['memory']['prefix'] = 'discuz_';
/* reids设置, 需要PHP扩展组件支持, timeout参数的作用没有查证 */
$_config['memory']['redis']['server'] = '';
$_config['memory']['redis']['port'] = 6379;
$_config['memory']['redis']['pconnect'] = 1;
$_config['memory']['redis']['timeout'] = 0;
/**
* 是否使用 Redis::SERIALIZER_IGBINARY选项,需要igbinary支持,windows下测试时请关闭,否则会出>现错误Reading from client: Connection reset by peer
* 支持以下选项,默认使用PHP的serializer
* [重要] 该选项已经取代原来的 $_config['memory']['redis']['igbinary'] 选项
* Redis::SERIALIZER_IGBINARY =2
* Redis::SERIALIZER_PHP =1
* Redis::SERIALIZER_NONE =0 //则不使用serialize,即无法保存array
*/
$_config['memory']['redis']['serializer'] = 1;
$_config['memory']['memcache']['server'] = ''; // memcache 服务器地址
$_config['memory']['memcache']['port'] = 11211; // memcache 服务器端口
$_config['memory']['memcache']['pconnect'] = 1; // memcache 是否长久连接
$_config['memory']['memcache']['timeout'] = 1; // memcache 服务器连接超时
$_config['memory']['apc'] = 1; // 启动对 apc 的支持
$_config['memory']['xcache'] = 1; // 启动对 xcache 的支持
$_config['memory']['eaccelerator'] = 1; // 启动对 eaccelerator 的支持
$_config['memory']['wincache'] = 1; // 启动对 wincache 的支持
// 服务器相关设置
$_config['server']['id'] = 1; // 服务器编号,多webserver的时候,用于标识当前服务器的ID
// 附件下载相关
//
// 本地文件读取模式; 模式2为最节省内存方式,但不支持多线程下载
// 1=fread 2=readfile 3=fpassthru 4=fpassthru+multiple
$_config['download']['readmod'] = 2;
// 是否启用 X-Sendfile 功能(需要服务器支持)0=close 1=nginx 2=lighttpd 3=apache
$_config['download']['xsendfile']['type'] = 0;
// 启用 nginx X-sendfile 时,论坛附件目录的虚拟映射路径,请使用 / 结尾
$_config['download']['xsendfile']['dir'] = '/down/';
// CONFIG CACHE
$_config['cache']['type'] = 'sql'; // 缓存类型 file=文件缓存, sql=数据库缓存
// 页面输出设置
$_config['output']['charset'] = 'utf-8'; // 页面字符集
$_config['output']['forceheader'] = 1; // 强制输出页面字符集,用于避免某些环境乱码
$_config['output']['gzip'] = 0; // 是否采用 Gzip 压缩输出
$_config['output']['tplrefresh'] = 1; // 模板自动刷新开关 0=关闭, 1=打开
$_config['output']['language'] = 'zh_cn'; // 页面语言 zh_cn/zh_tw
$_config['output']['staticurl'] = 'static/'; // 站点静态文件路径,“/”结尾
$_config['output']['ajaxvalidate'] = 0; // 是否严格验证 Ajax 页面的真实性 0=关闭,1=打开
$_config['output']['iecompatible'] = 0; // 页面 IE 兼容模式
// COOKIE 设置
$_config['cookie']['cookiepre'] = 'discuz_'; // COOKIE前缀
$_config['cookie']['cookiedomain'] = ''; // COOKIE作用域
$_config['cookie']['cookiepath'] = '/'; // COOKIE作用路径
// 站点安全设置
$_config['security']['authkey'] = 'asdfasfas'; // 站点加密密钥
$_config['security']['urlxssdefend'] = true; // 自身 URL XSS 防御
$_config['security']['attackevasive'] = 0; // CC 攻击防御 1|2|4|8
$_config['security']['querysafe']['status'] = 1; // 是否开启SQL安全检测,可自动预防SQL注入攻击
$_config['security']['querysafe']['dfunction'] = array('load_file','hex','substring','if','ord','char');
$_config['security']['querysafe']['daction'] = array('@','intooutfile','intodumpfile','unionselect','(select', 'unionall', 'uniondistinct');
$_config['security']['querysafe']['dnote'] = array('/*','*/','#','--','"');
$_config['security']['querysafe']['dlikehex'] = 1;
$_config['security']['querysafe']['afullnote'] = 0;
$_config['admincp']['founder'] = '1'; // 站点创始人:拥有站点管理后台的最高权限,每个站点可以设置 1名或多名创始人
// 可以使用uid,也可以使用用户名;多个创始人之间请使用逗号“,”分开;
$_config['admincp']['forcesecques'] = 0; // 管理人员必须设置安全提问才能进入系统设置 0=否, 1=是[安全]
$_config['admincp']['checkip'] = 1; // 后台管理操作是否验证管理员的 IP, 1=是[安全], 0=否。仅在管理员无法登陆后台时设置 0。
$_config['admincp']['runquery'] = 0; // 是否允许后台运行 SQL 语句 1=是 0=否[安全]
$_config['admincp']['dbimport'] = 1; // 是否允许后台恢复论坛数据 1=是 0=否[安全]
/**
* 系统远程调用功能模块
*/
// 远程调用: 总开关 0=关 1=开
$_config['remote']['on'] = 0;
// 远程调用: 程序目录名. 出于安全考虑,您可以更改这个目录名, 修改完毕, 请手工修改程序的实际目录
$_config['remote']['dir'] = 'remote';
// 远程调用: 通信密钥. 用于客户端和本服务端的通信加密. 长度不少于 32 位
// 默认值是 $_config['security']['authkey'] 的 md5, 您也可以手工指定
$_config['remote']['appkey'] = md5($_config['security']['authkey']);
// 远程调用: 开启外部 cron 任务. 系统内部不再执行cron, cron任务由外部程序激活
$_config['remote']['cron'] = 0;
// $_GET|$_POST的兼容处理,0为关闭,1为开启;开启后即可使用$_G['gp_xx'](xx为变量名,$_GET和$_POST集合的所有变量名),值为已经addslashes()处理过
$_config['input']['compatible'] = 1;
?>


其余的目录一样,建议翻翻看dota2app/也就是:http://tishow.dota2.com.cn
多处配置不当。跨权限执行等。
另外贴出几个dota bbs 的管理员pwd md5如下:
b4ee1889ce9337042647a485897ed89d
8493c14f3486251cc807a1f1a97f20b7
图的话再顺便带几张。。

1.jpg


2.jpg


3.jpg

修复方案:

简单的唠叨两句,上次脱裤,这次完全也可以的。这种站点以及服务器部署,缺陷的存在,你可以看到,还是那句话,并不是一点危害。危害的多大可以自己站在黑盒测试方面香香,这次我没有像上次上传shell什么的,我感觉没必要留下后门,贴出代码,你会懂的。希望尽快修复~~~~ 本次赏点什么吧?
管理员比我更专业~

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:20

确认时间:2014-08-18 19:41

厂商回复:

非常感谢,我们会尽快处理,还没有你的联系方式,得到后会尽快发送你礼物,谢谢!

最新状态:

暂无