某运营管理平台登录绕过及文件上传漏洞分析
字数 1139 2025-08-18 17:33:44

某运营管理平台登录绕过及文件上传漏洞分析

漏洞概述

本文详细分析某运营管理平台存在的两个高危漏洞:

  1. 登录绕过漏洞 - 通过特定参数构造可绕过身份验证直接登录系统
  2. 文件上传漏洞 - 结合中间件特性和路径穿越实现任意文件上传

Filter分析

系统使用controllerFilter处理多个路由,其doFilter方法逻辑如下:

  1. 第一层判断:

    • 检查URL是否包含/dwr/或以.js结尾
    • 不满足上述条件则进入下一步
  2. verificationURL方法验证用户登录状态:

    • 未登录用户重定向到/login/abnormal_exit.jsp
    • 返回false阻止进入后续逻辑
  3. 第二层判断:

    • 检查URL是否包含/ProxyServletUtil/servlet/pageProcessServlet
    • 不满足则进入下一步
  4. 第三层判断:

    • URL不以.xf.xml结尾
    • 如果以.jsp结尾,则检查是否在白名单中(isNotValidatePage方法)
    • 白名单外的jsp文件访问被阻止

登录绕过漏洞1

漏洞位置

LinkUtil.getLinkMeta方法处理.ln结尾的URL

利用原理

  1. 系统处理.ln请求时:

    • 获取SYS_LINK参数
    • 进行hex解码和decrypt解密
    • 解密后格式应为:url||时间||用户
  2. 时间格式:yyyy-MM-dd

  3. 构造payload示例:

    /main/main.jsp||2025-01-01||admin
    
  4. 利用步骤:

    • 对payload进行加密(EncrypUtil.encrypt)
    • 转换为hex(BaseFunc.bytesToHexString)
    • 访问URL:/xxx.ln?SYS_LINK=hex数据

漏洞代码

// LinkUtil.getLinkMeta方法
String decrypted = EncrypUtil.decrypt(BaseFunc.hexStringToBytes(SYS_LINK));
String[] parts = decrypted.split("\\|\\|");
String url = parts[0];
String time = parts[1];
String user = parts[2];

// 登录逻辑
loginByUserName(user, request);

文件上传漏洞

漏洞位置

/iweboffice/OfficeServer.jsp使用了存在漏洞的金格组件(DBstep.jar)

利用限制

  1. 直接访问会被Filter拦截
  2. 需要绕过jsp文件访问限制

绕过方法

利用Tomcat特性:

  • 使用.jsp;.js%70形式绕过.jsp后缀检测
  • Tomcat会自动处理这些特殊字符

利用步骤

  1. 上传jsp文件到存在的目录
  2. 使用白名单中的jsp文件名
  3. 通过特殊格式访问上传的文件

登录绕过漏洞2

漏洞位置

/loginService.fe路由对应的fe.ext.erp.FeErpLoginServlet

利用方法

当参数op=D时,会设置userName=admin并自动登录:

if ("D".equals(op)) {
    String userName = "admin";
    loginByCas(userName, request);
}

参考链接

  1. 相关技术分析文章
  2. 漏洞库记录

防护建议

  1. 加强Filter对所有请求的校验
  2. 移除或修复LinkUtil中的不安全逻辑
  3. 更新存在漏洞的金格组件
  4. 对.fe接口添加权限验证
  5. 实施严格的输入验证和输出编码
某运营管理平台登录绕过及文件上传漏洞分析 漏洞概述 本文详细分析某运营管理平台存在的两个高危漏洞: 登录绕过漏洞 - 通过特定参数构造可绕过身份验证直接登录系统 文件上传漏洞 - 结合中间件特性和路径穿越实现任意文件上传 Filter分析 系统使用controllerFilter处理多个路由,其doFilter方法逻辑如下: 第一层判断: 检查URL是否包含 /dwr/ 或以 .js 结尾 不满足上述条件则进入下一步 verificationURL方法验证用户登录状态: 未登录用户重定向到 /login/abnormal_exit.jsp 返回false阻止进入后续逻辑 第二层判断: 检查URL是否包含 /ProxyServletUtil 和 /servlet/pageProcessServlet 不满足则进入下一步 第三层判断: URL不以 .xf 和 .xml 结尾 如果以 .jsp 结尾,则检查是否在白名单中( isNotValidatePage 方法) 白名单外的jsp文件访问被阻止 登录绕过漏洞1 漏洞位置 LinkUtil.getLinkMeta 方法处理 .ln 结尾的URL 利用原理 系统处理 .ln 请求时: 获取 SYS_LINK 参数 进行hex解码和decrypt解密 解密后格式应为: url||时间||用户 时间格式: yyyy-MM-dd 构造payload示例: 利用步骤: 对payload进行加密(EncrypUtil.encrypt) 转换为hex(BaseFunc.bytesToHexString) 访问URL: /xxx.ln?SYS_LINK=hex数据 漏洞代码 文件上传漏洞 漏洞位置 /iweboffice/OfficeServer.jsp 使用了存在漏洞的金格组件(DBstep.jar) 利用限制 直接访问会被Filter拦截 需要绕过jsp文件访问限制 绕过方法 利用Tomcat特性: 使用 .jsp; 或 .js%70 形式绕过 .jsp 后缀检测 Tomcat会自动处理这些特殊字符 利用步骤 上传jsp文件到存在的目录 使用白名单中的jsp文件名 通过特殊格式访问上传的文件 登录绕过漏洞2 漏洞位置 /loginService.fe 路由对应的 fe.ext.erp.FeErpLoginServlet 利用方法 当参数 op=D 时,会设置 userName=admin 并自动登录: 参考链接 相关技术分析文章 漏洞库记录 防护建议 加强Filter对所有请求的校验 移除或修复LinkUtil中的不安全逻辑 更新存在漏洞的金格组件 对.fe接口添加权限验证 实施严格的输入验证和输出编码