CVE-2015-7450 这个漏洞,算是 WebSphere 反序列化攻击里比较经典的一个。WebSphere 本身是 IBM 的企业级 Java EE 容器,银行、电信这些行业用得很多,通常部署在内网核心区域。漏洞出在它的 SOAP 通信接口上——攻击者向 8880 端口发一个精心构造的 XML 报文,里面夹带 Base64 编码的恶意序列化数据,就能让服务器执行任意命令。
受影响的版本主要集中在 7.0 和 8.5。如果目标实例以内网高权限运行,打穿之后基本就拿下了整个系统的控制权,这也是它危害大的原因。
要理解漏洞,得先过一遍 Java 反序列化机制。序列化就是把对象变成字节流,方便传输或存储;反序列化再把字节流恢复成对象。WebSphere 在 JMX 通信中用到 SOAP,收到请求后会反序列化 XML 里的 Base64 数据。关键问题就出在这里——反序列化过程没有做好安全检查,导致攻击者可以利用 Apache Commons Collections 里的 InvokerTransformer 类构造调用链,最终触发 Runtime.exec() 执行系统命令。这条攻击链大致是这样的:
恶意序列化数据 → InvokerTransformer 链 → Method.invoke() → Runtime.exec()
InvokerTransformer 本来只是用来做对象转换的,但设计上没限制输入,结果被人玩坏了。
在测试环境复现时,可以用 Docker 快速搭建。选一个受影响的 WebSphere 镜像(7.0 或 8.5),启动后确保 SOAP 服务在 8880 端口监听,然后发送构造好的 SOAP 请求就能验证。具体的恶意 payload 有现成工具生成,这里就不展开了。

