乌云(WooYun.org)历史漏洞查询---http://wy.zone.ci/
乌云 Drops 文章在线浏览--------http://drop.zone.ci/
2013-11-24: 细节已通知厂商并且等待厂商处理中 2013-11-24: 厂商已经确认,细节仅向厂商公开 2013-11-27: 细节向第三方安全合作伙伴开放 2014-01-18: 细节向核心白帽子及相关领域专家公开 2014-01-28: 细节向普通白帽子公开 2014-02-07: 细节向实习白帽子公开 2014-02-22: 细节向公众公开
TCCMS某处设计缺陷,成功打入官网后台!
问题发生在app\controller\user.class.php146行
public function update() { $_Obj = M ( 'user' ); if (($_POST ['info'] ['password'] !== $_POST ['password1'])) { StringUtil::msgbox ( Config::lang ( "PWDNOTTHESAME" ), 'index.php?ac=users_info', 1 ); exit (); } $_Obj->create (); if ($_POST ['info'] ['password'] != "" && ($_POST ['info'] [password] == $_POST ['password1'])) { $_Obj->password = strlen ( $_POST ['info'] ['password'] ) > 15 ? $_POST ['info'] ['password'] : md5 ( $_POST ['info'] ['password'] ); } if (empty ( $_POST ['info'] ['area'] )) { $_Obj->area = ""; } if (empty ( $_POST ['info'] ['city'] )) { $_Obj->city = ""; } //禁止修改管理员 $userObj = get ( "user", $_Obj->id ); if ($userObj->grade == 1) { self::checkIsAdmin (); } //禁止修改别人的 $IsSelfData = Authen::checkIsSelfData ( $_Obj->id ); if (! $IsSelfData) { $this->setValue ( "error", Config::lang ( "NOTRIGHT" ) ); $this->forward ( "error.html" ); exit (); } $_Obj->update (); StringUtil::msgbox ( Config::lang ( "MODIFYSUCCESS" ), 'index.php?ac=user_info', 1 ); }
这里调用了 $_Obj->create ();学TP!然后在看看$_Obj->create (); 这个里面什么情况
public function create($datas = '') { $data = array(); $data = $datas; if (empty($data)) { $data = $_POST['info']; } elseif (is_object($data)) { $data = get_object_vars($data); } elseif (!is_array($data)) { $msg = Config::lang("ILLEGALDATA"); exit($msg); } if (empty($_POST['info']) && empty($data)) { return false; } $fieldsType = $this->types; //字段和默认值 $fieldsName = $this->fields; //字段和类型 $formKeyAry = array_keys($data); //post过来的所有$key /* @var $key type */ foreach ($formKeyAry as $key) { if (array_key_exists($key, $this->fields)) { $val = isset($data[$key]) ? $data[$key] : NULL; if (is_scalar($val)) { if (false !== strpos($fieldsType[$key], 'int')) { $val = intval($val); } elseif (false !== strpos($fieldsType[$key], 'float') || false !== strpos($fieldsType[$key], 'double')) { $val = floatval($val); } } if (!is_null($val)) { $this->$key = $val; } if (($data[$key] == "" || $data[$key] == NULL || $data[$key] === 0) && $fieldsName[$key] != "") { $this->$key = $fieldsName[$key]; } } } return $this; }
$_POST['info'][xx] xx 直接是数据库字段 可以成功修改!在http://www.teamcen.com/index.php?ac=user_info页面通过修改表单名称 成功把注册的普通帐号修改为了管理员帐号
成功打入后台!什么注入都弱爆了!直接执行SQL 好舒服
你们懂的!
危害等级:低
漏洞Rank:5
确认时间:2013-11-24 16:10
谢谢关注TCCMS开源项目。有前台会员模块的用户受到影响,官方已经将会下一个版本采取后台登陆URL自定义,会员编辑判断是否管理员身份。
暂无