安科瑞智能环保云平台 /MainMonitor/GetEnterpriseInfoMapByDate/GetDates SQL 注入漏洞


漏洞简介

安科瑞智能环保云平台是一款用于环境监测和管理的云平台。该漏洞存在于/MainMonitor/GetEnterpriseInfoMapByDate/GetDates接口中,攻击者可以通过构造恶意的SQL语句注入到接口参数中,进而获取数据库信息或对数据库进行未授权操作,可能导致敏感信息泄露或数据篡改。

影响版本

fofa语法

body="myCss/phone.css" || body="/signInIcon/iconfont.css" || (body="环保用电监管云平台" && body="Acrel") || body="var ecloginname = $(\"#LoginName\").val();" || title="安科瑞环保用电"

漏洞分析

先看下Global.asax的代码引用

<%@ Application Codebehind="Global.asax.cs" Inherits="JuCheap.Web.MvcApplication" Language="C#" %>

在bin目录下找到JuCheap.Web.dll文件,反编译后找到MvcApplication相关实现

一个常规的ASP.NET`` MVC框架的架构,针对MVC架构,先看路由设置方式,打开RouteConfig看下路由定义

访问模式为{controller}/{action}/{id}

根据漏洞通告,本次漏洞的路径为/MainMonitor/GetEnterpriseInfoMapByDate/GetDates 那么就可以先在controller下找到MainMonitorController,然后在其中找到GetEnterpriseInfoMapByDate的实现方式

可以看到在方法顶部有IgnoreRightFilter Attribute(特性),它的作用是告诉权限系统:“忽略权限检查”,因此这个接口是可以未授权访问。

我们跟进Service层的GetEnterpriseInfoMapByDate方法看下,对传入的参数是如何处理的

右键在此方法上选择 转到-派生符号 或者 CTRL+F12 进入

到这里就可以看到造成SQL注入漏洞原因:参数userid、tradename被直接拼接进了SQL语句中执行,但是userid在action处的定义为this.User.Identity.GetLoginUserId();获取不受用户可控,我们可控的只有tradename参数

    if (string.op_Inequality(tradename, "") && tradename != null)
      SQL = tradename.Contains("机关单位") || tradename.Contains("学校") ? SQL + "  and t.tradename like '%机关单位%' or  t.tradename like '%学校%' " : (tradename.Contains("一般") || tradename.Contains("普通") ? SQL + "  and t.tradename like '%普通%' " : $"{SQL}  and t.tradename like '%{tradename}%' ");

这段嵌套的三元运算符(条件 ? 结果A : 结果B)代码的整体逻辑流程如下:

  1. 前置检查:首先确认 tradename 有效(非空且非 null)。
  2. 特定逻辑 A:如果 tradename 是“机关单位”或“学校”,SQL 语句追加针对这两个词的 OR 查询。
  3. 特定逻辑 B:否则,如果 tradename 是“一般”或“普通”,SQL 语句强制追加针对“普通”的查询。
  4. 默认逻辑:否则,直接使用 tradename 的值进行模糊匹配(LIKE %value%)。

那我们只需要传参时使其不等于“机关单位”或“学校”、“一般”或“普通”这些即可进入like语句的模糊匹配逻辑进行SQL注入测试。

漏洞复现

POST /MainMonitor/GetEnterpriseInfoMapByDate/GetDates HTTP/1.1
Host: acreldny.mrxn.net
Content-Type: application/x-www-form-urlencoded

userid=admin&state=1&time=2025-02-02&tradename=SQLI_POC

成功利用报错注入,在响应回显数据库用户信息


手机扫码阅读

金和OA BudgetDecomposeEdit.aspx SQL注入漏洞

金和OA AjaxForSetDecompose.ashx SQL注入漏洞

评 论