weblogic反序列化漏洞如何防护?
TOPIC SOURCE
冰蝎beta8内存马防查杀破解
说起 WebLogic 的反序列化漏洞,我还记得第一次在公司里被同事拉去现场排查,那种被黑客“玩”得心跳加速的感觉,真是又惊讶又刺激。后来我把这段“惊魂记”整理成了几条实战防护清单,想和大家一起分享,省得你们也踩到同样的坑。

漏洞背后的技术细节
简而言之,WebLogic 在读取远程对象时会走一条叫 FilteredObjectInputStream 的链路,它会检查对象的类名是否在黑名单里。如果攻击者巧妙地用 java.rmi.MarshalledObject 直接读取字节流,绕过这层过滤,就能把任意恶意对象塞进去,触发反序列化链。
我常用的防护手段
- 关闭不必要的协议端口(IIOP、T3),从根源杜绝远程对象注入。
- 升级 JDK 至 1.8 以上,并在 WebLogic 配置中强制使用
java.security.manager,让安全管理器拦截异常类加载。 - 在
setDomainEnv.sh中加入-Dweblogic.security.allowSerializedObjects=false,彻底禁用序列化对象。 - 使用 WebLogic 自带的安全补丁(如 12.2.1.4+),官方已经把常见的 gadget 列表加入黑名单。
- 部署 WAF 或防火墙规则,拦截包含
java.rmi.MarshalledObject、javax.naming.InitialContext等高危类的请求体。
实战配置示例
# 在 setDomainEnv.sh 中加入以下行
JAVA_OPTIONS="${JAVA_OPTIONS} -Dweblogic.security.allowSerializedObjects=false"
# 禁用 IIOP/T3 端口(假设默认端口 7001)
nohup ./startWebLogic.sh &
netstat -tuln | grep 7001 && echo "端口仍在监听,请检查配置!"
“安全不是一次性的配置,而是持续的监控与更新。” —— 我在一次红队演练后深有体会。
把这些措施落地后,我再也没有在日志里看到类似的异常堆栈。防御不是把门锁死,而是把钥匙藏得更深。你也可以从最易实现的端口关闭开始,逐步加固,别等到被攻击后才后悔。

参与讨论
这篇把关键信息写得挺实操的,先把不必要端口关掉真的能省很多麻烦。
java.security.manager 现在要小心兼容性,升级前先在测试环境跑一遍再上线,别直接线上改配置。