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

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

缺陷编号:wooyun-2015-090532

漏洞标题:大米CMS v4.9 sql注入

相关厂商:damicms.com

漏洞作者: roker

提交时间:2015-01-12 12:46

修复时间:2015-04-13 16:58

公开时间:2015-04-13 16:58

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:15

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-01-12: 细节已通知厂商并且等待厂商处理中
2015-01-12: 厂商已经确认,细节仅向厂商公开
2015-01-15: 细节向第三方安全合作伙伴开放
2015-03-08: 细节向核心白帽子及相关领域专家公开
2015-03-18: 细节向普通白帽子公开
2015-03-28: 细节向实习白帽子公开
2015-04-13: 细节向公众公开

简要描述:

rt

详细说明:

看到 操作数据的save函数

public function save($data='',$options=array()) {
if(empty($data)) {
// 没有传递数据,获取当前数据对象的值
if(!empty($this->data)) {
$data = $this->data;
}else{
$this->error = L('_DATA_TYPE_INVALID_');
return false;
}
}
// 分析表达式
$options = $this->_parseOptions($options);
if(!isset($options['where']) ) {
// 如果存在主键数据 则自动作为更新条件
if(isset($data[$this->getPk()])) {
$pk = $this->getPk();
$options['where'] = $pk.'=\''.$data[$pk].'\'';
$pkValue = $data[$pk];
unset($data[$pk]);
}else{
// 如果没有任何更新条件则不执行
$this->error = L('_OPERATION_WRONG_');
return false;
}
}
return $this->db->update($data,$options);
}


然而,在调用时 ,基本没有对 键值进行判断是否合法。
例如 修改资料处

function main(){
self::is_login();
if($_POST){
$data = array_map('strval',$_POST);
$data = array_map('remove_xss',$data);
$data['id'] = $_SESSION['dami_uid'];
M('member')->save($data);
$this->success('资料保存成功~');
}else{
$info = M('member')->where('id='.$_SESSION['dami_uid'])->find();
$this->assign('info',$info);
$this->display();
}
}


我们抓包添加一个 money字段

1.jpg


可以看到金额变成1000000 了~

2.png

漏洞证明:

2.png

修复方案:

判断字段 是否合法。

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:10

确认时间:2015-01-12 14:12

厂商回复:

修改考虑不全

最新状态:

暂无


漏洞评价:

评论