东方通/ejbserver/ejb接口反序列化分析
字数 999 2025-11-19 12:07:15
东方通TongWeb EJB接口反序列化漏洞分析教学文档
漏洞概述
本漏洞存在于东方通应用服务器TongWeb的EJB接口组件中,涉及Java反序列化安全漏洞。攻击者可通过构造恶意序列化数据在目标服务器上实现远程代码执行。
受影响版本
- TongWeb 7.0.0.0 至 7.0.4.9_M9
- TongWeb 6.1.7.0 至 6.1.8.13
技术原理分析
反序列化入口点
漏洞核心入口位于EJB请求处理机制中。当TongWeb服务器接收EJB请求时,会对传输的数据进行反序列化操作,此过程未进行充分的安全验证。
关键代码分析
public class EJBRequest implements ClusterableRequest {
// 反序列化时执行readExternal方法
public void readExternal(ObjectInput in) {
in.readUTF(); // 读取UTF字符串
in.readShort(); // 读取short类型数据
}
// 序列化时需对应设置
public void writeExternal(ObjectOutput out) {
out.writeUTF(data);
out.writeShort(value);
}
}
关键要点:
- 序列化与反序列化必须保持严格的格式对应
- 使用
writeExternal进行序列化包装时,反序列化需要通过readExternal读取 - 必须使用
oout.writeByte(0)进行复位操作,否则会导致数据偏移错误
黑名单机制绕过
系统存在已知的CC3(Commons Collections 3)黑名单防护,但攻击者可通过以下方式绕过:
使用替代链
- XBean + BeanFactory + EL表达式组合利用链
- 该组合不在默认黑名单中,可成功执行反序列化攻击
攻击验证方式
DNSURL探测
在发起实际攻击前,可通过DNS查询验证目标是否存在反序列化漏洞:
- 构造包含特定DNS查询的序列化数据
- 观察是否有DNS查询记录生成
内存马注入技术
EL表达式内存马
通过反序列化漏洞可注入基于EL表达式的内存马:
生成流程:
- 构造恶意的序列化数据
- 利用EJB接口反序列化执行点
- 部署内存驻留的Webshell
技术特点:
- 无文件落地,隐蔽性强
- 基于EL表达式执行系统命令
- 可绕过传统文件检测机制
漏洞利用数据包结构
[EJB协议头]
[恶意序列化数据]
[填充数据确保格式正确]
防护建议
临时缓解措施
- 限制访问EJB端口的来源IP
- 升级到不受影响的TongWeb版本
- 部署网络层防护设备检测异常序列化数据
根本解决方案
- 实施严格的反序列化白名单机制
- 更新所有已知危险类的黑名单
- 对EJB接口进行输入验证和过滤
参考资源
- Java反序列化利用链项目:https://github.com/unam4/java_gadget_flow
- 相关技术分析文章
附录
附件中包含完整的利用代码示例(output.zip),供安全研究人员进行防护方案测试。
注:本文档仅用于安全研究和防护目的,请勿用于非法用途。