泛微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文件的登录验证逻辑中,主要涉及以下参数:
syscodetimestampgopagereceiverloginTokenFromThird
关键代码逻辑
-
参数接收:
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"); -
AES加密生成loginTokenFromThird2:
String loginTokenFromThird2 = AESCoder.encrypt(receiver + timestamp, Prop.getPropValue("ofs.con", "ofs.key") + syscode); -
登录验证逻辑:
if (!loginTokenFromThird.equals(loginTokenFromThird2)) { response.sendRedirect("/login/Login.jsp"); return; } -
用户查询逻辑:
- 首先查询
ofs_sendinfo表获取hrmtransrule值 - 根据
hrmtransrule值确定在HrmResource表中的查询字段(loginid或id) - 使用
receiver参数作为条件查询用户
- 首先查询
-
会话创建:
- 获取用户ID后创建会话
- 跳转到
gopage参数指定的页面
漏洞利用条件
HrmResource表中必须存在用户数据- 能够构造有效的
loginTokenFromThird参数
漏洞利用方法
利用步骤
-
确定目标用户:
- 默认系统管理员账号通常为
sysadmin - 可通过其他信息泄露手段获取有效用户名
- 默认系统管理员账号通常为
-
构造恶意请求:
/mobile/plugin/1/ofsLogin.jsp?syscode=invalid_syscode×tamp=2&gopage=/wui/index.jsp&receiver=sysadmin&loginTokenFromThird=[计算出的token] -
计算loginTokenFromThird:
- 使用
receiver + timestamp作为第一个参数 - 使用
Prop.getPropValue("ofs.con", "ofs.key") + syscode作为第二个参数 - 进行AES加密得到
loginTokenFromThird2 - 将
loginTokenFromThird2作为loginTokenFromThird参数值
- 使用
简化利用方式
由于syscode参数可控,可以设置一个不存在的syscode值,这样:
hrmtransrule会被默认设置为"1"rule变量会被设置为"loginid"- 直接使用
receiver参数作为用户名进行查询
检测方法
使用xray检测工具:
./xray ws --poc poc-yaml-ecology-ofslogin-aul --url http://example.com
修复建议
- 对
ofsLogin.jsp文件进行访问控制 - 修改登录验证逻辑,增加额外的验证机制
- 更新到官方最新补丁版本
- 监控
/mobile/plugin/1/ofsLogin.jsp的异常访问
总结
该漏洞利用系统认证逻辑缺陷,通过构造特定参数绕过认证机制,实现任意用户登录。由于涉及系统核心认证功能,危害性极大,建议用户及时采取防护措施。