友加畅捷管理系统 Sysconfig/GetZTList 未授权访问致信息泄露漏洞


漏洞简介

友加畅捷管理系统是一款专为小微商贸流通企业设计的财务业务一体化管理软件,涵盖进销存、财务、分销及移动管理等多个模块,旨在帮助企业实现高效的业务运营和财务核算。

该系统的 Sysconfig/GetZTList 接口存在未授权访问漏洞,攻击者无需任何认证即可直接访问该接口,从而获取敏感信息。此漏洞可能导致企业内部数据泄露,包括但不限于用户列表、配置信息等,对企业的运营安全和数据隐私构成严重威胁。

影响版本

13.7004.1053.1000

fofa语法

icon_hash="2049187099" || fid="zzt8lL7SUwIIZQXZY6rTSw=="

漏洞分析

在 SysconfigController 找到 GetZTList 方法处理逻辑如下

表明需要一个pwd参数,即可返回 DBOperation.GetZTList 的内容,跟进看下它的实现逻辑

  1. 框架行为: 在 ASP.NET (或 ASP.NET Core) MVC/Web API 框架中,当一个 Action 方法的参数是引用类型(如 string)且在 HTTP 请求中未提供该参数时,模型绑定器会为该参数赋其默认值。对于 string 类型,其默认值为 null。
  2. 代码执行路径: 因此,当攻击者请求 GetZTList 接口而不带 pwd 参数时,GetZTList(string pwd) 方法中的 pwd 变量值为 null。
  3. 条件判断绕过: 代码会执行 if (string.op_Inequality(pwd, "-1")),这等同于 if (pwd != "-1")。由于 pwd 是 null,null != "-1" 的结果为 true。因此,程序会进入 if 代码块,而不是 else 分支。
  4. 过滤逻辑缺陷: 在 if 代码块内部,程序会执行 Where 条件进行过滤: m => string.op_Equality(m.ZTPwd, "") || m.ZTPwd == null || string.op_Equality(m.ZTPwd, jmPwd)
    • 由于 pwd 为 null,jmPwd = EncDecString.EncryptPWD(null) 的结果很可能是 null 或空字符串 "" (取决于 EncryptPWD 方法的实现)。
    • 情况一:jmPwd 为 null。 过滤条件变为 m.ZTPwd == "" || m.ZTPwd == null || m.ZTPwd == null,简化为 m.ZTPwd == "" || m.ZTPwd == null。
    • 情况二:jmPwd 为 ""。 过滤条件变为 m.ZTPwd == "" || m.ZTPwd == null || m.ZTPwd == "",同样简化为 m.ZTPwd == "" || m.ZTPwd == null。
  5. 最终结果: 无论 EncryptPWD(null) 的具体返回值是什么,最终的过滤逻辑都会返回所有 ZTPwd 字段为空字符串或 null 的账套列表。这实质上是列出了系统中所有未设置密码的账套。

  1. 代码的业务逻辑是通过 pwd 参数来验证用户身份,并返回其有权访问的账套列表。
  2. 代码中存在一个关键的条件判断:if (string.op_Inequality(pwd, "-1")),这等同于 if (pwd != "-1")。
  3. 正常逻辑分支 (pwd 不等于 "-1"): 当 pwd 不为 "-1" 时,程序会执行 if 代码块。此代码块会将传入的 pwd 参数进行加密(EncDecString.EncryptPWD(pwd)),然后与配置文件中每个账套的 ZTPwd 字段进行比对。只有密码为空、null 或匹配成功的账套才会被返回。这是预期的、受保护的业务逻辑。
  4. 漏洞逻辑分支 (pwd 等于 "-1"): 当 pwd 参数的值正好为字符串 "-1" 时,程序会跳过 if 代码块,执行 else if 代码块。在此分支中,代码会遍历 zts(即从配置文件 sysconfig_zts 中加载的所有账套列表),并不做任何密码校验,直接将所有账套的详细信息添加到 ztList 中并返回。

再看前端 js 里有关此路由的调用如下,pwd参数可有可无

或者是 pwd=-1

漏洞复现

GET /Sysconfig/GetZTList HTTP/1.1
Host: youjiasoft.mrxn.net

响应包含数据库连接信息、应用安装物理路径等敏感信息。


手机扫码阅读

金和OA ReportParaList.aspx SQL注入漏洞

金和OA BITypeEdit.aspx SQL注入漏洞

评 论