泛微ecology9 ofsLogin.jsp 信息泄露与前台任意用户登录漏洞分析
字数 1184 2025-08-10 22:27:01

泛微Ecology9 ofsLogin.jsp 信息泄露与前台任意用户登录漏洞分析

漏洞概述

泛微Ecology9系统中存在一个严重的安全漏洞,位于mobile/plugin/1/ofsLogin.jsp文件,该漏洞允许攻击者通过构造特定请求实现任意用户登录系统,无需合法凭证。

漏洞影响

  • 影响系统:泛微Ecology9
  • 影响文件:/mobile/plugin/1/ofsLogin.jsp
  • 漏洞类型:信息泄露+认证绕过
  • 风险等级:高危

漏洞分析

漏洞触发点

漏洞存在于ofsLogin.jsp文件的登录验证逻辑中,主要涉及以下参数:

  • syscode
  • timestamp
  • gopage
  • receiver
  • loginTokenFromThird

关键代码逻辑

  1. 参数接收

    String syscode = request.getParameter("syscode");
    String receiver = request.getParameter("receiver");
    String timestamp = request.getParameter("timestamp");
    String loginTokenFromThird = request.getParameter("loginTokenFromThird");
    String gopage = request.getParameter("gopage");
    
  2. AES加密生成loginTokenFromThird2

    String loginTokenFromThird2 = AESCoder.encrypt(receiver + timestamp, Prop.getPropValue("ofs.con", "ofs.key") + syscode);
    
  3. 登录验证逻辑

    if (!loginTokenFromThird.equals(loginTokenFromThird2)) {
        response.sendRedirect("/login/Login.jsp");
        return;
    }
    
  4. 用户查询逻辑

    • 首先查询ofs_sendinfo表获取hrmtransrule
    • 根据hrmtransrule值确定在HrmResource表中的查询字段(loginidid)
    • 使用receiver参数作为条件查询用户
  5. 会话创建

    • 获取用户ID后创建会话
    • 跳转到gopage参数指定的页面

漏洞利用条件

  1. HrmResource表中必须存在用户数据
  2. 能够构造有效的loginTokenFromThird参数

漏洞利用方法

利用步骤

  1. 确定目标用户

    • 默认系统管理员账号通常为sysadmin
    • 可通过其他信息泄露手段获取有效用户名
  2. 构造恶意请求

    /mobile/plugin/1/ofsLogin.jsp?syscode=invalid_syscode&timestamp=2&gopage=/wui/index.jsp&receiver=sysadmin&loginTokenFromThird=[计算出的token]
    
  3. 计算loginTokenFromThird

    • 使用receiver + timestamp作为第一个参数
    • 使用Prop.getPropValue("ofs.con", "ofs.key") + syscode作为第二个参数
    • 进行AES加密得到loginTokenFromThird2
    • loginTokenFromThird2作为loginTokenFromThird参数值

简化利用方式

由于syscode参数可控,可以设置一个不存在的syscode值,这样:

  1. hrmtransrule会被默认设置为"1"
  2. rule变量会被设置为"loginid"
  3. 直接使用receiver参数作为用户名进行查询

检测方法

使用xray检测工具:

./xray ws --poc poc-yaml-ecology-ofslogin-aul --url http://example.com

修复建议

  1. ofsLogin.jsp文件进行访问控制
  2. 修改登录验证逻辑,增加额外的验证机制
  3. 更新到官方最新补丁版本
  4. 监控/mobile/plugin/1/ofsLogin.jsp的异常访问

总结

该漏洞利用系统认证逻辑缺陷,通过构造特定参数绕过认证机制,实现任意用户登录。由于涉及系统核心认证功能,危害性极大,建议用户及时采取防护措施。

泛微Ecology9 ofsLogin.jsp 信息泄露与前台任意用户登录漏洞分析 漏洞概述 泛微Ecology9系统中存在一个严重的安全漏洞,位于 mobile/plugin/1/ofsLogin.jsp 文件,该漏洞允许攻击者通过构造特定请求实现任意用户登录系统,无需合法凭证。 漏洞影响 影响系统:泛微Ecology9 影响文件: /mobile/plugin/1/ofsLogin.jsp 漏洞类型:信息泄露+认证绕过 风险等级:高危 漏洞分析 漏洞触发点 漏洞存在于 ofsLogin.jsp 文件的登录验证逻辑中,主要涉及以下参数: syscode timestamp gopage receiver loginTokenFromThird 关键代码逻辑 参数接收 : AES加密生成loginTokenFromThird2 : 登录验证逻辑 : 用户查询逻辑 : 首先查询 ofs_sendinfo 表获取 hrmtransrule 值 根据 hrmtransrule 值确定在 HrmResource 表中的查询字段( loginid 或 id ) 使用 receiver 参数作为条件查询用户 会话创建 : 获取用户ID后创建会话 跳转到 gopage 参数指定的页面 漏洞利用条件 HrmResource 表中必须存在用户数据 能够构造有效的 loginTokenFromThird 参数 漏洞利用方法 利用步骤 确定目标用户 : 默认系统管理员账号通常为 sysadmin 可通过其他信息泄露手段获取有效用户名 构造恶意请求 : 计算loginTokenFromThird : 使用 receiver + timestamp 作为第一个参数 使用 Prop.getPropValue("ofs.con", "ofs.key") + syscode 作为第二个参数 进行AES加密得到 loginTokenFromThird2 将 loginTokenFromThird2 作为 loginTokenFromThird 参数值 简化利用方式 由于 syscode 参数可控,可以设置一个不存在的 syscode 值,这样: hrmtransrule 会被默认设置为"1" rule 变量会被设置为"loginid" 直接使用 receiver 参数作为用户名进行查询 检测方法 使用xray检测工具: 修复建议 对 ofsLogin.jsp 文件进行访问控制 修改登录验证逻辑,增加额外的验证机制 更新到官方最新补丁版本 监控 /mobile/plugin/1/ofsLogin.jsp 的异常访问 总结 该漏洞利用系统认证逻辑缺陷,通过构造特定参数绕过认证机制,实现任意用户登录。由于涉及系统核心认证功能,危害性极大,建议用户及时采取防护措施。