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

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

缺陷编号:wooyun-2013-045643

漏洞标题:APPCMS注射漏洞

相关厂商:appcms.cc

漏洞作者: phith0n

提交时间:2013-12-11 18:11

修复时间:2014-03-08 18:12

公开时间:2014-03-08 18:12

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:20

漏洞状态:漏洞已经通知厂商但是厂商忽略漏洞

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2013-12-11: 细节已通知厂商并且等待厂商处理中
2013-12-16: 厂商主动忽略漏洞,细节向第三方安全合作伙伴开放
2014-02-09: 细节向核心白帽子及相关领域专家公开
2014-02-19: 细节向普通白帽子公开
2014-03-01: 细节向实习白帽子公开
2014-03-08: 细节向公众公开

简要描述:

前台sql注射漏洞可爆后台密码,但在不知道后台地址及安全码的情况下略显鸡肋。。

详细说明:

  APPCMS是一款面向安卓应用的建站CMS,我们可以轻松地利用appcms建立一个发布、收集安卓APP的CMS。
  这里是默认安装好的首页,感觉做的还挺不错,有点安卓市场的范儿。

001.jpg


  
  下载最新版本appcms_1.3.890。
  查看index.php,有一段似乎是限制了搜索词的代码:

if (!preg_match("/^[\x{4e00}-\x{9fa5}\w {0}]+$/u", $_GET['q'])) {
die('搜索词只允许下划线,数字,字母,汉字和空格,请重新输入。点此<a href ="' . SITE_PATH . '">回到首页</a>');
}


所以当我们在首页搜索含有“'”的关键词时会有提示:

002.jpg


  
  但我们往前看,却发现了一段输出ajax的代码,这时候并没有过滤……所以注入由此产生:

//ajax请求联想关键字
if (trim($_GET['q']) != '' && !isset($_GET['tpl'])) {
$str = '';
$sql = "SELECT app_id,app_title,app_down FROM " . TB_PREFIX . "app_list WHERE app_title LIKE '%" . trim($_GET['q']) . "%' LIMIT 15";
$app_list = $dbm ->query($sql);
if (count($app_list['list']) > 0) {
foreach ($app_list['list'] as $k => $v){
$app_list['list'][$k]['app_title'] = helper :: utf8_substr($v['app_title'], 0, 20);
}
echo json_encode($app_list['list']);
exit;
} else {
exit;
}
}


  当$_GET[‘q’]非空且$_GET[‘tpl’]为空时进入这个IF,因为刚才我们搜索的时候参数是这样:?tpl=search&q='sd,所以才没有进入这个if。
  我们看到这个if语句中,直接把trim($_GET[‘q’])带入了select语句,造成了注入。
  给出利用exp:

xxoo'union select 1,uname,upass from appcms_admin_list where uid like '


  
  不过爆出了管理员密码也有点鸡肋,因为这个cms强制让用户修改后台地址,而且后台登录也选择性地有“安全码”。不过结合之前一个任意文件下载漏洞,也能读到安全码~

漏洞证明:

测试官网主站的时候失败了,可能主站不一样,但是官方演示站和本地用最新版搭建的都可以注入。
演示站:

004.jpg


本地:

003.jpg

修复方案:

将那一段正在匹配放到最前面来~

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


漏洞回应

厂商回应:

危害等级:无影响厂商忽略

忽略时间:2014-03-08 18:12

厂商回复:

最新状态:

2013-12-16:已修复