东胜物流 /MvcShipping/MsCodeAll/GetLanesList SQL 注入漏洞


漏洞简介

东胜物流软件是青岛东胜伟业软件有限公司一款集订单管理、仓库管理、运输管理等多种功能于一体的物流管理软件。东胜物流信息管理系统 /MvcShipping/MsCodeAll/GetLanesList 接口存在SQL注入漏洞,未经身份验证的远程攻击者除了可以利用SQL注入漏洞获取数据库中的信息(例如,管理员后台密码、站点的用户个人信息)之外,甚至在高权限的情况可向服务器中写入木马,进一步获取服务器系统权限。

影响版本

fofa语法

(body="FeeCodes/CompanysAdapter.aspx" || body="dhtmlxcombo_whp.js" || body="dongshengsoft" || body="theme/dhtmlxcombo.css") && body="东胜"

漏洞分析

根据.NET MVC特性找到MsCodeAllController下的GetLanesList方法,看下它的实现

public ContentResult GetLanesList(string condition, string sort)
{
  List<Code_lanesmb> lanesList = MsCodeAllDAL.GetLanesList(condition, sort);
  string str = JsonConvert.Serialize(new
  {
    Success = true,
    Message = "查询成功",
    totalCount = lanesList.Count,
    data = Enumerable.ToList<Code_lanesmb>((IEnumerable<Code_lanesmb>) lanesList)
  });
  return new ContentResult() { Content = str };
}

参数condition、sort被带入MsCodeAllDAL.GetLanesList,跟进看下

public static List<Code_lanesmb> GetLanesList(string strCondition, string companyid, string sort = null)
{
  StringBuilder strSql = new StringBuilder();
  strSql.Append(" SELECT ");
  strSql.Append(" GID,LANEID,LANE,LANEEN,EDICODE,OP,DOC,CUSTSERVICE");
  strSql.Append(" from code_lanes ");
  if (!string.IsNullOrEmpty(strCondition))
    strSql.Append(" WHERE " + strCondition);
  string str = DatasetSort.Getsortstring(sort);
  if (!string.IsNullOrEmpty(str))
    strSql.Append(" order by " + str);
  else
    strSql.Append(" order by LANEID");
  return MsCodeAllDAL.SetLanesData(strSql);
}

至此SQL注入漏洞成因就非常明显了:

  • 在 MsCodeAllDAL.GetLanesList 方法中,程序通过字符串拼接的方式构建 SQL 查询语句。
  • 参数 strCondition 直接来源于控制器 MsCodeAllController.GetLanesList 的输入参数 condition。该参数未经过任何参数化处理、类型转换或白名单过滤,直接拼接到 SQL 字符串中。
  • 虽然使用了 DatasetSort.Getsortstring 转换,但如果该工具类未进行严格的字段白名单过滤,攻击者可以通过 sort 参数注入 SQL 片段(如基于报错的注入或时间盲注)。
  • 使用了 DatabaseFactory.CreateDatabase().ExecuteReader 执行原始 SQL 字符串。

漏洞复现

GET /MvcShipping/MsCodeAll/GetLanesList?condition=SQLI_POC&sort=LANEID HTTP/1.1
Host: dongsheng.mrxn.net

通过联合注入,成功在响应回显当前数据库版本信息


手机扫码阅读

天锐绿盾审批系统 /taskCommon/endCallback fastjson反序列化漏洞

金和OA QuickMatch.aspx XXE漏洞

评 论