某微前台登录绕过+后台组合拳RCE
字数 1974 2025-11-21 23:31:17

某微前台登录绕过与后台RCE漏洞分析教学文档

前言

本文档详细分析某微系统存在的两个关键漏洞:前台登录绕过和后台远程代码执行(RCE)。这两个漏洞组合使用可以实现从权限绕过到完全控制系统的完整攻击链。

一、前台登录绕过漏洞

漏洞复现步骤

第一步:获取security.key

  1. 向系统发送一个DWR请求,目标是获取security.key
  2. 请求路径为/dwr/call/plaincall/xxx形式
  3. 系统通过反射调用LoadTemplateProp方法读取配置文件
  4. 从配置文件中获取security.key

第二步:加密key获取sessionKey

  1. 使用获取到的security.key进行加密处理
  2. 访问/mobilemode/mobile/server.jsp
  3. 反射调用com.api.mobilemode.web.mobile.service.MobileEntranceAction
  4. 通过@ActionMapping注解调用getAppMeta方法
  5. 最终调用getTokenKey()方法返回sessionKey

第三步:获取有效会话

  1. 调用ImgFileDownload这个servlet
  2. 使用上一步获取的sessionKey替换请求中的mToken
  3. 获取ecology_JSessionid
  4. ecology_JSessionid替换浏览器自动获取的会话ID
  5. 刷新页面即可进入系统后台

漏洞分析

DWR接口处理机制

  • 所有DWR接口请求都由DWRServlet类的doPost方法处理
  • 调用handle方法处理请求
  • urlMapping包含以下值:
    • call/plaincall
    • 其他DWR相关路径
  • 匹配到call/plaincall时调用对应的handle方法

security.key获取过程

  1. 调用execute方法前security.key不存在
  2. 通过反射调用loadTemplateProp方法
  3. 最终通过反射Filter获取配置文件内容
  4. 配置文件路径和内容未在文中明确给出,但包含security.key

会话密钥获取机制

  • 利用mobilemode/mobile下的server.jsp
  • 反射调用MobileEntranceAction类(继承自BaseMobileAction
  • 通过@ActionMapping注解调用getAppMeta方法
  • 最终调用getTokenKey()方法返回sessionkey

二、后台RCE漏洞

漏洞复现步骤

第一步:添加恶意方法

  1. 访问outter_encryptclassOperation.jsp
  2. 设置operation=add
  3. 传递参数encryptname=org.mvel2.sh.ShellSession
  4. 将恶意类和方法插入数据库

第二步:获取添加方法的ID

  1. 查询刚刚添加的encryptclass记录
  2. 通过接口获取该记录的ID
  3. 记录ID将用于后续执行

第三步:执行Java代码写入WebShell

  1. 设置operation=test
  2. 使用获取的ID作为参数
  3. 系统会反射调用之前添加的类和方法
  4. 注意:直接传递的payload会被转义,需要绕过RASP防护
  5. 最终使用byte数组方式写入文件

漏洞分析

添加恶意方法过程

  1. operation参数为add时进入添加逻辑
  2. 获取encryptname参数(恶意类名)
  3. isDialog参数设为0,使datatype不为1
  4. 进入任意反射调用分支
  5. org.mvel2.sh.ShellSession类及其exec方法插入数据库

执行恶意代码过程

  1. operation参数为test时进入执行逻辑
  2. 根据ID查询之前添加的encryptclass记录
  3. OutterAction类获取ID
  4. datatype不为1时进入else分支
  5. 通过反射调用添加的类和方法
  6. 需要绕过RASP防护(使用byte数组方式写入文件)

三、漏洞组合利用

  1. 首先利用登录绕过漏洞获取后台访问权限
  2. 然后利用后台RCE漏洞执行任意代码
  3. 最终实现完全控制系统

四、防御建议

  1. 限制DWR接口的访问权限
  2. 对反射调用进行严格检查和过滤
  3. 修复security.key的泄露问题
  4. outter_encryptclassOperation.jsp进行权限校验
  5. 实施RASP防护防止恶意代码执行
  6. 更新系统到最新版本

五、总结

本文详细分析了某微系统的两个高危漏洞,展示了从权限绕过到远程代码执行的完整攻击链。这两个漏洞的组合利用具有极高的危险性,可导致系统完全被控制。建议用户及时更新系统并实施相应的防护措施。

某微前台登录绕过与后台RCE漏洞分析教学文档 前言 本文档详细分析某微系统存在的两个关键漏洞:前台登录绕过和后台远程代码执行(RCE)。这两个漏洞组合使用可以实现从权限绕过到完全控制系统的完整攻击链。 一、前台登录绕过漏洞 漏洞复现步骤 第一步:获取security.key 向系统发送一个DWR请求,目标是获取 security.key 请求路径为 /dwr/call/plaincall/xxx 形式 系统通过反射调用 LoadTemplateProp 方法读取配置文件 从配置文件中获取 security.key 值 第二步:加密key获取sessionKey 使用获取到的 security.key 进行加密处理 访问 /mobilemode/mobile/server.jsp 反射调用 com.api.mobilemode.web.mobile.service.MobileEntranceAction 类 通过 @ActionMapping 注解调用 getAppMeta 方法 最终调用 getTokenKey() 方法返回 sessionKey 第三步:获取有效会话 调用 ImgFileDownload 这个servlet 使用上一步获取的 sessionKey 替换请求中的 mToken 获取 ecology_JSessionid 用 ecology_JSessionid 替换浏览器自动获取的会话ID 刷新页面即可进入系统后台 漏洞分析 DWR接口处理机制 所有DWR接口请求都由 DWRServlet 类的 doPost 方法处理 调用 handle 方法处理请求 urlMapping 包含以下值: call/plaincall 其他DWR相关路径 匹配到 call/plaincall 时调用对应的 handle 方法 security.key获取过程 调用 execute 方法前 security.key 不存在 通过反射调用 loadTemplateProp 方法 最终通过反射Filter获取配置文件内容 配置文件路径和内容未在文中明确给出,但包含 security.key 值 会话密钥获取机制 利用 mobilemode/mobile 下的 server.jsp 反射调用 MobileEntranceAction 类(继承自 BaseMobileAction ) 通过 @ActionMapping 注解调用 getAppMeta 方法 最终调用 getTokenKey() 方法返回 sessionkey 二、后台RCE漏洞 漏洞复现步骤 第一步:添加恶意方法 访问 outter_encryptclassOperation.jsp 设置 operation=add 传递参数 encryptname=org.mvel2.sh.ShellSession 将恶意类和方法插入数据库 第二步:获取添加方法的ID 查询刚刚添加的 encryptclass 记录 通过接口获取该记录的ID 记录ID将用于后续执行 第三步:执行Java代码写入WebShell 设置 operation=test 使用获取的ID作为参数 系统会反射调用之前添加的类和方法 注意:直接传递的payload会被转义,需要绕过RASP防护 最终使用byte数组方式写入文件 漏洞分析 添加恶意方法过程 operation 参数为 add 时进入添加逻辑 获取 encryptname 参数(恶意类名) isDialog 参数设为0,使 datatype 不为1 进入任意反射调用分支 将 org.mvel2.sh.ShellSession 类及其 exec 方法插入数据库 执行恶意代码过程 operation 参数为 test 时进入执行逻辑 根据ID查询之前添加的 encryptclass 记录 从 OutterAction 类获取ID datatype 不为1时进入else分支 通过反射调用添加的类和方法 需要绕过RASP防护(使用byte数组方式写入文件) 三、漏洞组合利用 首先利用登录绕过漏洞获取后台访问权限 然后利用后台RCE漏洞执行任意代码 最终实现完全控制系统 四、防御建议 限制DWR接口的访问权限 对反射调用进行严格检查和过滤 修复 security.key 的泄露问题 对 outter_encryptclassOperation.jsp 进行权限校验 实施RASP防护防止恶意代码执行 更新系统到最新版本 五、总结 本文详细分析了某微系统的两个高危漏洞,展示了从权限绕过到远程代码执行的完整攻击链。这两个漏洞的组合利用具有极高的危险性,可导致系统完全被控制。建议用户及时更新系统并实施相应的防护措施。