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

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

缺陷编号:wooyun-2014-061197

漏洞标题:大汉版通系统敏感信息泄露+SQL注入漏洞

相关厂商:南京大汉网络有限公司

漏洞作者: 路人甲

提交时间:2014-05-19 15:32

修复时间:2014-08-17 15:34

公开时间:2014-08-17 15:34

漏洞类型:SQL注射漏洞

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-05-19: 细节已通知厂商并且等待厂商处理中
2014-05-19: 厂商已经确认,细节仅向厂商公开
2014-05-22: 细节向第三方安全合作伙伴开放
2014-07-13: 细节向核心白帽子及相关领域专家公开
2014-07-23: 细节向普通白帽子公开
2014-08-02: 细节向实习白帽子公开
2014-08-17: 细节向公众公开

简要描述:

大汉版通某系统存在比较严重的信息泄露另加两处SQL注入

详细说明:

该系统为:大汉信息公开系统(xxgk)
#1 信息泄露
漏洞文件路径

/xxgk/setup/tools/getuserinfo.jsp


网上的泄露案例如图所示

1.jpg


#2 SQL注入
漏洞文件如下

/xxgk/short_message/que_recemsg.jsp
/xxgk/workflow/statistics/que_apply_sta.jsp


引起漏洞的部分代码(/xxgk/short_message/que_recemsg.jsp)

strQueKeyWords 	= Convert.getParameter(request, "que_keywords");
strQueKeyWords1 = Convert.getParameter(request, "que_keywords1");
strQueScope = Convert.getParameter(request, "que_scope");
strStartDate = Convert.getParameter(request, "que_startdate");
strEndDate = Convert.getParameter(request, "que_enddate");
//高级检索的关键字优先
strQueKeyWords = (strQueKeyWords1.length() > 0) ? strQueKeyWords1
: strQueKeyWords;
//组织时间条件
String strDateCond = "";
if (!"".equals(strStartDate) && !"".equals(strEndDate)) {
strDateCond += " AND a.dt_sendtime >= '" + strStartDate
+ " 00:00:00' AND a.dt_sendtime <= '" + strEndDate + " 23:59:59'";
} else if (!"".equals(strStartDate) && "".equals(strEndDate)) {
strDateCond += " AND a.dt_sendtime >= '" + strStartDate + " 00:00:00'";
} else if ("".equals(strStartDate) && !"".equals(strEndDate)) {
strDateCond += " AND a.dt_sendtime <= '" + strEndDate + " 23:59:59'";
}

// 查询条件部分
StringBuffer sbWhere = new StringBuffer(128);
strTitle = "短消息→收件箱";
sbWhere.append(" a.vc_receiverid='"+ id +"'");//这里get提交的loginid参数
if(!"".equals(strQueKeyWords)) {
String strQueKeyWords_ = strQueKeyWords.replaceAll("'","''");
sbWhere.append(" AND vc_msgtitle like '%" + strQueKeyWords_ + "%'");
}


引起漏洞的部分代码(/xxgk/workflow/statistics/que_apply_sta.jsp)

<%
//自行判断权限
String userid = Convert.getParameter(request, "userid");
//取得非子流程的流程定义
ModelEntity en = new ModelEntity();
en.setB_child(0);
BasicFlowBLF bf = new BasicFlowBLF();
ArrayList al = bf.getModel(en);
/*获取表单提交变量*/
String que_startdate = Convert.getParameter(request,"starttime");
String que_enddate = Convert.getParameter(request,"endtime");
String strModelname = Convert.getParameter(request,"modelname");
String strModelname1 = Convert.getParameter(request,"modelname1");
strModelname = ( strModelname1.length() > 0 ) ? strModelname1 : strModelname;
/*定义变量、取值*/
String strTitle = "按申请记录统计" ;
String startTime = "";
String endTime = "";
String modelName = "";
/*查询条件*/
StringBuffer sbWhere = new StringBuffer(128);
sbWhere.append( " 1=1 ");
if(que_startdate.length()>0){
startTime = " and dt_submittime >= '" + que_startdate+" 00:00:00'";
}
if(que_enddate.length()>0){
endTime =" and dt_submittime <= '" + que_enddate+" 23:59:59'" ;
}
if(strModelname.length()>0){
modelName = " AND vc_flowcode = '"+ strModelname +"'";
}
if(strModelname1.length()>0){
modelName = " AND vc_flowcode = '"+ strModelname1 +"'";
//...
}


可以看出上述几个参数均没有经过过滤 就直接带入了SQL查询,造成了SQL注入
#3 漏洞测试
这里我们随机在互联网上选择案例,采用sqlmap直接测试,参数 modelname1
案例SQL注入一:

http://xxgk.weifang.gov.cn/xxgk/workflow//statistics/que_apply_sta.jsp?userid=0&modelname=1&modelname1=2


成功后如图所示

1.jpg


案例SQL注入二:

http://xxgk.weifang.gov.cn/xxgk/short_message/que_recemsg.jsp?que_keywords=1&loginid=1&boxtype=1&que_keywords1=1&que_startdate=1&que_enddate=1


成功后如图所示

2.jpg

漏洞证明:

#4 获取数据测试

3.jpg

修复方案:

过滤吧

版权声明:转载请注明来源 路人甲@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:20

确认时间:2014-05-19 17:32

厂商回复:

感谢关注

最新状态:

暂无